package org.erlide.util; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import org.erlide.util.erlang.OtpErlang; import org.erlide.util.erlang.OtpParserException; import org.junit.Assert; import org.junit.Test; import com.ericsson.otp.erlang.OtpErlangBinary; import com.ericsson.otp.erlang.OtpErlangObject; import com.ericsson.otp.erlang.OtpErlangString; import com.google.common.base.Charsets; public class UtilTest { @Test public void normalizeSpaces_shouldKeepSingleSpaces() { final String input = "a b c"; final String value = StringUtils.normalizeSpaces(input); final String expected = "a b c"; assertEquals(value, expected); } @Test public void normalizeSpaces_shouldCompressMultipleSpaces() { final String input = "a b c"; final String value = StringUtils.normalizeSpaces(input); final String expected = "a b c"; assertEquals(value, expected); } @Test public void normalizeSpaces_shouldCompressTabs() { final String input = "a\t\tb\tc"; final String value = StringUtils.normalizeSpaces(input); final String expected = "a b c"; assertEquals(value, expected); } @Test public void normalizeSpaces_shouldCompressNewlines() { final String input = "a\r\nb\nc"; final String value = StringUtils.normalizeSpaces(input); final String expected = "a b c"; assertEquals(value, expected); } @Test public void normalizeSpaces_shouldCompressAll() { final String input = "a\r\n\t b\n\t\t \tc"; final String value = StringUtils.normalizeSpaces(input); final String expected = "a b c"; assertEquals(value, expected); } @Test public void testIoListToString_small() { final OtpErlangObject input = OtpErlang.mkList(new OtpErlangString("hej"), new OtpErlangString("hoj")); final String result = Util.ioListToString(input, 10); final String expected = "hejhoj"; Assert.assertEquals(expected, result); } @Test public void testIoListToString_large1() { final OtpErlangObject input = OtpErlang.mkList(new OtpErlangString("hej"), new OtpErlangString("hoj")); final String result = Util.ioListToString(input, 4); final String expected = "hejh... <truncated>"; Assert.assertEquals(expected, result); } @Test public void testIoListToString_large2() { final OtpErlangObject input = OtpErlang.mkList(new OtpErlangString("hej"), new OtpErlangString("hoj")); final String result = Util.ioListToString(input, 6); final String expected = "hejhoj"; Assert.assertEquals(expected, result); } @Test public void testIsTag_number() throws OtpParserException { final OtpErlangObject input = OtpErlang.getTermParser().parse("3"); Assert.assertEquals(false, Util.isTag(input, "ok")); } @Test public void testIsTag_good_atom() throws OtpParserException { final OtpErlangObject input = OtpErlang.getTermParser().parse("ok"); Assert.assertEquals(true, Util.isTag(input, "ok")); } @Test public void testIsTag_wrong_atom() throws OtpParserException { final OtpErlangObject input = OtpErlang.getTermParser().parse("okx"); Assert.assertEquals(false, Util.isTag(input, "ok")); } @Test public void testIsTag_tuple_int() throws OtpParserException { final OtpErlangObject input = OtpErlang.getTermParser().parse("{3,9}"); Assert.assertEquals(false, Util.isTag(input, "ok")); } @Test public void testIsTag_tuple_good_atom() throws OtpParserException { final OtpErlangObject input = OtpErlang.getTermParser().parse("{ok, 9}"); Assert.assertEquals(true, Util.isTag(input, "ok")); } @Test public void testIsTag_tuple_wrong_atom() throws OtpParserException { final OtpErlangObject input = OtpErlang.getTermParser().parse("{okx, 9}"); Assert.assertEquals(false, Util.isTag(input, "ok")); } @Test public void stringValue_1() throws OtpParserException { final OtpErlangObject input = OtpErlang.getTermParser().parse("\"a string\""); final String expected = "a string"; final String actual = Util.stringValue(input); Assert.assertEquals(expected, actual); } @Test public void stringValue_2() throws OtpParserException { final OtpErlangObject input = OtpErlang.getTermParser().parse("[]"); final String expected = ""; final String actual = Util.stringValue(input); Assert.assertEquals(expected, actual); } @Test public void stringValue_3() throws OtpParserException { final OtpErlangObject input = OtpErlang.getTermParser().parse("[51,52,53]"); final String expected = "345"; final String actual = Util.stringValue(input); Assert.assertEquals(expected, actual); } @Test public void stringValue_4() { final OtpErlangObject input = new OtpErlangBinary(new byte[] { 51, 52, 53 }); final String expected = "345"; final String actual = Util.stringValue(input); Assert.assertEquals(expected, actual); } @Test public void stringValue_5() { final byte[] bytes = new byte[] { 197 - 256, 246 - 256 }; final OtpErlangObject input = new OtpErlangBinary(bytes); final byte[] expected = bytes; final String actual = Util.stringValue(input); assertThat(actual.getBytes(Charsets.ISO_8859_1), is(expected)); } @Test public void stringValue_6() { final byte[] bytes = new byte[] { (byte) 0xE8, (byte) 0x8F, (byte) 0xAF }; final OtpErlangObject input = new OtpErlangBinary(bytes); final byte[] expected = bytes; final String actual = Util.stringValue(input); assertThat(actual.getBytes(Charsets.UTF_8), is(expected)); } @Test public void extractLastName_1() { final String actual = Util.extractLastName("aaa.ddd.ccc"); final String expected = "ccc"; assertEquals(expected, actual); } @Test public void extractLastName_2() { final String actual = Util.extractLastName("ccc"); final String expected = "ccc"; assertEquals(expected, actual); } }