You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

IRCParserTest.java 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  1. /*
  2. * Copyright (c) 2006-2008 Chris Smith, Shane Mc Cormack, Gregory Holmes
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy
  5. * of this software and associated documentation files (the "Software"), to deal
  6. * in the Software without restriction, including without limitation the rights
  7. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. * copies of the Software, and to permit persons to whom the Software is
  9. * furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  20. * SOFTWARE.
  21. */
  22. package com.dmdirc.parser;
  23. import com.dmdirc.parser.callbacks.CallbackNotFoundException;
  24. import com.dmdirc.parser.callbacks.interfaces.IAwayState;
  25. import com.dmdirc.parser.callbacks.interfaces.IChannelKick;
  26. import com.dmdirc.parser.callbacks.interfaces.IChannelSelfJoin;
  27. import com.dmdirc.parser.callbacks.interfaces.INoticeAuth;
  28. import com.dmdirc.parser.callbacks.interfaces.INumeric;
  29. import com.dmdirc.parser.callbacks.interfaces.IPost005;
  30. import com.dmdirc.parser.callbacks.interfaces.IPrivateAction;
  31. import com.dmdirc.parser.callbacks.interfaces.IPrivateCTCP;
  32. import com.dmdirc.parser.callbacks.interfaces.IPrivateMessage;
  33. import com.dmdirc.parser.callbacks.interfaces.IServerError;
  34. import java.util.Arrays;
  35. import java.util.List;
  36. import javax.net.ssl.TrustManager;
  37. import org.junit.Test;
  38. import static org.junit.Assert.*;
  39. public class IRCParserTest extends junit.framework.TestCase {
  40. @Test
  41. public void testIssue042() {
  42. boolean res = false;
  43. try {
  44. final IRCParser myParser = new IRCParser();
  45. myParser.getCallbackManager().addCallback("non-existant",new IAwayState() {
  46. public void onAwayState(IRCParser tParser, boolean currentState,
  47. String reason) {
  48. throw new UnsupportedOperationException("Not supported yet.");
  49. }
  50. });
  51. } catch (CallbackNotFoundException ex) {
  52. res = true;
  53. }
  54. assertTrue("addCallback() should throw exception for non-existant callbacks", res);
  55. }
  56. @Test
  57. public void testCaseConversion() {
  58. final IRCParser asciiParser = new IRCParser();
  59. asciiParser.updateCharArrays((byte) 0);
  60. final IRCParser rfcParser = new IRCParser();
  61. rfcParser.updateCharArrays((byte) 4);
  62. final IRCParser strictParser = new IRCParser();
  63. strictParser.updateCharArrays((byte) 3);
  64. final String[][] testcases = {
  65. {"12345", "12345", "12345", "12345"},
  66. {"HELLO", "hello", "hello", "hello"},
  67. {"^[[MOO]]^", "^[[moo]]^", "~{{moo}}~", "^{{moo}}^"},
  68. {"«—»", "«—»", "«—»", "«—»"}
  69. };
  70. for (String[] testcase : testcases) {
  71. final String asciiL = asciiParser.toLowerCase(testcase[0]);
  72. final String rfcL = rfcParser.toLowerCase(testcase[0]);
  73. final String strictL = strictParser.toLowerCase(testcase[0]);
  74. final String asciiU = asciiParser.toUpperCase(testcase[1]);
  75. final String rfcU = rfcParser.toUpperCase(testcase[2]);
  76. final String strictU = strictParser.toUpperCase(testcase[3]);
  77. assertEquals(testcase[1], asciiL);
  78. assertEquals(testcase[2], rfcL);
  79. assertEquals(testcase[3], strictL);
  80. assertTrue(asciiParser.equalsIgnoreCase(testcase[0], testcase[1]));
  81. assertTrue(rfcParser.equalsIgnoreCase(testcase[0], testcase[2]));
  82. assertTrue(strictParser.equalsIgnoreCase(testcase[0], testcase[3]));
  83. assertEquals(testcase[0], asciiU);
  84. assertEquals(testcase[0], rfcU);
  85. assertEquals(testcase[0], strictU);
  86. }
  87. }
  88. @Test
  89. public void testTokeniser() {
  90. final IRCParser myParser = new IRCParser();
  91. final String line1 = "a b c d e";
  92. final String line2 = "a b c :d e";
  93. final String line3 = ":a b:c :d e";
  94. final String[] res1 = myParser.tokeniseLine(line1);
  95. final String[] res2 = myParser.tokeniseLine(line2);
  96. final String[] res3 = myParser.tokeniseLine(line3);
  97. assertTrue(Arrays.equals(res1, new String[]{"a", "b", "c", "d", "e"}));
  98. assertTrue(Arrays.equals(res2, new String[]{"a", "b", "c", "d e"}));
  99. assertTrue(Arrays.equals(res3, new String[]{":a", "b:c", "d e"}));
  100. }
  101. @Test
  102. public void testSendConnectionStrings1() {
  103. final ServerInfo serverInfo = new ServerInfo("irc.testing.dmdirc", 6667, "");
  104. final MyInfo myInfo = new MyInfo();
  105. myInfo.setNickname("Nickname");
  106. myInfo.setRealname("Real name");
  107. myInfo.setUsername("Username");
  108. final TestParser parser = new TestParser(myInfo, serverInfo);
  109. parser.sendConnectionStrings();
  110. assertEquals(2, parser.sentLines.size());
  111. assertTrue("Should send nickname line",
  112. Arrays.equals(parser.getLine(0), new String[]{"NICK", "Nickname"}));
  113. final String[] userParts = parser.getLine(1);
  114. assertEquals("First token should be USER", "USER", userParts[0]);
  115. assertEquals("USER should contain username", myInfo.getUsername().toLowerCase(),
  116. userParts[1].toLowerCase());
  117. assertEquals("USER should contain server name", serverInfo.getHost(), userParts[3]);
  118. assertEquals("USER should contain real name", "Real name", userParts[4]);
  119. }
  120. @Test
  121. public void testSendConnectionStrings2() {
  122. final ServerInfo serverInfo = new ServerInfo("irc.testing.dmdirc", 6667, "password");
  123. final MyInfo myInfo = new MyInfo();
  124. myInfo.setNickname("Nickname");
  125. myInfo.setRealname("Real name");
  126. myInfo.setUsername("Username");
  127. final TestParser parser = new TestParser(myInfo, serverInfo);
  128. parser.sendConnectionStrings();
  129. assertEquals(3, parser.sentLines.size());
  130. assertTrue("Should send password line",
  131. Arrays.equals(parser.getLine(0), new String[]{"PASS", "password"}));
  132. }
  133. @Test
  134. public void testPingPong() {
  135. final TestParser parser = new TestParser();
  136. parser.injectLine("PING :flubadee7291");
  137. assertTrue("Should reply to PINGs with PONGs",
  138. Arrays.equals(parser.getLine(0), new String[]{"PONG", "flubadee7291"}));
  139. }
  140. @Test
  141. public void testError() throws CallbackNotFoundException {
  142. final ISETest test = new ISETest();
  143. final TestParser parser = new TestParser();
  144. parser.getCallbackManager().addCallback("onServerError", test);
  145. parser.injectLine("ERROR :You smell of cheese");
  146. assertNotNull(test.message);
  147. assertEquals("ERROR message should be passed to callback",
  148. "You smell of cheese", test.message);
  149. }
  150. @Test
  151. public void testAuthNotices() throws CallbackNotFoundException {
  152. final INATest test = new INATest();
  153. final TestParser parser = new TestParser();
  154. parser.getCallbackManager().addCallback("onNoticeAuth", test);
  155. parser.sendConnectionStrings();
  156. parser.injectLine("NOTICE AUTH :Random auth notice?");
  157. assertNotNull(test.message);
  158. assertEquals("Random auth notice?", test.message);
  159. test.message = null;
  160. parser.injectLine(":us.ircnet.org 020 * :Stupid notice");
  161. assertNotNull(test.message);
  162. assertEquals("Stupid notice", test.message);
  163. }
  164. @Test
  165. public void testNumeric() throws CallbackNotFoundException {
  166. final INTest test = new INTest();
  167. final TestParser parser = new TestParser();
  168. parser.getCallbackManager().addCallback("onNumeric", test);
  169. parser.injectLine(":server 001 nick :Hi there, nick");
  170. assertEquals(1, test.numeric);
  171. assertTrue(Arrays.equals(new String[]{":server", "001", "nick", "Hi there, nick"},
  172. test.data));
  173. }
  174. @Test
  175. public void testPost005() throws CallbackNotFoundException {
  176. final IPFTest test = new IPFTest();
  177. final TestParser parser = new TestParser();
  178. parser.getCallbackManager().addCallback("onPost005", test);
  179. final String[] strings = {
  180. "NOTICE AUTH :Blah, blah",
  181. ":server 020 * :Blah! Blah!",
  182. ":server 001 nick :Welcome to the Testing IRC Network, nick",
  183. ":server 002 nick :Your host is server.net, running version foo",
  184. "NOTICE AUTH :I'm a retarded server",
  185. ":server 003 nick :This server was created Sun Jan 6 2008 at 17:34:54 CET",
  186. ":server 004 nick server.net foo dioswkgxRXInP biklmnopstvrDcCNuMT bklov",
  187. ":server 005 nick WHOX WALLCHOPS WALLVOICES USERIP :are supported by this server",
  188. ":server 005 nick MAXNICKLEN=15 TOPICLEN=250 AWAYLEN=160 :are supported " +
  189. "by this server",
  190. ":server 375 nick :zomg, motd!",
  191. };
  192. for (String string : strings) {
  193. assertFalse("OnPost005 fired too early", test.done);
  194. parser.injectLine(string);
  195. }
  196. assertTrue("OnPost005 not fired", test.done);
  197. }
  198. @Test
  199. public void test005Parsing() {
  200. final TestParser parser = new TestParser();
  201. final String[] strings = {
  202. ":server 001 nick :Welcome to the Testing IRC Network, nick",
  203. ":server 002 nick :Your host is server.net, running version foo",
  204. ":server 003 nick :This server was created Sun Jan 6 2008 at 17:34:54 CET",
  205. ":server 004 nick server.net foo dioswkgxRXInP biklmnopstvrDcCNuMT bklov",
  206. ":server 005 nick WHOX WALLCHOPS WALLVOICES NETWORK=moo :are supported by" +
  207. " this server",
  208. ":server 005 nick MAXNICKLEN=15 MAXLIST=b:10,e:22,I:45 :are supported by" +
  209. " this server",
  210. ":server 375 nick :zomg, motd!",
  211. };
  212. for (String string : strings) {
  213. parser.injectLine(string);
  214. }
  215. assertEquals(10, parser.getMaxListModes('b'));
  216. assertEquals(22, parser.getMaxListModes('e'));
  217. assertEquals(45, parser.getMaxListModes('I'));
  218. assertEquals("getMaxListModes should return 0 for unknowns;", 0,
  219. parser.getMaxListModes('z'));
  220. assertEquals("moo", parser.getNetworkName());
  221. assertEquals("server", parser.getServerName());
  222. }
  223. @Test
  224. public void testBindIP() {
  225. final TestParser parser = new TestParser();
  226. parser.setBindIP("abc.def.ghi.123");
  227. assertEquals("abc.def.ghi.123", parser.getBindIP());
  228. }
  229. @Test
  230. public void testCreateFake() {
  231. final TestParser parser = new TestParser();
  232. parser.setCreateFake(false);
  233. assertFalse(parser.getCreateFake());
  234. parser.setCreateFake(true);
  235. assertTrue(parser.getCreateFake());
  236. }
  237. @Test
  238. public void testAutoListMode() {
  239. final TestParser parser = new TestParser();
  240. parser.setAutoListMode(false);
  241. assertFalse(parser.getAutoListMode());
  242. parser.setAutoListMode(true);
  243. assertTrue(parser.getAutoListMode());
  244. }
  245. @Test
  246. public void testRemoveAfterCallback() {
  247. final TestParser parser = new TestParser();
  248. parser.setRemoveAfterCallback(false);
  249. assertFalse(parser.getRemoveAfterCallback());
  250. parser.setRemoveAfterCallback(true);
  251. assertTrue(parser.getRemoveAfterCallback());
  252. }
  253. @Test
  254. public void testAddLastLine() {
  255. final TestParser parser = new TestParser();
  256. parser.setAddLastLine(false);
  257. assertFalse(parser.getAddLastLine());
  258. parser.setAddLastLine(true);
  259. assertTrue(parser.getAddLastLine());
  260. }
  261. @Test
  262. public void testDisconnectOnFatal() {
  263. final TestParser parser = new TestParser();
  264. parser.setDisconnectOnFatal(false);
  265. assertFalse(parser.getDisconnectOnFatal());
  266. parser.setDisconnectOnFatal(true);
  267. assertTrue(parser.getDisconnectOnFatal());
  268. }
  269. @Test
  270. public void testTrustManager() {
  271. final TestParser parser = new TestParser();
  272. assertTrue(Arrays.equals(parser.getDefaultTrustManager(), parser.getTrustManager()));
  273. parser.setTrustManager(new TrustManager[0]);
  274. assertTrue(Arrays.equals(new TrustManager[0], parser.getTrustManager()));
  275. }
  276. @Test
  277. public void testJoinChannel() throws CallbackNotFoundException {
  278. final TestParser parser = new TestParser();
  279. final ICSJTest test = new ICSJTest();
  280. parser.injectConnectionStrings();
  281. parser.getCallbackManager().addCallback("onChannelSelfJoin", test);
  282. parser.injectLine(":nick JOIN #DMDirc_testing");
  283. assertNotNull(test.channel);
  284. assertEquals("#DMDirc_testing", test.channel.getName());
  285. assertEquals("#DMDirc_testing", test.channel.toString());
  286. assertEquals(parser, test.channel.getParser());
  287. assertEquals(1, parser.getChannels().size());
  288. assertTrue(parser.getChannels().contains(test.channel));
  289. assertEquals(test.channel, parser.getChannelInfo("#DMDirc_testing"));
  290. }
  291. @Test
  292. public void testChannelUmodes() {
  293. final TestParser parser = new TestParser();
  294. parser.injectConnectionStrings();
  295. parser.injectLine(":nick JOIN #DMDirc_testing");
  296. parser.injectLine(":server 353 nick = #DMDirc_testing :@nick +luser");
  297. parser.injectLine(":server 366 nick #DMDirc_testing :End of /NAMES list");
  298. assertEquals(1, parser.getChannels().size());
  299. assertNotNull(parser.getChannelInfo("#DMDirc_testing"));
  300. assertEquals(2, parser.getChannelInfo("#DMDirc_testing").getChannelClients().size());
  301. assertNotNull(parser.getClientInfo("luser"));
  302. assertEquals(1, parser.getClientInfo("luser").getChannelClients().size());
  303. final ChannelClientInfo cci = parser.getClientInfo("luser").getChannelClients().get(0);
  304. assertEquals(parser.getChannelInfo("#DMDirc_testing"), cci.getChannel());
  305. assertEquals("+", cci.getChanModeStr(true));
  306. parser.injectLine(":server MODE #DMDirc_testing +v luser");
  307. assertEquals("+", cci.getChanModeStr(true));
  308. parser.injectLine(":server MODE #DMDirc_testing +o luser");
  309. assertEquals("ov", cci.getChanModeStr(false));
  310. assertEquals("@+", cci.getChanModeStr(true));
  311. parser.injectLine(":server MODE #DMDirc_testing +bov moo luser luser");
  312. assertEquals("ov", cci.getChanModeStr(false));
  313. parser.injectLine(":server MODE #DMDirc_testing -bov moo luser luser");
  314. assertEquals("", cci.getChanModeStr(false));
  315. assertEquals("", cci.getChanModeStr(true));
  316. }
  317. @Test
  318. public void testPrivateMessages() throws CallbackNotFoundException {
  319. final TestParser parser = new TestParser();
  320. final IPMTest ipmtest = new IPMTest();
  321. final IPATest ipatest = new IPATest();
  322. final IPCTest ipctest = new IPCTest();
  323. parser.injectConnectionStrings();
  324. parser.getCallbackManager().addCallback("onPrivateMessage", ipmtest);
  325. parser.getCallbackManager().addCallback("onPrivateAction", ipatest);
  326. parser.getCallbackManager().addCallback("onPrivateCTCP", ipctest);
  327. parser.injectLine(":a!b@c PRIVMSG nick :Hello!");
  328. assertNotNull(ipmtest.host);
  329. assertNull(ipatest.host);
  330. assertNull(ipctest.host);
  331. assertEquals("a!b@c", ipmtest.host);
  332. assertEquals("Hello!", ipmtest.message);
  333. ipmtest.host = null;
  334. ipmtest.message = null;
  335. parser.injectLine(":a!b@c PRIVMSG nick :" + ((char) 1) + "ACTION meep" + ((char) 1));
  336. assertNull(ipmtest.host);
  337. assertNotNull(ipatest.host);
  338. assertNull(ipctest.host);
  339. assertEquals("a!b@c", ipatest.host);
  340. assertEquals("meep", ipatest.message);
  341. ipatest.host = null;
  342. ipatest.message = null;
  343. parser.injectLine(":a!b@c PRIVMSG nick :" + ((char) 1) + "FOO meep" + ((char) 1));
  344. assertNull(ipmtest.host);
  345. assertNull(ipatest.host);
  346. assertNotNull(ipctest.host);
  347. assertEquals("a!b@c", ipctest.host);
  348. assertEquals("FOO", ipctest.type);
  349. assertEquals("meep", ipctest.message);
  350. }
  351. private void testListModes(String numeric1, String numeric2, char mode) {
  352. final TestParser parser = new TestParser();
  353. parser.injectConnectionStrings();
  354. parser.injectLine(":nick JOIN #D");
  355. parser.injectLine(":server " + numeric1 + " nick #D ban1!ident@.host bansetter1 1001");
  356. parser.injectLine(":server " + numeric1 + " nick #D ban2!*@.host bansetter2 1002");
  357. parser.injectLine(":server " + numeric1 + " nick #D ban3!ident@* bansetter3 1003");
  358. parser.injectLine(":server " + numeric2 + " nick #D :End of Channel Something List");
  359. final List<ChannelListModeItem> items
  360. = parser.getChannelInfo("#D").getListModeParam(mode);
  361. assertEquals(3, items.size());
  362. boolean gotOne = false, gotTwo = false, gotThree = false;
  363. for (ChannelListModeItem item : items) {
  364. if (item.getItem().equals("ban1!ident@.host")) {
  365. assertEquals("bansetter1", item.getOwner());
  366. assertEquals(1001, item.getTime());
  367. assertFalse(gotOne);
  368. gotOne = true;
  369. } else if (item.getItem().equals("ban2!*@.host")) {
  370. assertEquals("bansetter2", item.getOwner());
  371. assertEquals(1002, item.getTime());
  372. assertFalse(gotTwo);
  373. gotTwo = true;
  374. } else if (item.toString().equals("ban3!ident@*")) {
  375. assertEquals("bansetter3", item.getOwner());
  376. assertEquals(1003, item.getTime());
  377. assertFalse(gotThree);
  378. gotThree = true;
  379. }
  380. }
  381. assertTrue(gotOne);
  382. assertTrue(gotTwo);
  383. assertTrue(gotThree);
  384. }
  385. @Test
  386. public void testNormalBans() {
  387. testListModes("367", "368", 'b');
  388. }
  389. @Test
  390. public void testInvexList() {
  391. testListModes("346", "347", 'I');
  392. }
  393. @Test
  394. public void testExemptList() {
  395. testListModes("348", "349", 'e');
  396. }
  397. @Test
  398. public void testReopList() {
  399. testListModes("344", "345", 'R');
  400. }
  401. @Test
  402. public void testGetParam() {
  403. assertEquals("abc def", TestParser.getParam("foo :abc def"));
  404. assertEquals("bar :abc def", TestParser.getParam("foo :bar :abc def"));
  405. assertEquals("abc def", TestParser.getParam("abc def"));
  406. }
  407. @Test
  408. public void testKick() throws CallbackNotFoundException {
  409. final TestParser parser = new TestParser();
  410. final ICKTest ick = new ICKTest();
  411. parser.injectConnectionStrings();
  412. parser.injectLine(":nick JOIN #D");
  413. parser.getCallbackManager().addCallback("onChannelKick", ick, "#D");
  414. parser.injectLine(":bar!me@moo KICK #D nick :Bye!");
  415. assertTrue("onChannelKick must be called", ick.called);
  416. assertNotNull("cKickedClient must not be null", ick.cKickedClient);
  417. }
  418. @Test
  419. public void testIRCds() {
  420. doIRCdTest("u2.10.12.10+snircd(1.3.4)", "snircd");
  421. doIRCdTest("u2.10.12.12", "ircu");
  422. doIRCdTest("hyperion-1.0.2b", "hyperion");
  423. doIRCdTest("hybrid-7.2.3", "hybrid");
  424. doIRCdTest("Unreal3.2.6", "unreal");
  425. doIRCdTest("bahamut-1.8(04)", "bahamut");
  426. }
  427. private void doIRCdTest(final String ircd, final String expected) {
  428. final TestParser parser = new TestParser();
  429. String[] strings = {
  430. ":server 001 nick :Welcome to the Testing IRC Network, nick",
  431. ":server 002 nick :Your host is server.net, running version %s",
  432. ":server 003 nick :This server was created Sun Jan 6 2008 at 17:34:54 CET",
  433. ":server 004 nick server.net %s dioswkgxRXInP biklmnopstvrDcCNuMT bklov"
  434. };
  435. for (String line : strings) {
  436. parser.injectLine(String.format(line, ircd));
  437. }
  438. assertEquals(ircd, parser.getIRCD(false));
  439. assertEquals(expected.toLowerCase(), parser.getIRCD(true).toLowerCase());
  440. }
  441. private class ISETest implements IServerError {
  442. String message = null;
  443. public void onServerError(IRCParser tParser, String sMessage) {
  444. message = sMessage;
  445. }
  446. }
  447. private class INATest implements INoticeAuth {
  448. String message = null;
  449. public void onNoticeAuth(IRCParser tParser, String sData) {
  450. message = sData;
  451. }
  452. }
  453. private class INTest implements INumeric {
  454. int numeric = 0;
  455. String[] data;
  456. public void onNumeric(IRCParser tParser, int numeric, String[] token) {
  457. this.numeric = numeric;
  458. data = token;
  459. }
  460. }
  461. private class IPFTest implements IPost005 {
  462. boolean done = false;
  463. public void onPost005(IRCParser tParser) {
  464. done = true;
  465. }
  466. }
  467. private class ICSJTest implements IChannelSelfJoin {
  468. ChannelInfo channel = null;
  469. public void onChannelSelfJoin(IRCParser tParser, ChannelInfo cChannel) {
  470. channel = cChannel;
  471. }
  472. }
  473. private class IPMTest implements IPrivateMessage {
  474. String host = null, message = null;
  475. public void onPrivateMessage(IRCParser tParser, String sMessage, String sHost) {
  476. host = sHost;
  477. message = sMessage;
  478. }
  479. }
  480. private class IPCTest implements IPrivateCTCP {
  481. String type = null, message = null, host = null;
  482. public void onPrivateCTCP(IRCParser tParser, String sType, String sMessage,
  483. String sHost) {
  484. type = sType;
  485. message = sMessage;
  486. host = sHost;
  487. }
  488. }
  489. private class IPATest implements IPrivateAction {
  490. String message = null, host = null;
  491. public void onPrivateAction(IRCParser tParser, String sMessage, String sHost) {
  492. message = sMessage;
  493. host = sHost;
  494. }
  495. }
  496. private class ICKTest implements IChannelKick {
  497. ChannelClientInfo cKickedClient = null;
  498. boolean called = false;
  499. public void onChannelKick(IRCParser tParser, ChannelInfo cChannel,
  500. ChannelClientInfo cKickedClient, ChannelClientInfo cKickedByClient,
  501. String sReason, String sKickedByHost) {
  502. this.cKickedClient = cKickedClient;
  503. called = true;
  504. }
  505. }
  506. }