/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.impl.protocol.irc; import java.util.*; import junit.framework.*; import net.java.sip.communicator.impl.protocol.irc.ModeParser.ModeEntry; public class ModeParserTest extends TestCase { protected void setUp() throws Exception { super.setUp(); } public void testConstructionStringNull() { try { new ModeParser((String) null); Assert.fail("Expected NPE"); } catch (NullPointerException e) { } } public void testConstructionStringEmpty() { ModeParser parser = new ModeParser(""); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(0, modes.size()); } public void testConstructionStringSingleBad() { try { new ModeParser("p"); Assert.fail(); } catch (IllegalStateException e) { } } public void testConstructionStringSingleGood() { ModeParser parser = new ModeParser("+p"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.PRIVATE, modes.get(0).getMode()); Assert.assertTrue(modes.get(0).isAdded()); Assert.assertEquals(0, modes.get(0).getParams().length); } public void testParseRemoval() { ModeParser parser = new ModeParser("-p"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.PRIVATE, modes.get(0).getMode()); Assert.assertFalse(modes.get(0).isAdded()); Assert.assertEquals(0, modes.get(0).getParams().length); } public void testParseUnknownMode() { ModeParser parser = new ModeParser("+?"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.UNKNOWN, modes.get(0).getMode()); Assert.assertEquals(1, modes.get(0).getParams().length); Assert.assertEquals("?", modes.get(0).getParams()[0]); } public void testModeMissingExtraParameters() { try { new ModeParser("+l"); Assert.fail("this line should not be reached"); } catch (IllegalArgumentException e) { // expect illegal argument exception } } public void testModeExtraParameters() { ModeParser parser = new ModeParser("+l 123 141"); Assert.assertEquals(1, parser.getModes().size()); // Parse modes, expect 1 and ignore the extra parameter. } public void testModeOwner() { ModeParser parser = new ModeParser("+O dude"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.OWNER, modes.get(0).getMode()); Assert.assertEquals(1, modes.get(0).getParams().length); Assert.assertEquals("dude", modes.get(0).getParams()[0]); } public void testModeOperator() { ModeParser parser = new ModeParser("+o dude"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.OPERATOR, modes.get(0).getMode()); Assert.assertEquals(1, modes.get(0).getParams().length); Assert.assertEquals("dude", modes.get(0).getParams()[0]); } public void testModeVoice() { ModeParser parser = new ModeParser("+v dude"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.VOICE, modes.get(0).getMode()); Assert.assertEquals(1, modes.get(0).getParams().length); Assert.assertEquals("dude", modes.get(0).getParams()[0]); } public void testModeLimitAddition() { ModeParser parser = new ModeParser("+l 13"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.LIMIT, modes.get(0).getMode()); Assert.assertEquals(1, modes.get(0).getParams().length); Assert.assertEquals("13", modes.get(0).getParams()[0]); } public void testModeLimitRemoval() { ModeParser parser = new ModeParser("-l"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.LIMIT, modes.get(0).getMode()); Assert.assertEquals(0, modes.get(0).getParams().length); } public void testModePrivate() { ModeParser parser = new ModeParser("+p"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.PRIVATE, modes.get(0).getMode()); Assert.assertEquals(0, modes.get(0).getParams().length); } public void testModeSecret() { ModeParser parser = new ModeParser("+s"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.SECRET, modes.get(0).getMode()); Assert.assertEquals(0, modes.get(0).getParams().length); } public void testModeInvite() { ModeParser parser = new ModeParser("+i"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); Assert.assertTrue(modes.get(0) instanceof ModeEntry); Assert.assertEquals(Mode.INVITE, modes.get(0).getMode()); Assert.assertEquals(0, modes.get(0).getParams().length); } public void testModeBan() { ModeParser parser = new ModeParser("+b *!*@some-ip.dynamicIP.provider.net"); List<ModeEntry> modes = parser.getModes(); Assert.assertNotNull(modes); Assert.assertEquals(1, modes.size()); ModeEntry entry = modes.get(0); Assert.assertTrue(entry instanceof ModeEntry); Assert.assertEquals(Mode.BAN, entry.getMode()); Assert.assertEquals(1, entry.getParams().length); Assert.assertEquals("*!*@some-ip.dynamicIP.provider.net", entry.getParams()[0]); } protected void tearDown() throws Exception { super.tearDown(); } }