diff options
Diffstat (limited to 'src/tests/org/noreply/fancydress/misc/UtilTest.java')
-rw-r--r-- | src/tests/org/noreply/fancydress/misc/UtilTest.java | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/src/tests/org/noreply/fancydress/misc/UtilTest.java b/src/tests/org/noreply/fancydress/misc/UtilTest.java new file mode 100644 index 0000000..d967b99 --- /dev/null +++ b/src/tests/org/noreply/fancydress/misc/UtilTest.java @@ -0,0 +1,202 @@ +import java.io.*; +import java.util.*; +import junit.framework.*; +import org.noreply.fancydress.misc.Util; + +public class UtilTest extends TestCase { + + public UtilTest(String name) { + super(name); + } + + /** + * Test if equal returns an array of the same size as the input arrays. + */ + public void testEqual() { + byte[] a0 = new byte[30]; + byte[] a1 = { }; + byte[] a2 = { (byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04 }; + byte[] a3 = { (byte)0x10, (byte)0x20, (byte)0xf0, (byte)0xF0, (byte)0xab }; + assertTrue(Util.equal(a0,a0)); + assertTrue(Util.equal(a1,a1)); + assertTrue(Util.equal(a2,a2)); + assertTrue(Util.equal(a3,a3)); + + assertTrue(!Util.equal(a0,a1)); + assertTrue(!Util.equal(a0,a2)); + assertTrue(!Util.equal(a0,a3)); + assertTrue(!Util.equal(a1,a0)); + assertTrue(!Util.equal(a1,a2)); + assertTrue(!Util.equal(a1,a3)); + assertTrue(!Util.equal(a2,a0)); + assertTrue(!Util.equal(a2,a1)); + assertTrue(!Util.equal(a2,a3)); + assertTrue(!Util.equal(a3,a0)); + assertTrue(!Util.equal(a3,a1)); + assertTrue(!Util.equal(a3,a2)); + } + + /** + * Test if concat returns n+m bytes + */ + public void testConcatLength() { + byte[] a; + byte[] b; + byte[] r; + + a = new byte[0]; + b = new byte[30]; + r = Util.concat(a,b); + assertEquals(a.length + b.length, r.length); + a = new byte[30]; + b = new byte[0]; + r = Util.concat(a,b); + assertEquals(a.length + b.length, r.length); + a = new byte[30]; + b = new byte[30]; + r = Util.concat(a,b); + assertEquals(a.length + b.length, r.length); + } + + /** + * Test that slice returns the correct length + */ + public void testSliceLength() { + byte[] b = new byte[300]; + byte[] r; + + r = Util.slice(b, 0, 0); + assertEquals(0, r.length); + r = Util.slice(b, 30, 0); + assertEquals(0, r.length); + r = Util.slice(b, 0, 30); + assertEquals(30, r.length); + r = Util.slice(b, 30, 30); + assertEquals(30, r.length); + } + + /** + * Test that slice returns the correct length + */ + public void testSlice() { + byte[] b0 = Util.fromHex("00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF"); + byte[] b1 = Util.fromHex("00 11 22 33 44 55 66 77 "); + byte[] b2 = Util.fromHex(" 55 66 77 88 99 "); + byte[] b3 = Util.fromHex(" DD EE FF"); + byte[] b4 = Util.fromHex(" "); + + assertTrue(Util.equal(Util.slice(b0, 0, b0.length), b0)); + assertTrue(Util.equal(Util.slice(b0, 0, 8), b1)); + assertTrue(Util.equal(Util.slice(b0, 5, 5), b2)); + assertTrue(Util.equal(Util.slice(b0, 13, 3), b3)); + + assertTrue(Util.equal(Util.slice(b0, 0, 0), b4)); + assertTrue(Util.equal(Util.slice(b0, 5, 0), b4)); + assertTrue(Util.equal(Util.slice(b0, 15, 0), b4)); + } + + /** + * Test if fromHex returns the right amount if bytes. + */ + public void testFromHexLength() { + String s; + byte[] r; + + s = ""; + r = Util.fromHex(s); + assertEquals(0, r.length); + + s = " "; + r = Util.fromHex(s); + assertEquals(0, r.length); + + s = "00 01 02 03 04"; + r = Util.fromHex(s); + assertEquals(5, r.length); + + s = "00 01 02 0 3 0 4"; + r = Util.fromHex(s); + assertEquals(5, r.length); + } + + /** + * Test if fromHex is sane. + */ + public void testFromHexSaneness() { + String s1 = ""; + String s2 = "00 01 02 03 04"; + String s2_2 = "00 01 02 0 3 04"; + String s3 = "10 20 f0 F0 Ab"; + byte[] a1 = { }; + byte[] a2 = { (byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04 }; + byte[] a3 = { (byte)0x10, (byte)0x20, (byte)0xf0, (byte)0xF0, (byte)0xab }; + byte[] r; + + r = Util.fromHex(s1); + assertTrue(Util.equal(a1, r)); + + r = Util.fromHex(s2); + assertTrue(Util.equal(a2, r)); + + r = Util.fromHex(s2_2); + assertTrue(Util.equal(a2, r)); + + r = Util.fromHex(s3); + assertTrue(Util.equal(a3, r)); + } + + /** + * Test if fromHex(asHex()) is sane. + */ + public void testAsHexFromHex() { + String s = "CA F3 E8 F6 23 B9 87 20 D2 F7 A8 66 9C B6 DE 01 71" + + "31 CC 3E 74 20 80 99 62 2D 7D DF 98 59 D7 5B A6 77 78 FE 3C 22 C1 B5 AE 1F 8E" + + "79 78 72 3D 0F 51 B7 EA 19 F7 93 7F F6 DC 21 EC 2C 13 54 DD 98"; + byte[] r, r1; + String s1; + + r = Util.fromHex(s); + s1 = Util.asHex(r); + r1 = Util.fromHex(s1); + + assertTrue(Util.equal(r, r1)); + } + + /** + * Test if toOctets() works. + */ + public void testToOctets() { + String s0 = "Don't you wish you had more energy... or less ambition?"; + byte[] o0 = Util.fromHex("44 6f 6e 27 74 20 79 6f 75 20 77 69 73 68 20 79" + + "6f 75 20 68 61 64 20 6d 6f 72 65 20 65 6e 65 72" + + "67 79 2e 2e 2e 20 6f 72 20 6c 65 73 73 20 61 6d" + + "62 69 74 69 6f 6e 3f" ); + String s1 = ""; + byte[] o1 = {}; + byte[] r; + + r = Util.toOctets(s0); + assertTrue(Util.equal(r, o0)); + + r = Util.toOctets(s1); + assertTrue(Util.equal(r, o1)); + } + + + public static Test suite() { + TestSuite suite= new TestSuite(); + suite.addTest(new UtilTest("testEqual")); + suite.addTest(new UtilTest("testConcatLength")); + suite.addTest(new UtilTest("testSlice")); + suite.addTest(new UtilTest("testSliceLength")); + suite.addTest(new UtilTest("testFromHexLength")); + suite.addTest(new UtilTest("testFromHexSaneness")); + suite.addTest(new UtilTest("testAsHexFromHex")); + suite.addTest(new UtilTest("testToOctets")); + return suite; + } + + public static void main(String args[]) { + junit.textui.TestRunner.run(suite()); + } +} |