OSDN Git Service

from subversion repository
authorOlyutorskii <olyutorskii@users.osdn.me>
Thu, 26 Aug 2010 07:37:22 +0000 (16:37 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Thu, 26 Aug 2010 07:37:22 +0000 (16:37 +0900)
src/test/java/jp/sourceforge/jindolf/AvatarTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/CodeX0208Test.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/HttpUtilsTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/StringUtilsTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/json/JsArrayTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/json/JsBooleanTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/json/JsNullTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/json/JsNumberTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/json/JsObjectTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/json/JsPairTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/jindolf/json/JsStringTest.java [new file with mode: 0644]

diff --git a/src/test/java/jp/sourceforge/jindolf/AvatarTest.java b/src/test/java/jp/sourceforge/jindolf/AvatarTest.java
new file mode 100644 (file)
index 0000000..cbd1786
--- /dev/null
@@ -0,0 +1,185 @@
+/*\r
+ * Avatar Test\r
+ *\r
+ * $Id: AvatarTest.java 970 2009-12-24 16:13:09Z olyutorskii $\r
+ */\r
+\r
+package jp.sourceforge.jindolf;\r
+\r
+import java.util.List;\r
+import java.util.regex.Matcher;\r
+import java.util.regex.Pattern;\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class AvatarTest {\r
+\r
+    public AvatarTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of getPredefinedAvatarList method, of class Avatar.\r
+     */\r
+    @Test\r
+    public void testGetPredefinedAvatarList(){\r
+        System.out.println("getPredefinedAvatarList");\r
+        List<Avatar> result = Avatar.getPredefinedAvatarList();\r
+        assertNotNull(result);\r
+        assertEquals(20, result.size());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of getPredefinedAvatar method, of class Avatar.\r
+     */\r
+    @Test\r
+    public void testGetPredefinedAvatar(){\r
+        System.out.println("getPredefinedAvatar");\r
+        Avatar result;\r
+        result = Avatar.getPredefinedAvatar("農夫 ヤコブ");\r
+        assertNotNull(result);\r
+        assertTrue(result.equals(result));\r
+        result = Avatar.getPredefinedAvatar((CharSequence)"農夫 ヤコブ");\r
+        assertNotNull(result);\r
+        assertTrue(result.equals(result));\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of lookingAtAvatar method, of class Avatar.\r
+     */\r
+    @Test\r
+    public void testMatchAvatar(){\r
+        System.out.println("matchAvatar");\r
+        Matcher matcher;\r
+        Avatar avatar;\r
+\r
+        Pattern pattern = Pattern.compile(".+");\r
+\r
+        matcher = pattern.matcher("農夫 ヤコブ");\r
+        avatar = Avatar.lookingAtAvatar(matcher);\r
+        assertNotNull(avatar);\r
+        assertEquals("農夫 ヤコブ", avatar.getFullName());\r
+\r
+        matcher = pattern.matcher("農夫 ヤコブXYZ");\r
+        avatar = Avatar.lookingAtAvatar(matcher);\r
+        assertNotNull(avatar);\r
+        assertEquals("農夫 ヤコブ", avatar.getFullName());\r
+\r
+        matcher = pattern.matcher("ABC農夫 ヤコブ");\r
+        avatar = Avatar.lookingAtAvatar(matcher);\r
+        assertNull(avatar);\r
+\r
+        matcher = pattern.matcher("農夫 ヤコブならず者 ディーター");\r
+        avatar = Avatar.lookingAtAvatar(matcher);\r
+        assertNotNull(avatar);\r
+        assertEquals("農夫 ヤコブ", avatar.getFullName());\r
+        int regionStart;\r
+        int regionEnd;\r
+        regionStart = matcher.end();\r
+        regionEnd = matcher.regionEnd();\r
+        matcher.region(regionStart, regionEnd);\r
+        avatar = Avatar.lookingAtAvatar(matcher);\r
+        assertNotNull(avatar);\r
+        assertEquals("ならず者 ディーター", avatar.getFullName());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of getFullName method, of class Avatar.\r
+     */\r
+    @Test\r
+    public void testGetFullName(){\r
+        System.out.println("getFullName");\r
+        Avatar result = Avatar.getPredefinedAvatar("農夫 ヤコブ");\r
+        assertNotNull(result);\r
+        assertEquals("農夫 ヤコブ", result.getFullName());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of getJobTitle method, of class Avatar.\r
+     */\r
+    @Test\r
+    public void testGetJobTitle(){\r
+        System.out.println("getJobTitle");\r
+        Avatar result = Avatar.getPredefinedAvatar("農夫 ヤコブ");\r
+        assertNotNull(result);\r
+        assertEquals("農夫", result.getJobTitle());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of getName method, of class Avatar.\r
+     */\r
+    @Test\r
+    public void testGetName(){\r
+        System.out.println("getName");\r
+        Avatar result = Avatar.getPredefinedAvatar("農夫 ヤコブ");\r
+        assertNotNull(result);\r
+        assertEquals("ヤコブ", result.getName());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of getIdNum method, of class Avatar.\r
+     */\r
+    @Test\r
+    public void testGetIdNum(){\r
+        System.out.println("getIdNum");\r
+        Avatar result = Avatar.getPredefinedAvatar("農夫 ヤコブ");\r
+        assertNotNull(result);\r
+        assertEquals(15, result.getIdNum());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of equals method, of class Avatar.\r
+     */\r
+    @Test\r
+    public void testEquals(){\r
+        System.out.println("equals");\r
+        Avatar result = Avatar.getPredefinedAvatar("農夫 ヤコブ");\r
+        assertTrue(result.equals(result));\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of compareTo method, of class Avatar.\r
+     */\r
+    @Test\r
+    public void testCompareTo(){\r
+        System.out.println("compareTo");\r
+        Avatar avatar1 = Avatar.getPredefinedAvatar("農夫 ヤコブ");\r
+        Avatar avatar2 = Avatar.getPredefinedAvatar("シスター フリーデル");\r
+        Avatar avatar3 = Avatar.getPredefinedAvatar("羊飼い カタリナ");\r
+        assertTrue(avatar1.compareTo(avatar2) < 0);\r
+        assertTrue(avatar2.compareTo(avatar3) > 0);\r
+        assertTrue(avatar2.compareTo(avatar2) == 0);\r
+        return;\r
+    }\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/CodeX0208Test.java b/src/test/java/jp/sourceforge/jindolf/CodeX0208Test.java
new file mode 100644 (file)
index 0000000..8dc8af5
--- /dev/null
@@ -0,0 +1,54 @@
+/*\r
+ * CodeX0208 Test\r
+ *\r
+ * $Id: CodeX0208Test.java 818 2009-09-01 15:18:42Z olyutorskii $\r
+ */\r
+\r
+package jp.sourceforge.jindolf;\r
+\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class CodeX0208Test {\r
+\r
+    public CodeX0208Test() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of isValid method, of class CodeX0208.\r
+     */\r
+    @Test\r
+    public void testIsValid(){\r
+        System.out.println("isValid");\r
+\r
+        assertTrue (CodeX0208.isValid('A'));\r
+        assertTrue (CodeX0208.isValid('狼'));\r
+        assertFalse(CodeX0208.isValid('㍻'));\r
+\r
+        return;\r
+    }\r
+\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/HttpUtilsTest.java b/src/test/java/jp/sourceforge/jindolf/HttpUtilsTest.java
new file mode 100644 (file)
index 0000000..65fdf98
--- /dev/null
@@ -0,0 +1,93 @@
+/*\r
+ * HttpUtils Test\r
+ *\r
+ * $Id: HttpUtilsTest.java 687 2009-08-19 05:29:22Z olyutorskii $\r
+ */\r
+\r
+package jp.sourceforge.jindolf;\r
+\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ *\r
+ */\r
+public class HttpUtilsTest {\r
+\r
+    public HttpUtilsTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception {\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception {\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of getHTMLCharset method, of class HttpUtils.\r
+     */\r
+    @Test\r
+    public void getHTMLCharset() {\r
+        System.out.println("getHTMLCharset");\r
+        String contentType;\r
+\r
+        contentType = "text/html;charset = Shift_JIS";\r
+        String result = HttpUtils.getHTMLCharset(contentType);\r
+        assertEquals("Shift_JIS", result);\r
+\r
+        contentType = "text/html ; charset=Shift_JIS ; a = b  ; d=\"xyz\"  ";\r
+        result = HttpUtils.getHTMLCharset(contentType);\r
+        assertEquals("Shift_JIS", result);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of escapeHttpComment method, of class HttpUtils.\r
+     */\r
+    @Test\r
+    public void testEscapeHttpComment(){\r
+        System.out.println("escapeHttpComment");\r
+\r
+        CharSequence comment;\r
+        String expResult;\r
+        String result;\r
+\r
+        comment = "abc";\r
+        expResult = "(abc)";\r
+        result = HttpUtils.escapeHttpComment(comment);\r
+        assertEquals(expResult, result);\r
+\r
+        comment = "abc(pqr)xyz";\r
+        expResult = "(abc\\(pqr\\)xyz)";\r
+        result = HttpUtils.escapeHttpComment(comment);\r
+        assertEquals(expResult, result);\r
+\r
+        comment = "a\nb";\r
+        expResult = "(a?b)";\r
+        result = HttpUtils.escapeHttpComment(comment);\r
+        assertEquals(expResult, result);\r
+\r
+        comment = "a狼b";\r
+        expResult = "(a?b)";\r
+        result = HttpUtils.escapeHttpComment(comment);\r
+        assertEquals(expResult, result);\r
+\r
+        return;\r
+    }\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/StringUtilsTest.java b/src/test/java/jp/sourceforge/jindolf/StringUtilsTest.java
new file mode 100644 (file)
index 0000000..07d0a9e
--- /dev/null
@@ -0,0 +1,277 @@
+/*\r
+ * StringUtils Test\r
+ *\r
+ * $Id: StringUtilsTest.java 802 2009-08-31 10:28:35Z olyutorskii $\r
+ */\r
+\r
+package jp.sourceforge.jindolf;\r
+\r
+import java.util.regex.Matcher;\r
+import java.util.regex.Pattern;\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class StringUtilsTest {\r
+\r
+    public StringUtilsTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of parseInt method, of class StringUtils.\r
+     */\r
+    @Test\r
+    public void testParseInt_3args_1(){\r
+        System.out.println("parseInt");\r
+\r
+        int result;\r
+        Matcher matcher;\r
+        Pattern pattern;\r
+        String input = "ABC123PQR456XYZ";\r
+\r
+        pattern = Pattern.compile("([0-9]+)[A-Z]*([0-9]+)");\r
+        matcher = pattern.matcher(input);\r
+\r
+        assertTrue(matcher.find());\r
+\r
+        result = StringUtils.parseInt(input, matcher, 1);\r
+        assertEquals(123, result);\r
+\r
+        result = StringUtils.parseInt(input, matcher, 2);\r
+        assertEquals(456, result);\r
+\r
+        try{\r
+            result = StringUtils.parseInt(null, matcher, 1);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+        }\r
+\r
+        try{\r
+            result = StringUtils.parseInt(input, null, 1);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of parseInt method, of class StringUtils.\r
+     */\r
+    @Test\r
+    public void testParseInt_CharSequence(){\r
+        System.out.println("parseInt");\r
+\r
+        int result;\r
+\r
+        try{\r
+            result = StringUtils.parseInt(null);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+        }\r
+\r
+        result = StringUtils.parseInt("");\r
+        assertEquals(0, result);\r
+\r
+        result = StringUtils.parseInt("0");\r
+        assertEquals(0, result);\r
+\r
+        result = StringUtils.parseInt("999");\r
+        assertEquals(999, result);\r
+\r
+        result = StringUtils.parseInt("X");\r
+        assertEquals(0, result);\r
+\r
+        result = StringUtils.parseInt("-1");\r
+        assertEquals(0, result);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of parseInt method, of class StringUtils.\r
+     */\r
+    @Test\r
+    public void testParseInt_3args_2(){\r
+        System.out.println("parseInt");\r
+\r
+        int result;\r
+\r
+        try{\r
+            result = StringUtils.parseInt(null, 1, 3);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+        }\r
+\r
+        result = StringUtils.parseInt("1234567", 2, 5);\r
+        assertEquals(345, result);\r
+\r
+        result = StringUtils.parseInt("1234567", 2, 3);\r
+        assertEquals(3, result);\r
+\r
+        result = StringUtils.parseInt("1234567", 2, 2);\r
+        assertEquals(0, result);\r
+\r
+        result = StringUtils.parseInt("1234567", 2, 1);\r
+        assertEquals(0, result);\r
+\r
+        result = StringUtils.parseInt("1234567", 0, 0);\r
+        assertEquals(0, result);\r
+\r
+        try{\r
+            result = StringUtils.parseInt("1234567", 2, 999);\r
+            fail();\r
+        }catch(StringIndexOutOfBoundsException e){\r
+        }\r
+\r
+        try{\r
+            result = StringUtils.parseInt("1234567", -1, 5);\r
+            fail();\r
+        }catch(StringIndexOutOfBoundsException e){\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of suppressString method, of class StringUtils.\r
+     */\r
+    @Test\r
+    public void testSuppressString(){\r
+        System.out.println("suppressString");\r
+\r
+        CharSequence result;\r
+\r
+        try{\r
+            result = StringUtils.suppressString(null);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+        }\r
+\r
+        result = StringUtils.suppressString("");\r
+        assertEquals("", result);\r
+\r
+        result = StringUtils.suppressString("ABCDE12345");\r
+        assertEquals("ABCDE12345", result);\r
+\r
+        result = StringUtils.suppressString("ABCDEF123456");\r
+        assertEquals("ABCDE…23456", result);\r
+\r
+        result = StringUtils.suppressString(" A\tBCDEF123 4\n5\r6");\r
+        assertEquals("ABCDE…23456", result);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of isTerminated method, of class StringUtils.\r
+     */\r
+    @Test\r
+    public void testIsTerminated(){\r
+        System.out.println("isTerminated");\r
+\r
+        try{\r
+            StringUtils.isTerminated(null, null);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+        }\r
+\r
+        try{\r
+            StringUtils.isTerminated("A", null);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+        }\r
+\r
+        try{\r
+            StringUtils.isTerminated(null, "X");\r
+            fail();\r
+        }catch(NullPointerException e){\r
+        }\r
+\r
+        assertTrue(StringUtils.isTerminated("ABCXYZ", "XYZ"));\r
+        assertTrue(StringUtils.isTerminated("ABCXYZ", ""));\r
+        assertTrue(StringUtils.isTerminated("", ""));\r
+\r
+        assertFalse(StringUtils.isTerminated("ABCXYZ", "PQR"));\r
+        assertFalse(StringUtils.isTerminated("ABC", "ABCXYZ"));\r
+        assertFalse(StringUtils.isTerminated("", "XYZ"));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of compareSubSequence method, of class StringUtils.\r
+     */\r
+    @Test\r
+    public void testCompareSubSequence_6args(){\r
+        System.out.println("compareSubSequence");\r
+\r
+        int result;\r
+\r
+        result = StringUtils.compareSubSequence("ABCDE",1,3,"ABCDE",1,3);\r
+        assertTrue(result == 0);\r
+\r
+        result = StringUtils.compareSubSequence("ABCDE",1,3,"ABXDE",1,3);\r
+        assertTrue(result < 0);\r
+\r
+        result = StringUtils.compareSubSequence("ABXDE",1,3,"ABCDE",1,3);\r
+        assertTrue(result > 0);\r
+\r
+        result = StringUtils.compareSubSequence("ABCDE",1,3,"ABCDE",2,4);\r
+        assertTrue(result < 0);\r
+\r
+        result = StringUtils.compareSubSequence("ABCDE",1,3,"#ABCDE",2,4);\r
+        assertTrue(result == 0);\r
+\r
+        result = StringUtils.compareSubSequence("ABCDE",1,3,"ABCDE",1,4);\r
+        assertTrue(result < 0);\r
+\r
+        result = StringUtils.compareSubSequence("ABCDE",1,4,"ABCDE",1,3);\r
+        assertTrue(result > 0);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of compareSubSequence method, of class StringUtils.\r
+     */\r
+    @Test\r
+    public void testCompareSubSequence_4args(){\r
+        System.out.println("compareSubSequence");\r
+\r
+        int result;\r
+\r
+        result = StringUtils.compareSubSequence("BCD","ABCDE",1,4);\r
+        assertTrue(result == 0);\r
+\r
+        result = StringUtils.compareSubSequence("BXD","ABCDE",1,4);\r
+        assertTrue(result > 0);\r
+\r
+        result = StringUtils.compareSubSequence("BCD","ABXDE",1,4);\r
+        assertTrue(result < 0);\r
+\r
+        return;\r
+    }\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/json/JsArrayTest.java b/src/test/java/jp/sourceforge/jindolf/json/JsArrayTest.java
new file mode 100644 (file)
index 0000000..6228fda
--- /dev/null
@@ -0,0 +1,425 @@
+/*\r
+ * To change this template, choose Tools | Templates\r
+ * and open the template in the editor.\r
+ */\r
+\r
+package jp.sourceforge.jindolf.json;\r
+\r
+import java.io.StringReader;\r
+import java.util.Iterator;\r
+import java.util.LinkedList;\r
+import java.util.List;\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class JsArrayTest {\r
+\r
+    public JsArrayTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of parseArray method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testParseArray() throws Exception{\r
+        System.out.println("parseArray");\r
+\r
+        JsonReader reader;\r
+        JsArray array;\r
+\r
+        reader = new JsonReader(new StringReader("[]"));\r
+        array = JsArray.parseArray(reader);\r
+        assertEquals(0, array.size());\r
+\r
+        reader = new JsonReader(new StringReader("[true]"));\r
+        array = JsArray.parseArray(reader);\r
+        assertEquals(1, array.size());\r
+        assertEquals(JsBoolean.TRUE, array.get(0));\r
+\r
+        reader = new JsonReader(new StringReader("[true,false]"));\r
+        array = JsArray.parseArray(reader);\r
+        assertEquals(2, array.size());\r
+        assertEquals(JsBoolean.TRUE, array.get(0));\r
+        assertEquals(JsBoolean.FALSE, array.get(1));\r
+\r
+        reader = new JsonReader(new StringReader("\n[\rtrue\t, false\n]\r"));\r
+        array = JsArray.parseArray(reader);\r
+        assertEquals(2, array.size());\r
+        assertEquals(JsBoolean.TRUE, array.get(0));\r
+        assertEquals(JsBoolean.FALSE, array.get(1));\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("[,]"));\r
+            array = JsArray.parseArray(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("[true,]"));\r
+            array = JsArray.parseArray(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("[true"));\r
+            array = JsArray.parseArray(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("true]"));\r
+            array = JsArray.parseArray(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of add method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testAdd(){\r
+        System.out.println("add");\r
+\r
+        JsArray array = new JsArray();\r
+\r
+        JsNumber number = new JsNumber("1.23");\r
+        assertEquals(0, array.size());\r
+        array.add(number);\r
+        assertEquals(1, array.size());\r
+        array.add(number);\r
+        assertEquals(2, array.size());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of get method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testGet(){\r
+        System.out.println("get");\r
+\r
+        JsArray array = new JsArray();\r
+\r
+        JsValue val1 = new JsNumber("1.23");\r
+        JsValue val2 = new JsString("abc");\r
+\r
+        array.add(val1);\r
+        array.add(val2);\r
+\r
+        assertEquals(val1, array.get(0));\r
+        assertEquals(val2, array.get(1));\r
+\r
+        try{\r
+            array.get(2);\r
+            fail();\r
+        }catch(IndexOutOfBoundsException e){\r
+            // NOTHING\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of clear method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testClear(){\r
+        System.out.println("clear");\r
+\r
+        JsArray array = new JsArray();\r
+\r
+        JsValue val1 = new JsNumber("1.23");\r
+        JsValue val2 = new JsString("abc");\r
+\r
+        array.add(val1);\r
+        array.add(val2);\r
+        assertEquals(2, array.size());\r
+\r
+        array.clear();\r
+        assertEquals(0, array.size());\r
+\r
+        try{\r
+            array.get(0);\r
+            fail();\r
+        }catch(IndexOutOfBoundsException e){\r
+            // NOTHING\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of remove method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testRemove(){\r
+        System.out.println("remove");\r
+\r
+        JsArray array = new JsArray();\r
+\r
+        JsValue val1 = new JsNumber("1.23");\r
+        JsValue val2 = new JsString("abc");\r
+        JsValue val3 = JsBoolean.TRUE;\r
+\r
+        array.add(val1);\r
+        array.add(val2);\r
+        assertEquals(2, array.size());\r
+\r
+        assertTrue(array.remove(val1));\r
+        assertEquals(1, array.size());\r
+        assertEquals(val2, array.get(0));\r
+\r
+        assertFalse(array.remove(val3));\r
+        assertEquals(1, array.size());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of size method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testSize(){\r
+        System.out.println("size");\r
+\r
+        JsArray array = new JsArray();\r
+        assertEquals(0, array.size());\r
+\r
+        JsValue val1 = new JsNumber("1.23");\r
+\r
+        array.add(val1);\r
+        assertEquals(1, array.size());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of iterator method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testIterator(){\r
+        System.out.println("iterator");\r
+\r
+        JsArray array = new JsArray();\r
+\r
+        JsValue val1 = new JsNumber("1.23");\r
+        JsValue val2 = new JsString("abc");\r
+\r
+        array.add(val1);\r
+        array.add(val2);\r
+\r
+        Iterator<JsValue> it = array.iterator();\r
+\r
+        assertTrue(it.hasNext());\r
+        assertEquals(val1, it.next());\r
+\r
+        assertTrue(it.hasNext());\r
+        assertEquals(val2, it.next());\r
+\r
+        assertFalse(it.hasNext());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hashCode method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testHashCode(){\r
+        System.out.println("hashCode");\r
+\r
+        JsArray array1 = new JsArray();\r
+        JsArray array2 = new JsArray();\r
+\r
+        assertEquals(array1.hashCode(), array2.hashCode());\r
+\r
+        array1.add(new JsString("abc"));\r
+        array2.add(new JsString("abc"));\r
+\r
+        assertEquals(array1.hashCode(), array2.hashCode());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of equals method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testEquals(){\r
+        System.out.println("equals");\r
+\r
+        JsArray array1 = new JsArray();\r
+        JsArray array2 = new JsArray();\r
+\r
+        assertTrue(array1.equals(array2));\r
+\r
+        array1.add(new JsString("abc"));\r
+        array2.add(new JsString("abc"));\r
+\r
+        assertTrue(array1.equals(array2));\r
+\r
+        array1.add(new JsString("xyz"));\r
+        array2.add(new JsString("XYZ"));\r
+\r
+        assertFalse(array1.equals(array2));\r
+\r
+        assertFalse(array1.equals(null));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of toString method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testToString(){\r
+        System.out.println("toString");\r
+\r
+        JsArray array = new JsArray();\r
+\r
+        assertEquals("[]", array.toString());\r
+\r
+        array.add(JsBoolean.TRUE);\r
+        assertEquals("[true]", array.toString());\r
+\r
+        array.add(JsBoolean.FALSE);\r
+        assertEquals("[true,false]", array.toString());\r
+\r
+        array.add(new JsArray());\r
+        assertEquals("[true,false,[]]", array.toString());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of traverse method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testTraverse() throws Exception{\r
+        System.out.println("traverse");\r
+\r
+        JsArray array = new JsArray();\r
+        JsValue val1 = new JsNumber("12");\r
+        JsValue val2 = new JsString("AB");\r
+        array.add(val1);\r
+        array.add(val2);\r
+\r
+        final List<Object> visited = new LinkedList<Object>();\r
+\r
+        try{\r
+            array.traverse(new ValueVisitor(){\r
+                public void visitValue(JsValue value)\r
+                        throws JsVisitException{\r
+                    visited.add(value);\r
+                    return;\r
+                }\r
+\r
+                public void visitPairName(String name)\r
+                        throws JsVisitException{\r
+                    visited.add(name);\r
+                    return;\r
+                }\r
+\r
+                public void visitCollectionClose(JsValue composite)\r
+                        throws JsVisitException{\r
+                    visited.add(composite);\r
+                    return;\r
+                }\r
+            });\r
+        }catch(JsVisitException e){\r
+            fail();\r
+        }\r
+\r
+        assertEquals(4, visited.size());\r
+        assertEquals(array, visited.get(0));\r
+        assertEquals(val1, visited.get(1));\r
+        assertEquals(val2, visited.get(2));\r
+        assertEquals(array, visited.get(3));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hasChanged method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testHasChanged(){\r
+        System.out.println("hasChanged");\r
+\r
+        JsArray array = new JsArray();\r
+        assertFalse(array.hasChanged());\r
+\r
+        array.add(new JsNumber("0"));\r
+        assertTrue(array.hasChanged());\r
+\r
+        array.setUnchanged();\r
+        assertFalse(array.hasChanged());\r
+\r
+        JsArray child = new JsArray();\r
+        array.add(child);\r
+        array.setUnchanged();\r
+        assertFalse(array.hasChanged());\r
+\r
+        child.add(JsNull.NULL);\r
+        assertTrue(array.hasChanged());\r
+        array.setUnchanged();\r
+        assertFalse(array.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of setUnchanged method, of class JsArray.\r
+     */\r
+    @Test\r
+    public void testSetUnchanged(){\r
+        System.out.println("setUnchanged");\r
+\r
+        JsArray array = new JsArray();\r
+        JsArray child = new JsArray();\r
+        array.add(child);\r
+\r
+        child.add(JsNull.NULL);\r
+        assertTrue(child.hasChanged());\r
+\r
+        array.setUnchanged();\r
+        assertFalse(child.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/json/JsBooleanTest.java b/src/test/java/jp/sourceforge/jindolf/json/JsBooleanTest.java
new file mode 100644 (file)
index 0000000..eb1b5c5
--- /dev/null
@@ -0,0 +1,272 @@
+/*\r
+ * To change this template, choose Tools | Templates\r
+ * and open the template in the editor.\r
+ */\r
+\r
+package jp.sourceforge.jindolf.json;\r
+\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class JsBooleanTest {\r
+\r
+    public JsBooleanTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of traverse method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testTraverse(){\r
+        System.out.println("traverse");\r
+\r
+        try{\r
+            JsBoolean.TRUE.traverse(new ValueVisitor(){\r
+                int ct = 0;\r
+\r
+                public void visitValue(JsValue value)\r
+                        throws JsVisitException{\r
+                    assertEquals(JsBoolean.TRUE, value);\r
+                    assertTrue(this.ct++ <= 0);\r
+                }\r
+\r
+                public void visitPairName(String name)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+\r
+                public void visitCollectionClose(JsValue composite)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+            });\r
+        }catch(JsVisitException e){\r
+            fail();\r
+        }\r
+\r
+        try{\r
+            JsBoolean.FALSE.traverse(new ValueVisitor(){\r
+                int ct = 0;\r
+\r
+                public void visitValue(JsValue value)\r
+                        throws JsVisitException{\r
+                    assertEquals(JsBoolean.FALSE, value);\r
+                    assertTrue(this.ct++ <= 0);\r
+                }\r
+\r
+                public void visitPairName(String name)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+\r
+                public void visitCollectionClose(JsValue composite)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+            });\r
+        }catch(JsVisitException e){\r
+            fail();\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hasChanged method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testHasChanged(){\r
+        System.out.println("hasChanged");\r
+\r
+        assertFalse(JsBoolean.TRUE.hasChanged());\r
+        JsBoolean.TRUE.setUnchanged();\r
+        assertFalse(JsBoolean.TRUE.hasChanged());\r
+\r
+        assertFalse(JsBoolean.FALSE.hasChanged());\r
+        JsBoolean.FALSE.setUnchanged();\r
+        assertFalse(JsBoolean.FALSE.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of setUnchanged method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testSetUnchanged(){\r
+        System.out.println("setUnchanged");\r
+\r
+        JsBoolean.TRUE.setUnchanged();\r
+        assertFalse(JsBoolean.TRUE.hasChanged());\r
+\r
+        JsBoolean.FALSE.setUnchanged();\r
+        assertFalse(JsBoolean.FALSE.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of valueOf method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testValueOf(){\r
+        System.out.println("valueOf");\r
+        assertEquals(JsBoolean.TRUE, JsBoolean.valueOf(true));\r
+        assertEquals(JsBoolean.FALSE, JsBoolean.valueOf(false));\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of booleanValue method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testBooleanValue(){\r
+        System.out.println("booleanValue");\r
+        assertTrue(JsBoolean.TRUE.booleanValue());\r
+        assertFalse(JsBoolean.FALSE.booleanValue());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of isTrue method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testIsTrue(){\r
+        System.out.println("isTrue");\r
+        assertTrue(JsBoolean.TRUE.isTrue());\r
+        assertFalse(JsBoolean.FALSE.isTrue());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of isFalse method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testIsFalse(){\r
+        System.out.println("isFalse");\r
+        assertFalse(JsBoolean.TRUE.isFalse());\r
+        assertTrue(JsBoolean.FALSE.isFalse());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hashCode method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testHashCode(){\r
+        System.out.println("hashCode");\r
+        // NOTHING\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of equals method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testEquals(){\r
+        System.out.println("equals");\r
+\r
+        assertTrue(JsBoolean.TRUE.equals(JsBoolean.TRUE));\r
+        assertFalse(JsBoolean.TRUE.equals(JsBoolean.FALSE));\r
+//        assertFalse(JsBoolean.TRUE.equals(JsNull.NULL));\r
+        assertFalse(JsBoolean.TRUE.equals(null));\r
+\r
+        assertFalse(JsBoolean.FALSE.equals(JsBoolean.TRUE));\r
+        assertTrue(JsBoolean.FALSE.equals(JsBoolean.FALSE));\r
+//        assertFalse(JsBoolean.TRUE.equals(JsNull.NULL));\r
+        assertFalse(JsBoolean.FALSE.equals(null));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of compareTo method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testCompareTo(){\r
+        System.out.println("compareTo");\r
+        assertEquals(0, JsBoolean.TRUE.compareTo(JsBoolean.TRUE));\r
+        assertEquals(0, JsBoolean.FALSE.compareTo(JsBoolean.FALSE));\r
+        assertTrue(0 > JsBoolean.TRUE.compareTo(JsBoolean.FALSE));\r
+        assertTrue(0 < JsBoolean.FALSE.compareTo(JsBoolean.TRUE));\r
+\r
+        try{\r
+            JsBoolean.TRUE.compareTo(null);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            JsBoolean.FALSE.compareTo(null);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+            // NOTHING\r
+        }\r
+\r
+        SortedSet<JsBoolean> set = new TreeSet<JsBoolean>();\r
+\r
+        set.clear();\r
+        set.add(JsBoolean.TRUE);\r
+        set.add(JsBoolean.FALSE);\r
+        assertEquals(JsBoolean.TRUE, set.first());\r
+        assertEquals(JsBoolean.FALSE, set.last());\r
+        set.clear();\r
+        set.add(JsBoolean.FALSE);\r
+        set.add(JsBoolean.TRUE);\r
+        assertEquals(JsBoolean.TRUE, set.first());\r
+        assertEquals(JsBoolean.FALSE, set.last());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of toString method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testToString(){\r
+        System.out.println("toString");\r
+        assertEquals("true", JsBoolean.TRUE.toString());\r
+        assertEquals("false", JsBoolean.FALSE.toString());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of toString method, of class JsBoolean.\r
+     */\r
+    @Test\r
+    public void testEtc(){\r
+        System.out.println("etc.");\r
+        assertNotNull(JsBoolean.TRUE);\r
+        assertNotNull(JsBoolean.FALSE);\r
+        assertTrue(JsBoolean.TRUE instanceof JsBoolean);\r
+        assertTrue(JsBoolean.FALSE instanceof JsBoolean);\r
+        return;\r
+    }\r
+\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/json/JsNullTest.java b/src/test/java/jp/sourceforge/jindolf/json/JsNullTest.java
new file mode 100644 (file)
index 0000000..f47ce4a
--- /dev/null
@@ -0,0 +1,131 @@
+/*\r
+ * To change this template, choose Tools | Templates\r
+ * and open the template in the editor.\r
+ */\r
+\r
+package jp.sourceforge.jindolf.json;\r
+\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class JsNullTest {\r
+\r
+    public JsNullTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of etc of class JsNull.\r
+     */\r
+    @Test\r
+    public void testEtc(){\r
+        System.out.println("etc");\r
+        assertNotNull(JsNull.NULL);\r
+        assertTrue(JsNull.NULL instanceof JsNull);\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hasChanged method, of class JsNull.\r
+     */\r
+    @Test\r
+    public void testHasChanged(){\r
+        System.out.println("hasChanged");\r
+        assertFalse(JsNull.NULL.hasChanged());\r
+        JsNull.NULL.setUnchanged();\r
+        assertFalse(JsNull.NULL.hasChanged());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of setUnchanged method, of class JsNull.\r
+     */\r
+    @Test\r
+    public void testSetUnchanged(){\r
+        System.out.println("setUnchanged");\r
+        JsNull.NULL.setUnchanged();\r
+        assertFalse(JsNull.NULL.hasChanged());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of traverse method, of class JsNull.\r
+     */\r
+    @Test\r
+    public void testTraverse(){\r
+        System.out.println("traverse");\r
+        try{\r
+            JsNull.NULL.traverse(new ValueVisitor(){\r
+                int ct = 0;\r
+\r
+                public void visitValue(JsValue value)\r
+                        throws JsVisitException{\r
+                    assertEquals(JsNull.NULL, value);\r
+                    assertTrue(this.ct++ <= 0);\r
+                }\r
+\r
+                public void visitPairName(String name)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+\r
+                public void visitCollectionClose(JsValue composite)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+            });\r
+        }catch(JsVisitException e){\r
+            fail();\r
+        }\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of compareTo method, of class JsNull.\r
+     */\r
+    @Test\r
+    public void testCompareTo(){\r
+        System.out.println("compareTo");\r
+        assertEquals(0, JsNull.NULL.compareTo(JsNull.NULL));\r
+        try{\r
+            JsNull.NULL.compareTo(null);\r
+            fail();\r
+        }catch(NullPointerException e){\r
+            // NOTHING\r
+        }\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of toString method, of class JsNull.\r
+     */\r
+    @Test\r
+    public void testToString(){\r
+        System.out.println("toString");\r
+        assertEquals("null", JsNull.NULL.toString());\r
+        return;\r
+    }\r
+\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/json/JsNumberTest.java b/src/test/java/jp/sourceforge/jindolf/json/JsNumberTest.java
new file mode 100644 (file)
index 0000000..7ad2b7d
--- /dev/null
@@ -0,0 +1,471 @@
+/*\r
+ * To change this template, choose Tools | Templates\r
+ * and open the template in the editor.\r
+ */\r
+\r
+package jp.sourceforge.jindolf.json;\r
+\r
+import java.io.StringReader;\r
+import java.math.BigDecimal;\r
+import java.math.BigInteger;\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class JsNumberTest {\r
+\r
+    public JsNumberTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of parseNumber method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testParseNumber() throws Exception{\r
+        System.out.println("parseNumber");\r
+\r
+        JsonReader reader;\r
+        JsNumber number;\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("0"));\r
+            number = JsNumber.parseNumber(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        reader = new JsonReader(new StringReader("0,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("0", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("\n\r\t\u00200,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("0", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("-0,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("0", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("12,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("12", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("-12,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("-12", number.toString());\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("+12,"));\r
+            number = JsNumber.parseNumber(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("12.,"));\r
+            number = JsNumber.parseNumber(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        reader = new JsonReader(new StringReader("12.34,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("12.34", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("12.0,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("12.0", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("12.00,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("12.00", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("12.003,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("12.003", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("12.0030,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("12.0030", number.toString());\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("09,"));\r
+            number = JsNumber.parseNumber(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        reader = new JsonReader(new StringReader("12e34,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("1.2E+35", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("12E34,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("1.2E+35", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("12e+34,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("1.2E+35", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("12e-34,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("1.2E-33", number.toString());\r
+\r
+        reader = new JsonReader(new StringReader("12e0034,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("1.2E+35", number.toString());\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("12e,"));\r
+            number = JsNumber.parseNumber(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("12e+,"));\r
+            number = JsNumber.parseNumber(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("12e-,"));\r
+            number = JsNumber.parseNumber(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        reader = new JsonReader(new StringReader("-12.34e-056,"));\r
+        number = JsNumber.parseNumber(reader);\r
+        assertEquals("-1.234E-55", number.toString());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of constructor, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testConstructors() throws Exception{\r
+        System.out.println("constructor");\r
+\r
+        JsNumber number;\r
+        BigDecimal decimal;\r
+\r
+        number = new JsNumber(99L);\r
+        decimal = number.getBigDecimal();\r
+        assertEquals(new BigInteger("99"), decimal.unscaledValue());\r
+        assertEquals(0, decimal.scale());\r
+\r
+        number = new JsNumber(99.0);\r
+        decimal = number.getBigDecimal();\r
+        assertEquals(new BigInteger("990"), decimal.unscaledValue());\r
+        assertEquals(1, decimal.scale());\r
+\r
+        number = new JsNumber(new BigInteger("99"));\r
+        decimal = number.getBigDecimal();\r
+        assertEquals(new BigInteger("99"), decimal.unscaledValue());\r
+        assertEquals(0, decimal.scale());\r
+\r
+        number = new JsNumber("99.9");\r
+        decimal = number.getBigDecimal();\r
+        assertEquals(new BigInteger("999"), decimal.unscaledValue());\r
+        assertEquals(1, decimal.scale());\r
+\r
+        number = new JsNumber(new BigDecimal("99.9"));\r
+        decimal = number.getBigDecimal();\r
+        assertEquals(new BigInteger("999"), decimal.unscaledValue());\r
+        assertEquals(1, decimal.scale());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of traverse method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testTraverse(){\r
+        System.out.println("traverse");\r
+\r
+        JsNumber number = new JsNumber("0");\r
+\r
+        try{\r
+            number.traverse(new ValueVisitor(){\r
+                int ct = 0;\r
+\r
+                public void visitValue(JsValue value)\r
+                        throws JsVisitException{\r
+                    assertEquals(new JsNumber("0"), value);\r
+                    assertTrue(this.ct++ <= 0);\r
+                }\r
+\r
+                public void visitPairName(String name)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+\r
+                public void visitCollectionClose(JsValue composite)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+            });\r
+        }catch(JsVisitException e){\r
+            fail();\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hasChanged method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testHasChanged(){\r
+        System.out.println("hasChanged");\r
+\r
+        JsNumber number = new JsNumber("0");\r
+\r
+        assertFalse(number.hasChanged());\r
+        number.setUnchanged();\r
+        assertFalse(number.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of setUnchanged method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testSetUnchanged(){\r
+        System.out.println("setUnchanged");\r
+\r
+        JsNumber number = new JsNumber("0");\r
+\r
+        number.setUnchanged();\r
+        assertFalse(number.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of getBigDecimal method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testGetBigDecimal(){\r
+        System.out.println("getBigDecimal");\r
+\r
+        JsNumber number = new JsNumber("-123.456e+1");\r
+        BigDecimal decimal = number.getBigDecimal();\r
+\r
+        assertEquals(new BigDecimal("-123.456e+1"), decimal);\r
+        assertEquals(2, decimal.scale());\r
+        assertEquals(new BigInteger("-123456"), decimal.unscaledValue());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of intValue method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testIntValue(){\r
+        System.out.println("intValue");\r
+\r
+        assertEquals(0, new JsNumber("0").intValue());\r
+        assertEquals(99, new JsNumber("99.9").intValue());\r
+        assertEquals(-99, new JsNumber("-99.9").intValue());\r
+        assertEquals(2147483647, new JsNumber("2147483647").intValue());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of longValue method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testLongValue(){\r
+        System.out.println("longValue");\r
+\r
+        assertEquals(0L, new JsNumber("0").longValue());\r
+        assertEquals(99L, new JsNumber("99.9").longValue());\r
+        assertEquals(-99L, new JsNumber("-99.9").longValue());\r
+        assertEquals(999999999999L, new JsNumber("999999999999").longValue());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of floatValue method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testFloatValue(){\r
+        System.out.println("floatValue");\r
+\r
+        assertEquals(1.25f, new JsNumber("1.25").floatValue(), 0.0);\r
+        assertEquals(1.25f, new JsNumber("125E-2").floatValue(), 0.0);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of doubleValue method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testDoubleValue(){\r
+        System.out.println("doubleValue");\r
+\r
+        assertEquals(1.25, new JsNumber("1.25").doubleValue(), 0.0);\r
+        assertEquals(1.25, new JsNumber("125E-2").doubleValue(), 0.0);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hashCode method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testHashCode(){\r
+        System.out.println("hashCode");\r
+\r
+        assertEquals(new JsNumber("1").hashCode(), new JsNumber("1").hashCode());\r
+        assertEquals(new JsNumber("1.23").hashCode(), new JsNumber("123e-2").hashCode());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of equals method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testEquals(){\r
+        System.out.println("equals");\r
+\r
+        assertTrue(new JsNumber("1").equals(new JsNumber("1")));\r
+        assertFalse(new JsNumber("1").equals(new JsNumber("2")));\r
+        assertFalse(new JsNumber("1").equals(null));\r
+\r
+        assertTrue(new JsNumber("1.23").equals(new JsNumber("123e-2")));\r
+        assertFalse(new JsNumber("1.0").equals(new JsNumber("1.00")));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of compareTo method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testCompareTo(){\r
+        System.out.println("compareTo");\r
+\r
+        assertTrue(0 > new JsNumber("-1").compareTo(new JsNumber("1")));\r
+        assertTrue(0 < new JsNumber("1").compareTo(new JsNumber("-1")));\r
+        assertTrue(new JsNumber("1").compareTo(new JsNumber("1")) == 0);\r
+\r
+        assertTrue(0 > new JsNumber("1").compareTo(new JsNumber("2")));\r
+        assertTrue(0 < new JsNumber("9").compareTo(new JsNumber("8")));\r
+\r
+        assertTrue(new JsNumber("1.23").compareTo(new JsNumber("123e-2")) == 0);\r
+        assertTrue(new JsNumber("1.0").compareTo(new JsNumber("1.00")) == 0);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of toString method, of class JsNumber.\r
+     */\r
+    @Test\r
+    public void testToString(){\r
+        System.out.println("toString");\r
+\r
+        JsNumber number;\r
+\r
+        number = new JsNumber("0");\r
+        assertEquals("0", number.toString());\r
+        number = new JsNumber("+0");\r
+        assertEquals("0", number.toString());\r
+        number = new JsNumber("-0");\r
+        assertEquals("0", number.toString());\r
+\r
+        number = new JsNumber("1");\r
+        assertEquals("1", number.toString());\r
+        number = new JsNumber("+1");\r
+        assertEquals("1", number.toString());\r
+        number = new JsNumber("-1");\r
+        assertEquals("-1", number.toString());\r
+\r
+        number = new JsNumber("0.0");\r
+        assertEquals("0.0", number.toString());\r
+\r
+        number = new JsNumber("1.0");\r
+        assertEquals("1.0", number.toString());\r
+\r
+        number = new JsNumber("1.00");\r
+        assertEquals("1.00", number.toString());\r
+\r
+        number = new JsNumber("0.1");\r
+        assertEquals("0.1", number.toString());\r
+\r
+        number = new JsNumber("0.10");\r
+        assertEquals("0.10", number.toString());\r
+\r
+        number = new JsNumber("0.000001");\r
+        assertEquals("0.000001", number.toString());\r
+\r
+        number = new JsNumber("0.0000001");\r
+        assertEquals("1E-7", number.toString());\r
+\r
+        number = new JsNumber("123e0");\r
+        assertEquals("123", number.toString());\r
+\r
+        number = new JsNumber("123e1");\r
+        assertEquals("1.23E+3", number.toString());\r
+\r
+        number = new JsNumber("123E1");\r
+        assertEquals("1.23E+3", number.toString());\r
+\r
+        number = new JsNumber("123e+1");\r
+        assertEquals("1.23E+3", number.toString());\r
+\r
+        number = new JsNumber("123e-1");\r
+        assertEquals("12.3", number.toString());\r
+\r
+        number = new JsNumber("123e-8");\r
+        assertEquals("0.00000123", number.toString());\r
+\r
+        number = new JsNumber("123e-9");\r
+        assertEquals("1.23E-7", number.toString());\r
+\r
+        return;\r
+    }\r
+\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/json/JsObjectTest.java b/src/test/java/jp/sourceforge/jindolf/json/JsObjectTest.java
new file mode 100644 (file)
index 0000000..c334cc6
--- /dev/null
@@ -0,0 +1,464 @@
+/*\r
+ * To change this template, choose Tools | Templates\r
+ * and open the template in the editor.\r
+ */\r
+\r
+package jp.sourceforge.jindolf.json;\r
+\r
+import java.io.StringReader;\r
+import java.util.Iterator;\r
+import java.util.LinkedList;\r
+import java.util.List;\r
+import java.util.Set;\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class JsObjectTest {\r
+\r
+    public JsObjectTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of parseObject method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testParseObject() throws Exception{\r
+        System.out.println("parseObject");\r
+\r
+        JsonReader reader;\r
+        JsObject object;\r
+\r
+        reader = new JsonReader(new StringReader("{}"));\r
+        object = JsObject.parseObject(reader);\r
+        assertEquals(0, object.size());\r
+\r
+        reader = new JsonReader(new StringReader("{\"A\":true}"));\r
+        object = JsObject.parseObject(reader);\r
+        assertEquals(1, object.size());\r
+        assertEquals(JsBoolean.TRUE, object.getPair("A").getValue());\r
+\r
+        reader = new JsonReader(new StringReader("{\"A\":true,\"B\":false}"));\r
+        object = JsObject.parseObject(reader);\r
+        assertEquals(2, object.size());\r
+        assertEquals(JsBoolean.TRUE, object.getPair("A").getValue());\r
+        assertEquals(JsBoolean.FALSE, object.getPair("B").getValue());\r
+\r
+        reader = new JsonReader(new StringReader("\n{\r\"A\"\t: true,\"B\":false\n}\r"));\r
+        object = JsObject.parseObject(reader);\r
+        assertEquals(2, object.size());\r
+        assertEquals(JsBoolean.TRUE, object.getPair("A").getValue());\r
+        assertEquals(JsBoolean.FALSE, object.getPair("B").getValue());\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("{,}"));\r
+            object = JsObject.parseObject(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("{true,}"));\r
+            object = JsObject.parseObject(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("{true"));\r
+            object = JsObject.parseObject(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("true}"));\r
+            object = JsObject.parseObject(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of putValue method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testPutGetValue(){\r
+        System.out.println("putValue");\r
+\r
+        JsObject object = new JsObject();\r
+        assertEquals(0, object.size());\r
+\r
+        object.putValue("x", JsNull.NULL);\r
+        assertEquals(1, object.size());\r
+        assertEquals(JsNull.NULL, object.getValue("x"));\r
+        assertEquals(null, object.getValue("y"));\r
+\r
+        object.putValue("y", JsBoolean.TRUE);\r
+        assertEquals(2, object.size());\r
+        assertEquals(JsBoolean.TRUE, object.getValue("y"));\r
+\r
+        object.putValue("x", JsBoolean.FALSE);\r
+        assertEquals(2, object.size());\r
+        assertEquals(JsBoolean.FALSE, object.getValue("x"));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of putPair method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testPutGetPair(){\r
+        System.out.println("putPair");\r
+\r
+        JsObject object = new JsObject();\r
+        assertEquals(0, object.size());\r
+\r
+        JsPair pair = new JsPair("x", JsNull.NULL);\r
+        object.putPair(pair);\r
+        assertEquals(1, object.size());\r
+        assertEquals(JsNull.NULL, object.getValue("x"));\r
+\r
+        JsPair pair2 = object.getPair("x");\r
+        assertNotNull(pair2);\r
+        assertEquals("x", pair2.getName());\r
+        assertEquals(JsNull.NULL, pair2.getValue());\r
+\r
+        assertNull(object.getPair("y"));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of clear method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testClear(){\r
+        System.out.println("clear");\r
+\r
+        JsObject object = new JsObject();\r
+        assertEquals(0, object.size());\r
+\r
+        object.putValue("x", JsNull.NULL);\r
+        assertEquals(1, object.size());\r
+\r
+        object.clear();\r
+        assertEquals(0, object.size());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of remove method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testRemove(){\r
+        System.out.println("remove");\r
+\r
+        JsObject object = new JsObject();\r
+\r
+        object.putValue("x", JsNull.NULL);\r
+        assertEquals(1, object.size());\r
+\r
+        assertNotNull(object.getValue("x"));\r
+\r
+        assertEquals(JsNull.NULL, object.remove("x"));\r
+        assertEquals(0, object.size());\r
+        assertNull(object.getValue("x"));\r
+\r
+        assertNull(object.remove("y"));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of nameSet method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testNameSet(){\r
+        System.out.println("nameSet");\r
+\r
+        JsObject object = new JsObject();\r
+        Set<String> set;\r
+\r
+        set = object.nameSet();\r
+        assertEquals(0, set.size());\r
+\r
+        object.putValue("y", JsNull.NULL);\r
+        object.putValue("z", JsNull.NULL);\r
+        object.putValue("x", JsNull.NULL);\r
+\r
+        set = object.nameSet();\r
+        assertEquals(3, set.size());\r
+        Object[] names = set.toArray();\r
+\r
+        assertEquals("x", names[0]);\r
+        assertEquals("y", names[1]);\r
+        assertEquals("z", names[2]);\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of getPairList method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testGetPairList(){\r
+        System.out.println("getPairList");\r
+\r
+        JsObject object = new JsObject();\r
+        List<JsPair> list;\r
+\r
+        list = object.getPairList();\r
+        assertEquals(0, list.size());\r
+\r
+        object.putValue("y", JsNull.NULL);\r
+        object.putValue("z", JsBoolean.TRUE);\r
+        object.putValue("x", JsBoolean.FALSE);\r
+\r
+        list = object.getPairList();\r
+        assertEquals(3, list.size());\r
+\r
+        assertEquals("x", list.get(0).getName());\r
+        assertEquals("y", list.get(1).getName());\r
+        assertEquals("z", list.get(2).getName());\r
+        assertEquals(JsBoolean.FALSE, list.get(0).getValue());\r
+        assertEquals(JsNull.NULL, list.get(1).getValue());\r
+        assertEquals(JsBoolean.TRUE, list.get(2).getValue());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of iterator method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testIterator(){\r
+        System.out.println("iterator");\r
+\r
+        JsObject object = new JsObject();\r
+        object.putValue("y", JsBoolean.FALSE);\r
+        object.putValue("x", JsBoolean.TRUE);\r
+\r
+        Iterator<JsPair> it = object.iterator();\r
+\r
+        assertTrue(it.hasNext());\r
+        assertEquals(JsBoolean.TRUE, it.next().getValue());\r
+        assertTrue(it.hasNext());\r
+        assertEquals(JsBoolean.FALSE, it.next().getValue());\r
+        assertFalse(it.hasNext());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of size method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testSize(){\r
+        System.out.println("size");\r
+\r
+        JsObject object = new JsObject();\r
+        assertEquals(0, object.size());\r
+        object.putValue("x", JsBoolean.TRUE);\r
+        assertEquals(1, object.size());\r
+        object.putValue("y", JsBoolean.FALSE);\r
+        assertEquals(2, object.size());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hashCode method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testHashCode(){\r
+        System.out.println("hashCode");\r
+\r
+        JsObject obj1 = new JsObject();\r
+        JsObject obj2 = new JsObject();\r
+        assertEquals(obj1.hashCode(), obj2.hashCode());\r
+\r
+        obj1.putValue("x", new JsNumber("99"));\r
+        obj2.putValue("x", new JsNumber("99"));\r
+        assertEquals(obj1.hashCode(), obj2.hashCode());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of equals method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testEquals(){\r
+        System.out.println("equals");\r
+\r
+        JsObject obj1 = new JsObject();\r
+        JsObject obj2 = new JsObject();\r
+        assertTrue(obj1.equals(obj2));\r
+\r
+        obj1.putValue("x", new JsNumber("99"));\r
+        obj2.putValue("x", new JsNumber("99"));\r
+        assertTrue(obj1.equals(obj2));\r
+\r
+        obj1.putValue("x", new JsNumber("99"));\r
+        obj2.putValue("x", new JsNumber("999"));\r
+        assertFalse(obj1.equals(obj2));\r
+\r
+        assertFalse(obj1.equals(null));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of toString method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testToString(){\r
+        System.out.println("toString");\r
+\r
+        JsObject object = new JsObject();\r
+\r
+        assertEquals("{}", object.toString());\r
+\r
+        object.putValue("x", JsBoolean.TRUE);\r
+        assertEquals("{\"x\":true}", object.toString());\r
+\r
+        object.putValue("y", JsBoolean.FALSE);\r
+        assertEquals("{\"x\":true,\"y\":false}", object.toString());\r
+\r
+        object.putValue("z", new JsObject());\r
+        assertEquals("{\"x\":true,\"y\":false,\"z\":{}}", object.toString());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of traverse method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testTraverse() throws Exception{\r
+        System.out.println("traverse");\r
+\r
+        JsObject obj = new JsObject();\r
+        JsValue val1 = new JsNumber("12");\r
+        JsValue val2 = new JsString("AB");\r
+        obj.putValue("x", val1);\r
+        obj.putValue("y", val2);\r
+\r
+        final List<Object> visited = new LinkedList<Object>();\r
+\r
+        try{\r
+            obj.traverse(new ValueVisitor(){\r
+                public void visitValue(JsValue value)\r
+                        throws JsVisitException{\r
+                    visited.add(value);\r
+                    return;\r
+                }\r
+\r
+                public void visitPairName(String name)\r
+                        throws JsVisitException{\r
+                    visited.add(name);\r
+                    return;\r
+                }\r
+\r
+                public void visitCollectionClose(JsValue composite)\r
+                        throws JsVisitException{\r
+                    visited.add(composite);\r
+                    return;\r
+                }\r
+            });\r
+        }catch(JsVisitException e){\r
+            fail();\r
+        }\r
+\r
+        assertEquals(6, visited.size());\r
+        assertEquals(obj, visited.get(0));\r
+        assertEquals("x", visited.get(1));\r
+        assertEquals(val1, visited.get(2));\r
+        assertEquals("y", visited.get(3));\r
+        assertEquals(val2, visited.get(4));\r
+        assertEquals(obj, visited.get(5));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hasChanged method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testHasChanged(){\r
+        System.out.println("hasChanged");\r
+\r
+        JsObject obj = new JsObject();\r
+        assertFalse(obj.hasChanged());\r
+\r
+        obj.putValue("x", JsNull.NULL);\r
+        assertTrue(obj.hasChanged());\r
+\r
+        obj.setUnchanged();\r
+        assertFalse(obj.hasChanged());\r
+\r
+        JsObject child = new JsObject();\r
+        obj.putValue("y", child);\r
+        obj.setUnchanged();\r
+        assertFalse(obj.hasChanged());\r
+\r
+        child.putValue("z", JsBoolean.TRUE);\r
+        assertTrue(obj.hasChanged());\r
+        obj.setUnchanged();\r
+        assertFalse(obj.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of setUnchanged method, of class JsObject.\r
+     */\r
+    @Test\r
+    public void testSetUnchanged(){\r
+        System.out.println("setUnchanged");\r
+\r
+        JsObject obj = new JsObject();\r
+        JsObject child = new JsObject();\r
+        obj.putValue("x", child);\r
+\r
+        child.putValue("y", JsNull.NULL);\r
+        assertTrue(child.hasChanged());\r
+\r
+        obj.setUnchanged();\r
+        assertFalse(child.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/json/JsPairTest.java b/src/test/java/jp/sourceforge/jindolf/json/JsPairTest.java
new file mode 100644 (file)
index 0000000..9d28bc5
--- /dev/null
@@ -0,0 +1,105 @@
+/*\r
+ * To change this template, choose Tools | Templates\r
+ * and open the template in the editor.\r
+ */\r
+\r
+package jp.sourceforge.jindolf.json;\r
+\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class JsPairTest {\r
+\r
+    public JsPairTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of getName method, of class JsPair.\r
+     */\r
+    @Test\r
+    public void testGetName(){\r
+        System.out.println("getName");\r
+\r
+        JsPair pair;\r
+\r
+        pair = new JsPair("", JsNull.NULL);\r
+        assertEquals("", pair.getName());\r
+\r
+        pair = new JsPair("a", JsNull.NULL);\r
+        assertEquals("a", pair.getName());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of getValue method, of class JsPair.\r
+     */\r
+    @Test\r
+    public void testGetValue(){\r
+        System.out.println("getValue");\r
+\r
+        JsPair pair;\r
+\r
+        pair = new JsPair("x", JsNull.NULL);\r
+        assertEquals(JsNull.NULL, pair.getValue());\r
+\r
+        pair = new JsPair("x", "abc");\r
+        assertEquals(new JsString("abc"), pair.getValue());\r
+\r
+        pair = new JsPair("x", true);\r
+        assertEquals(JsBoolean.TRUE, pair.getValue());\r
+\r
+        pair = new JsPair("x", false);\r
+        assertEquals(JsBoolean.FALSE, pair.getValue());\r
+\r
+        pair = new JsPair("x", 999999999999L);\r
+        assertEquals(new JsNumber("999999999999"), pair.getValue());\r
+\r
+        pair = new JsPair("x", 1.25);\r
+        assertEquals(new JsNumber("1.25"), pair.getValue());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of toString method, of class JsPair.\r
+     */\r
+    @Test\r
+    public void testToString(){\r
+        System.out.println("toString");\r
+\r
+        JsPair pair;\r
+\r
+        pair = new JsPair("x", JsNull.NULL);\r
+        assertEquals("\"x\":null", pair.toString());\r
+\r
+        pair = new JsPair("", JsNull.NULL);\r
+        assertEquals("\"\":null", pair.toString());\r
+\r
+        return;\r
+    }\r
+\r
+}\r
diff --git a/src/test/java/jp/sourceforge/jindolf/json/JsStringTest.java b/src/test/java/jp/sourceforge/jindolf/json/JsStringTest.java
new file mode 100644 (file)
index 0000000..42caade
--- /dev/null
@@ -0,0 +1,432 @@
+/*\r
+ * To change this template, choose Tools | Templates\r
+ * and open the template in the editor.\r
+ */\r
+\r
+package jp.sourceforge.jindolf.json;\r
+\r
+import java.io.StringReader;\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
+import org.junit.After;\r
+import org.junit.AfterClass;\r
+import org.junit.Before;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import static org.junit.Assert.*;\r
+\r
+/**\r
+ *\r
+ */\r
+public class JsStringTest {\r
+\r
+    public JsStringTest() {\r
+    }\r
+\r
+    @BeforeClass\r
+    public static void setUpClass() throws Exception{\r
+    }\r
+\r
+    @AfterClass\r
+    public static void tearDownClass() throws Exception{\r
+    }\r
+\r
+    @Before\r
+    public void setUp() {\r
+    }\r
+\r
+    @After\r
+    public void tearDown() {\r
+    }\r
+\r
+    /**\r
+     * Test of parseHexChar method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testParseHexChar() throws Exception{\r
+        System.out.println("parseHexChar");\r
+\r
+        JsonReader reader;\r
+        char ch;\r
+\r
+        reader = new JsonReader(new StringReader("0000"));\r
+        ch = JsString.parseHexChar(reader);\r
+        assertEquals('\u0000', ch);\r
+\r
+        reader = new JsonReader(new StringReader("ffff"));\r
+        ch = JsString.parseHexChar(reader);\r
+        assertEquals('\uffff', ch);\r
+\r
+        reader = new JsonReader(new StringReader("FFFF"));\r
+        ch = JsString.parseHexChar(reader);\r
+        assertEquals('\uffff', ch);\r
+\r
+        reader = new JsonReader(new StringReader("dead"));\r
+        ch = JsString.parseHexChar(reader);\r
+        assertEquals('\udead', ch);\r
+\r
+        reader = new JsonReader(new StringReader("abcde"));\r
+        ch = JsString.parseHexChar(reader);\r
+        assertEquals('\uabcd', ch);\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("000,"));\r
+            ch = JsString.parseHexChar(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of parseString method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testParseString() throws Exception{\r
+        System.out.println("parseString");\r
+\r
+        JsonReader reader;\r
+        JsString string;\r
+\r
+        reader = new JsonReader(new StringReader("\"abc\""));\r
+        string = JsString.parseString(reader);\r
+        assertEquals("abc", string.toRawString());\r
+\r
+        reader = new JsonReader(new StringReader("\"あいう\""));\r
+        string = JsString.parseString(reader);\r
+        assertEquals("あいう", string.toRawString());\r
+\r
+        reader = new JsonReader(new StringReader("\"\\\"\\\\\\/\""));\r
+        string = JsString.parseString(reader);\r
+        assertEquals("\"\\/", string.toRawString());\r
+\r
+        reader = new JsonReader(new StringReader("\"\\b\\f\\n\\r\\t\""));\r
+        string = JsString.parseString(reader);\r
+        assertEquals("\b\f\n\r\t", string.toRawString());\r
+\r
+        reader = new JsonReader(new StringReader("\"\\uabcd\\uCDEF\""));\r
+        string = JsString.parseString(reader);\r
+        assertEquals("\uabcd\ucdef", string.toRawString());\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("abc\""));\r
+            string = JsString.parseString(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        try{\r
+            reader = new JsonReader(new StringReader("\"abc"));\r
+            string = JsString.parseString(reader);\r
+            fail();\r
+        }catch(JsParseException e){\r
+            // NOTHING\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of writeText method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testWriteText() throws Exception{\r
+        System.out.println("writeText");\r
+\r
+        Appendable appout;\r
+        JsString string;\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString();\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("abc");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"abc\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("\"");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\\\"\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("\\");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\\\\\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("/");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\\/\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("\b");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\\b\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("\f");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\\f\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("\n");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\\n\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("\r");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\\r\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("\t");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\\t\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("\u0001");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"\\u0001\"", appout.toString());\r
+\r
+        appout = new StringBuilder();\r
+        string = new JsString("あ");\r
+        JsString.writeText(appout, string);\r
+        assertEquals("\"あ\"", appout.toString());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of traverse method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testTraverse(){\r
+        System.out.println("traverse");\r
+\r
+        JsString string = new JsString("A");\r
+\r
+        try{\r
+            string.traverse(new ValueVisitor(){\r
+                int ct = 0;\r
+\r
+                public void visitValue(JsValue value)\r
+                        throws JsVisitException{\r
+                    assertEquals(new JsString("A"), value);\r
+                    assertTrue(this.ct++ <= 0);\r
+                }\r
+\r
+                public void visitPairName(String name)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+\r
+                public void visitCollectionClose(JsValue composite)\r
+                        throws JsVisitException{\r
+                    throw new JsVisitException();\r
+                }\r
+            });\r
+        }catch(JsVisitException e){\r
+            fail();\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hasChanged method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testHasChanged(){\r
+        System.out.println("hasChanged");\r
+\r
+        JsString string = new JsString("A");\r
+\r
+        assertFalse(string.hasChanged());\r
+        string.setUnchanged();\r
+        assertFalse(string.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of setUnchanged method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testSetUnchanged(){\r
+        System.out.println("setUnchanged");\r
+\r
+        JsString string = new JsString("A");\r
+\r
+        string.setUnchanged();\r
+        assertFalse(string.hasChanged());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of charAt method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testCharAt(){\r
+        System.out.println("charAt");\r
+\r
+        JsString string;\r
+\r
+        string = new JsString("abcde");\r
+        assertEquals('b', string.charAt(1));\r
+\r
+        try{\r
+            string.charAt(999);\r
+            fail();\r
+        }catch(IndexOutOfBoundsException e){\r
+            // NOTHING\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of length method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testLength(){\r
+        System.out.println("length");\r
+\r
+        assertEquals(0, new JsString().length());\r
+        assertEquals(0, new JsString("").length());\r
+        assertEquals(1, new JsString("A").length());\r
+        assertEquals(2, new JsString("AB").length());\r
+        assertEquals(3, new JsString("A\"B").length());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of subSequence method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testSubSequence(){\r
+        System.out.println("subSequence");\r
+\r
+        JsString string;\r
+\r
+        string = new JsString("abcde");\r
+        assertEquals("bcd", string.subSequence(1, 4).toString());\r
+        assertEquals("", string.subSequence(1, 1).toString());\r
+\r
+        try{\r
+            string.subSequence(1,999);\r
+            fail();\r
+        }catch(IndexOutOfBoundsException e){\r
+            // NOTHING\r
+        }\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of hashCode method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testHashCode(){\r
+        System.out.println("hashCode");\r
+        assertEquals(new JsString("A").hashCode(), new JsString("A").hashCode());\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of equals method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testEquals(){\r
+        System.out.println("equals");\r
+\r
+        assertTrue(new JsString("A").equals(new JsString("A")));\r
+        assertFalse(new JsString("A").equals(new JsString("a")));\r
+        assertFalse(new JsString("A").equals(null));\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of compareTo method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testCompareTo(){\r
+        System.out.println("compareTo");\r
+\r
+        assertTrue(0 == new JsString("A").compareTo(new JsString("A")));\r
+        assertTrue(0 > new JsString("A").compareTo(new JsString("a")));\r
+        assertTrue(0 < new JsString("a").compareTo(new JsString("A")));\r
+        assertTrue(0 < new JsString("A").compareTo(null));\r
+\r
+        SortedSet<JsString> set = new TreeSet<JsString>();\r
+\r
+        set.clear();\r
+        set.add(new JsString("A"));\r
+        set.add(new JsString("a"));\r
+        assertEquals(new JsString("A"), set.first());\r
+        assertEquals(new JsString("a"), set.last());\r
+\r
+        set.clear();\r
+        set.add(new JsString("a"));\r
+        set.add(new JsString("A"));\r
+        assertEquals(new JsString("A"), set.first());\r
+        assertEquals(new JsString("a"), set.last());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of toString method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testToString(){\r
+        System.out.println("toString");\r
+\r
+        assertEquals("\"\"", new JsString("").toString());\r
+        assertEquals("\"abc\"", new JsString("abc").toString());\r
+        assertEquals("\"\\\"\"", new JsString("\"").toString());\r
+        assertEquals("\"\\\\\"", new JsString("\\").toString());\r
+        assertEquals("\"\\/\"", new JsString("/").toString());\r
+        assertEquals("\"\\b\"", new JsString("\b").toString());\r
+        assertEquals("\"\\f\"", new JsString("\f").toString());\r
+        assertEquals("\"\\n\"", new JsString("\n").toString());\r
+        assertEquals("\"\\r\"", new JsString("\r").toString());\r
+        assertEquals("\"\\t\"", new JsString("\t").toString());\r
+        assertEquals("\"\\u0001\"", new JsString("\u0001").toString());\r
+        assertEquals("\"あ\"", new JsString("あ").toString());\r
+\r
+        return;\r
+    }\r
+\r
+    /**\r
+     * Test of toRawString method, of class JsString.\r
+     */\r
+    @Test\r
+    public void testToRawString(){\r
+        System.out.println("toRawString");\r
+\r
+        assertEquals("", new JsString("").toRawString());\r
+        assertEquals("abc", new JsString("abc").toRawString());\r
+        assertEquals("\"", new JsString("\"").toRawString());\r
+        assertEquals("\\", new JsString("\\").toRawString());\r
+        assertEquals("/", new JsString("/").toRawString());\r
+        assertEquals("\b", new JsString("\b").toRawString());\r
+        assertEquals("\f", new JsString("\f").toRawString());\r
+        assertEquals("\n", new JsString("\n").toRawString());\r
+        assertEquals("\r", new JsString("\r").toRawString());\r
+        assertEquals("\t", new JsString("\t").toRawString());\r
+        assertEquals("\u0001", new JsString("\u0001").toRawString());\r
+        assertEquals("あ", new JsString("あ").toRawString());\r
+\r
+        return;\r
+    }\r
+\r
+}\r