/* * 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 junit.framework.*; /** * @author Danny van Heumen */ public class UtilsTest extends TestCase { public void testNullText() { Assert.assertEquals(null, Utils.parseIrcMessage(null)); } public void testParseEmptyString() { Assert.assertEquals("", Utils.parseIrcMessage("")); } public void testParseStringWithoutControlCodes() { final String message = "My normal message without any control codes."; Assert.assertEquals(message, Utils.parseIrcMessage(message)); } public void testParseStringWithBoldCode() { final String ircMessage = "My \u0002bold\u0002 message \u0002BOLD!\u0002."; final String htmlMessage = "My <b>bold</b> message <b>BOLD!</b>."; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseStringWithItalicsCode() { final String ircMessage = "My \u0016italics\u0016 message \u0016ITALICS!\u0016."; final String htmlMessage = "My <i>italics</i> message <i>ITALICS!</i>."; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseStringWithUnderlineCode() { final String ircMessage = "My \u001Funderlined\u001F message \u001FUNDERLINED!!!\u001F."; final String htmlMessage = "My <u>underlined</u> message <u>UNDERLINED!!!</u>."; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseStringWithForegroundColorCode() { final String ircMessage = "My \u000304RED\u0003 message."; final String htmlMessage = "My <font color=\"Red\">RED</font> message."; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseStringWithForegroundAndBackgroundColorCode() { final String ircMessage = "My \u000304,12RED on Light Blue\u0003 message."; final String htmlMessage = "My <font color=\"Red\" bgcolor=\"RoyalBlue\">RED on Light Blue</font> message."; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseStringWithInvalidBgColorCode() { final String ircMessage = "My \u000304,BRIGHT RED on Light Blue\u0003 message."; final String htmlMessage = "My <font color=\"Red\">,BRIGHT RED on Light Blue</font> message."; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseStringWithInvalidColorControlCode() { final String ircMessage = "My \u0003BRIGHT RED on Light Blue\u0003 message."; final String htmlMessage = "My BRIGHT RED on Light Blue message."; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseStringWithInvalidSecondControlCode() { final String ircMessage = "My \u000304,12RED on Light Blue\u000304,12 message."; final String htmlMessage = "My <font color=\"Red\" bgcolor=\"RoyalBlue\">RED on Light Blue<font color=\"Red\" bgcolor=\"RoyalBlue\"> message.</font></font>"; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseStringWithIncompleteForegroundColorControlCode() { final String ircMessage = "My \u0003"; final String htmlMessage = "My "; Assert.assertTrue(Utils.parseIrcMessage(ircMessage).startsWith(htmlMessage)); } public void testParseStringWithIncompleteBackgroundColorControlCode() { final String ircMessage = "My \u000310,"; final String htmlMessage = "My <font color=\"Teal\">,"; Assert.assertTrue(Utils.parseIrcMessage(ircMessage).startsWith(htmlMessage)); } public void testParseSringAndNeutralizeWithNormalControlCode() { final String ircMessage = "My \u0002\u0016\u001F\u000304,12RED on Light Blue\u000F message."; final String htmlMessage = "My <b><i><u><font color=\"Red\" bgcolor=\"RoyalBlue\">RED on Light Blue</font></u></i></b> message."; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseStringWithUnclosedFormattingI() { final String ircMessage = "My \u0002\u0016\u001F\u000304,12RED on Light Blue message."; final String htmlMessage = "My <b><i><u><font color=\"Red\" bgcolor=\"RoyalBlue\">RED on Light Blue message.</font></u></i></b>"; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseUnknownForegroundColor() { final String ircMessage = "\u000399TEST"; final String htmlMessage = "<font color=\"Green\">TEST</font>"; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testParseUnknownBackgroundColor() { final String ircMessage = "\u000300,99TEST"; final String htmlMessage = "<font color=\"White\" bgcolor=\"Green\">TEST</font>"; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testStackIncompatibleFormatToggling() { final String ircMessage = "\u0002\u0016\u001FHello\u0002 W\u0016orld\u001F!"; final String htmlMessage = "<b><i><u>Hello</u></i></b><i><u> W</u></i><u>orld</u>!"; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testColorSwitch() { final String ircMessage = "\u000302,03Hello \u000308,09World\u000F!"; final String htmlMessage = "<font color=\"Navy\" bgcolor=\"Green\">Hello <font color=\"Yellow\" bgcolor=\"Lime\">World</font></font>!"; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testForegroundColorChange() { // If only a foreground color is specified, leave the background color active/as is. final String ircMessage = "\u000302,03Hello \u000308World\u000F!"; final String htmlMessage = "<font color=\"Navy\" bgcolor=\"Green\">Hello <font color=\"Yellow\">World</font></font>!"; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testCancelColorFormat() { final String ircMessage = "\u000302With color\u0003 and without color."; final String htmlMessage = "<font color=\"Navy\">With color</font> and without color."; Assert.assertEquals(htmlMessage, Utils.parseIrcMessage(ircMessage)); } public void testMessageContainingHtmlEntities() { final String ircMessage = "\u0002This<b> is very</b> bad &&& text!!!<!-- \u0002<i>"; final String parsedMessage = "<b>This<b> is very</b> bad &&& text!!!<!-- </b><i>"; Assert.assertEquals(parsedMessage, Utils.parseIrcMessage(ircMessage)); } public void testStyleAsMessage() { String message = "hello world"; Assert.assertEquals(message, Utils.styleAsMessage(message)); } public void testStyleAsNotice() { String message = "hello world"; String nick = "MrNiceGuy"; Assert.assertEquals("<i>MrNiceGuy</i>: hello world", Utils.styleAsNotice(message, nick)); } }