From e9e14319ab772d482a69b2d496356d20bffa3dac Mon Sep 17 00:00:00 2001 From: "jon.chambers@gmail.com" Date: Sat, 10 Aug 2013 02:57:24 +0000 Subject: [PATCH] Added support for primitive and Object arrays. Added supporting unit tests. --- src/main/java/org/json/simple/JSONArray.java | 384 +++++++++++++++++- src/main/java/org/json/simple/JSONValue.java | 72 ++++ .../java/org/json/simple/JSONArrayTest.java | 224 ++++++++++ .../java/org/json/simple/JSONValueTest.java | 233 +++++++++++ 4 files changed, 912 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/json/simple/JSONValueTest.java diff --git a/src/main/java/org/json/simple/JSONArray.java b/src/main/java/org/json/simple/JSONArray.java index 413bbf9..aa8e00b 100644 --- a/src/main/java/org/json/simple/JSONArray.java +++ b/src/main/java/org/json/simple/JSONArray.java @@ -110,10 +110,392 @@ public class JSONArray extends ArrayList implements JSONAware, JSONStreamAware { return sb.toString(); } + public static void writeJSONString(byte[] array, Writer out) throws IOException{ + if(array == null){ + out.write("null"); + } else if(array.length == 0) { + out.write("[]"); + } else { + out.write("["); + out.write(String.valueOf(array[0])); + + for(int i = 1; i < array.length; i++){ + out.write(","); + out.write(String.valueOf(array[i])); + } + + out.write("]"); + } + } + + public static String toJSONString(byte[] array){ + if(array == null){ + return "null"; + } + + if(array.length == 0) { + return "[]"; + } + + final StringBuffer buffer = new StringBuffer(); + + buffer.append("["); + buffer.append(String.valueOf(array[0])); + + for(int i = 1; i < array.length; i++){ + buffer.append(","); + buffer.append(String.valueOf(array[i])); + } + + buffer.append("]"); + + return buffer.toString(); + } + + public static void writeJSONString(short[] array, Writer out) throws IOException{ + if(array == null){ + out.write("null"); + } else if(array.length == 0) { + out.write("[]"); + } else { + out.write("["); + out.write(String.valueOf(array[0])); + + for(int i = 1; i < array.length; i++){ + out.write(","); + out.write(String.valueOf(array[i])); + } + + out.write("]"); + } + } + + public static String toJSONString(short[] array){ + if(array == null){ + return "null"; + } + + if(array.length == 0) { + return "[]"; + } + + final StringBuffer buffer = new StringBuffer(); + + buffer.append("["); + buffer.append(array[0]); + + for(int i = 1; i < array.length; i++){ + buffer.append(","); + buffer.append(array[i]); + } + + buffer.append("]"); + + return buffer.toString(); + } + + public static void writeJSONString(int[] array, Writer out) throws IOException{ + if(array == null){ + out.write("null"); + } else if(array.length == 0) { + out.write("[]"); + } else { + out.write("["); + out.write(String.valueOf(array[0])); + + for(int i = 1; i < array.length; i++){ + out.write(","); + out.write(String.valueOf(array[i])); + } + + out.write("]"); + } + } + + public static String toJSONString(int[] array){ + if(array == null){ + return "null"; + } + + if(array.length == 0) { + return "[]"; + } + + final StringBuffer buffer = new StringBuffer(); + + buffer.append("["); + buffer.append(array[0]); + + for(int i = 1; i < array.length; i++){ + buffer.append(","); + buffer.append(array[i]); + } + + buffer.append("]"); + + return buffer.toString(); + } + + public static void writeJSONString(long[] array, Writer out) throws IOException{ + if(array == null){ + out.write("null"); + } else if(array.length == 0) { + out.write("[]"); + } else { + out.write("["); + out.write(String.valueOf(array[0])); + + for(int i = 1; i < array.length; i++){ + out.write(","); + out.write(String.valueOf(array[i])); + } + + out.write("]"); + } + } + + public static String toJSONString(long[] array){ + if(array == null){ + return "null"; + } + + if(array.length == 0) { + return "[]"; + } + + final StringBuffer buffer = new StringBuffer(); + + buffer.append("["); + buffer.append(array[0]); + + for(int i = 1; i < array.length; i++){ + buffer.append(","); + buffer.append(array[i]); + } + + buffer.append("]"); + + return buffer.toString(); + } + + public static void writeJSONString(float[] array, Writer out) throws IOException{ + if(array == null){ + out.write("null"); + } else if(array.length == 0) { + out.write("[]"); + } else { + out.write("["); + out.write(String.valueOf(array[0])); + + for(int i = 1; i < array.length; i++){ + out.write(","); + out.write(String.valueOf(array[i])); + } + + out.write("]"); + } + } + + public static String toJSONString(float[] array){ + if(array == null){ + return "null"; + } + + if(array.length == 0) { + return "[]"; + } + + final StringBuffer buffer = new StringBuffer(); + + buffer.append("["); + buffer.append(array[0]); + + for(int i = 1; i < array.length; i++){ + buffer.append(","); + buffer.append(array[i]); + } + + buffer.append("]"); + + return buffer.toString(); + } + + public static void writeJSONString(double[] array, Writer out) throws IOException{ + if(array == null){ + out.write("null"); + } else if(array.length == 0) { + out.write("[]"); + } else { + out.write("["); + out.write(String.valueOf(array[0])); + + for(int i = 1; i < array.length; i++){ + out.write(","); + out.write(String.valueOf(array[i])); + } + + out.write("]"); + } + } + + public static String toJSONString(double[] array){ + if(array == null){ + return "null"; + } + + if(array.length == 0) { + return "[]"; + } + + final StringBuffer buffer = new StringBuffer(); + + buffer.append("["); + buffer.append(array[0]); + + for(int i = 1; i < array.length; i++){ + buffer.append(","); + buffer.append(array[i]); + } + + buffer.append("]"); + + return buffer.toString(); + } + + public static void writeJSONString(boolean[] array, Writer out) throws IOException{ + if(array == null){ + out.write("null"); + } else if(array.length == 0) { + out.write("[]"); + } else { + out.write("["); + out.write(String.valueOf(array[0])); + + for(int i = 1; i < array.length; i++){ + out.write(","); + out.write(String.valueOf(array[i])); + } + + out.write("]"); + } + } + + public static String toJSONString(boolean[] array){ + if(array == null){ + return "null"; + } + + if(array.length == 0) { + return "[]"; + } + + final StringBuffer buffer = new StringBuffer(); + + buffer.append("["); + buffer.append(array[0]); + + for(int i = 1; i < array.length; i++){ + buffer.append(","); + buffer.append(array[i]); + } + + buffer.append("]"); + + return buffer.toString(); + } + + public static void writeJSONString(char[] array, Writer out) throws IOException{ + if(array == null){ + out.write("null"); + } else if(array.length == 0) { + out.write("[]"); + } else { + out.write("[\""); + out.write(String.valueOf(array[0])); + + for(int i = 1; i < array.length; i++){ + out.write("\",\""); + out.write(String.valueOf(array[i])); + } + + out.write("\"]"); + } + } + + public static String toJSONString(char[] array){ + if(array == null){ + return "null"; + } + + if(array.length == 0) { + return "[]"; + } + + final StringBuffer buffer = new StringBuffer(); + + buffer.append("[\""); + buffer.append(array[0]); + + for(int i = 1; i < array.length; i++){ + buffer.append("\",\""); + buffer.append(array[i]); + } + + buffer.append("\"]"); + + return buffer.toString(); + } + + public static void writeJSONString(Object[] array, Writer out) throws IOException{ + if(array == null){ + out.write("null"); + } else if(array.length == 0) { + out.write("[]"); + } else { + out.write("["); + JSONValue.writeJSONString(array[0], out); + + for(int i = 1; i < array.length; i++){ + out.write(","); + JSONValue.writeJSONString(array[i], out); + } + + out.write("]"); + } + } + + public static String toJSONString(Object[] array){ + if(array == null){ + return "null"; + } + + if(array.length == 0) { + return "[]"; + } + + final StringBuffer buffer = new StringBuffer(); + + buffer.append("["); + buffer.append(JSONValue.toJSONString(array[0])); + + for(int i = 1; i < array.length; i++){ + buffer.append(","); + buffer.append(JSONValue.toJSONString(array[i])); + } + + buffer.append("]"); + + return buffer.toString(); + } + public String toJSONString(){ return toJSONString(this); } - + + /** + * Returns a string representation of this array. This is equivalent to + * calling {@link JSONArray#toJSONString()}. + */ public String toString() { return toJSONString(); } diff --git a/src/main/java/org/json/simple/JSONValue.java b/src/main/java/org/json/simple/JSONValue.java index b3661a5..8cf52d2 100644 --- a/src/main/java/org/json/simple/JSONValue.java +++ b/src/main/java/org/json/simple/JSONValue.java @@ -152,6 +152,51 @@ public class JSONValue { return; } + if(value instanceof byte[]){ + JSONArray.writeJSONString((byte[])value, out); + return; + } + + if(value instanceof short[]){ + JSONArray.writeJSONString((short[])value, out); + return; + } + + if(value instanceof int[]){ + JSONArray.writeJSONString((int[])value, out); + return; + } + + if(value instanceof long[]){ + JSONArray.writeJSONString((long[])value, out); + return; + } + + if(value instanceof float[]){ + JSONArray.writeJSONString((float[])value, out); + return; + } + + if(value instanceof double[]){ + JSONArray.writeJSONString((double[])value, out); + return; + } + + if(value instanceof boolean[]){ + JSONArray.writeJSONString((boolean[])value, out); + return; + } + + if(value instanceof char[]){ + JSONArray.writeJSONString((char[])value, out); + return; + } + + if(value instanceof Object[]){ + JSONArray.writeJSONString((Object[])value, out); + return; + } + out.write(value.toString()); } @@ -205,6 +250,33 @@ public class JSONValue { if(value instanceof Collection) return JSONArray.toJSONString((Collection)value); + if(value instanceof byte[]) + return JSONArray.toJSONString((byte[])value); + + if(value instanceof short[]) + return JSONArray.toJSONString((short[])value); + + if(value instanceof int[]) + return JSONArray.toJSONString((int[])value); + + if(value instanceof long[]) + return JSONArray.toJSONString((long[])value); + + if(value instanceof float[]) + return JSONArray.toJSONString((float[])value); + + if(value instanceof double[]) + return JSONArray.toJSONString((double[])value); + + if(value instanceof boolean[]) + return JSONArray.toJSONString((boolean[])value); + + if(value instanceof char[]) + return JSONArray.toJSONString((char[])value); + + if(value instanceof Object[]) + return JSONArray.toJSONString((Object[])value); + return value.toString(); } diff --git a/src/test/java/org/json/simple/JSONArrayTest.java b/src/test/java/org/json/simple/JSONArrayTest.java index 62a8345..6e1591d 100644 --- a/src/test/java/org/json/simple/JSONArrayTest.java +++ b/src/test/java/org/json/simple/JSONArrayTest.java @@ -61,4 +61,228 @@ public class JSONArrayTest extends TestCase { assertEquals(2, jsonArray.size()); } + public void testByteArrayToString() throws IOException { + assertEquals("null", JSONArray.toJSONString((byte[])null)); + assertEquals("[]", JSONArray.toJSONString(new byte[0])); + assertEquals("[12]", JSONArray.toJSONString(new byte[] { 12 })); + assertEquals("[-7,22,86,-99]", JSONArray.toJSONString(new byte[] { -7, 22, 86, -99 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONArray.writeJSONString((byte[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new byte[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new byte[] { 12 }, writer); + assertEquals("[12]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new byte[] { -7, 22, 86, -99 }, writer); + assertEquals("[-7,22,86,-99]", writer.toString()); + } + + public void testShortArrayToString() throws IOException { + assertEquals("null", JSONArray.toJSONString((short[])null)); + assertEquals("[]", JSONArray.toJSONString(new short[0])); + assertEquals("[12]", JSONArray.toJSONString(new short[] { 12 })); + assertEquals("[-7,22,86,-99]", JSONArray.toJSONString(new short[] { -7, 22, 86, -99 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONArray.writeJSONString((short[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new short[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new short[] { 12 }, writer); + assertEquals("[12]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new short[] { -7, 22, 86, -99 }, writer); + assertEquals("[-7,22,86,-99]", writer.toString()); + } + + public void testIntArrayToString() throws IOException { + assertEquals("null", JSONArray.toJSONString((int[])null)); + assertEquals("[]", JSONArray.toJSONString(new int[0])); + assertEquals("[12]", JSONArray.toJSONString(new int[] { 12 })); + assertEquals("[-7,22,86,-99]", JSONArray.toJSONString(new int[] { -7, 22, 86, -99 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONArray.writeJSONString((int[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new int[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new int[] { 12 }, writer); + assertEquals("[12]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new int[] { -7, 22, 86, -99 }, writer); + assertEquals("[-7,22,86,-99]", writer.toString()); + } + + public void testLongArrayToString() throws IOException { + assertEquals("null", JSONArray.toJSONString((long[])null)); + assertEquals("[]", JSONArray.toJSONString(new long[0])); + assertEquals("[12]", JSONArray.toJSONString(new long[] { 12 })); + assertEquals("[-7,22,9223372036854775807,-99]", JSONArray.toJSONString(new long[] { -7, 22, 9223372036854775807L, -99 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONArray.writeJSONString((long[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new long[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new long[] { 12 }, writer); + assertEquals("[12]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new long[] { -7, 22, 86, -99 }, writer); + assertEquals("[-7,22,86,-99]", writer.toString()); + } + + public void testFloatArrayToString() throws IOException { + assertEquals("null", JSONArray.toJSONString((float[])null)); + assertEquals("[]", JSONArray.toJSONString(new float[0])); + assertEquals("[12.8]", JSONArray.toJSONString(new float[] { 12.8f })); + assertEquals("[-7.1,22.234,86.7,-99.02]", JSONArray.toJSONString(new float[] { -7.1f, 22.234f, 86.7f, -99.02f })); + + StringWriter writer; + + writer = new StringWriter(); + JSONArray.writeJSONString((float[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new float[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new float[] { 12.8f }, writer); + assertEquals("[12.8]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new float[] { -7.1f, 22.234f, 86.7f, -99.02f }, writer); + assertEquals("[-7.1,22.234,86.7,-99.02]", writer.toString()); + } + + public void testDoubleArrayToString() throws IOException { + assertEquals("null", JSONArray.toJSONString((double[])null)); + assertEquals("[]", JSONArray.toJSONString(new double[0])); + assertEquals("[12.8]", JSONArray.toJSONString(new double[] { 12.8 })); + assertEquals("[-7.1,22.234,86.7,-99.02]", JSONArray.toJSONString(new double[] { -7.1, 22.234, 86.7, -99.02 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONArray.writeJSONString((double[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new double[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new double[] { 12.8 }, writer); + assertEquals("[12.8]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new double[] { -7.1, 22.234, 86.7, -99.02 }, writer); + assertEquals("[-7.1,22.234,86.7,-99.02]", writer.toString()); + } + + public void testBooleanArrayToString() throws IOException { + assertEquals("null", JSONArray.toJSONString((boolean[])null)); + assertEquals("[]", JSONArray.toJSONString(new boolean[0])); + assertEquals("[true]", JSONArray.toJSONString(new boolean[] { true })); + assertEquals("[true,false,true]", JSONArray.toJSONString(new boolean[] { true, false, true })); + + StringWriter writer; + + writer = new StringWriter(); + JSONArray.writeJSONString((boolean[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new boolean[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new boolean[] { true }, writer); + assertEquals("[true]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new boolean[] { true, false, true }, writer); + assertEquals("[true,false,true]", writer.toString()); + } + + public void testCharArrayToString() throws IOException { + assertEquals("null", JSONArray.toJSONString((char[])null)); + assertEquals("[]", JSONArray.toJSONString(new char[0])); + assertEquals("[\"a\"]", JSONArray.toJSONString(new char[] { 'a' })); + assertEquals("[\"a\",\"b\",\"c\"]", JSONArray.toJSONString(new char[] { 'a', 'b', 'c' })); + + StringWriter writer; + + writer = new StringWriter(); + JSONArray.writeJSONString((char[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new char[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new char[] { 'a' }, writer); + assertEquals("[\"a\"]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new char[] { 'a', 'b', 'c' }, writer); + assertEquals("[\"a\",\"b\",\"c\"]", writer.toString()); + } + + public void testObjectArrayToString() throws IOException { + assertEquals("null", JSONArray.toJSONString((Object[])null)); + assertEquals("[]", JSONArray.toJSONString(new Object[0])); + assertEquals("[\"Hello\"]", JSONArray.toJSONString(new Object[] { "Hello" })); + assertEquals("[\"Hello\",12,[1,2,3]]", JSONArray.toJSONString(new Object[] { "Hello", new Integer(12), new int[] { 1, 2, 3 } })); + + StringWriter writer; + + writer = new StringWriter(); + JSONArray.writeJSONString((Object[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new Object[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new Object[] { "Hello" }, writer); + assertEquals("[\"Hello\"]", writer.toString()); + + writer = new StringWriter(); + JSONArray.writeJSONString(new Object[] { "Hello", new Integer(12), new int[] { 1, 2, 3} }, writer); + assertEquals("[\"Hello\",12,[1,2,3]]", writer.toString()); + } } diff --git a/src/test/java/org/json/simple/JSONValueTest.java b/src/test/java/org/json/simple/JSONValueTest.java new file mode 100644 index 0000000..28064f2 --- /dev/null +++ b/src/test/java/org/json/simple/JSONValueTest.java @@ -0,0 +1,233 @@ +package org.json.simple; + +import java.io.IOException; +import java.io.StringWriter; + +import junit.framework.TestCase; + +public class JSONValueTest extends TestCase { + public void testByteArrayToString() throws IOException { + assertEquals("null", JSONValue.toJSONString((byte[])null)); + assertEquals("[]", JSONValue.toJSONString(new byte[0])); + assertEquals("[12]", JSONValue.toJSONString(new byte[] { 12 })); + assertEquals("[-7,22,86,-99]", JSONValue.toJSONString(new byte[] { -7, 22, 86, -99 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONValue.writeJSONString((byte[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new byte[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new byte[] { 12 }, writer); + assertEquals("[12]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new byte[] { -7, 22, 86, -99 }, writer); + assertEquals("[-7,22,86,-99]", writer.toString()); + } + + public void testShortArrayToString() throws IOException { + assertEquals("null", JSONValue.toJSONString((short[])null)); + assertEquals("[]", JSONValue.toJSONString(new short[0])); + assertEquals("[12]", JSONValue.toJSONString(new short[] { 12 })); + assertEquals("[-7,22,86,-99]", JSONValue.toJSONString(new short[] { -7, 22, 86, -99 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONValue.writeJSONString((short[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new short[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new short[] { 12 }, writer); + assertEquals("[12]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new short[] { -7, 22, 86, -99 }, writer); + assertEquals("[-7,22,86,-99]", writer.toString()); + } + + public void testIntArrayToString() throws IOException { + assertEquals("null", JSONValue.toJSONString((int[])null)); + assertEquals("[]", JSONValue.toJSONString(new int[0])); + assertEquals("[12]", JSONValue.toJSONString(new int[] { 12 })); + assertEquals("[-7,22,86,-99]", JSONValue.toJSONString(new int[] { -7, 22, 86, -99 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONValue.writeJSONString((int[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new int[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new int[] { 12 }, writer); + assertEquals("[12]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new int[] { -7, 22, 86, -99 }, writer); + assertEquals("[-7,22,86,-99]", writer.toString()); + } + + public void testLongArrayToString() throws IOException { + assertEquals("null", JSONValue.toJSONString((long[])null)); + assertEquals("[]", JSONValue.toJSONString(new long[0])); + assertEquals("[12]", JSONValue.toJSONString(new long[] { 12 })); + assertEquals("[-7,22,9223372036854775807,-99]", JSONValue.toJSONString(new long[] { -7, 22, 9223372036854775807L, -99 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONValue.writeJSONString((long[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new long[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new long[] { 12 }, writer); + assertEquals("[12]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new long[] { -7, 22, 86, -99 }, writer); + assertEquals("[-7,22,86,-99]", writer.toString()); + } + + public void testFloatArrayToString() throws IOException { + assertEquals("null", JSONValue.toJSONString((float[])null)); + assertEquals("[]", JSONValue.toJSONString(new float[0])); + assertEquals("[12.8]", JSONValue.toJSONString(new float[] { 12.8f })); + assertEquals("[-7.1,22.234,86.7,-99.02]", JSONValue.toJSONString(new float[] { -7.1f, 22.234f, 86.7f, -99.02f })); + + StringWriter writer; + + writer = new StringWriter(); + JSONValue.writeJSONString((float[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new float[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new float[] { 12.8f }, writer); + assertEquals("[12.8]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new float[] { -7.1f, 22.234f, 86.7f, -99.02f }, writer); + assertEquals("[-7.1,22.234,86.7,-99.02]", writer.toString()); + } + + public void testDoubleArrayToString() throws IOException { + assertEquals("null", JSONValue.toJSONString((double[])null)); + assertEquals("[]", JSONValue.toJSONString(new double[0])); + assertEquals("[12.8]", JSONValue.toJSONString(new double[] { 12.8 })); + assertEquals("[-7.1,22.234,86.7,-99.02]", JSONValue.toJSONString(new double[] { -7.1, 22.234, 86.7, -99.02 })); + + StringWriter writer; + + writer = new StringWriter(); + JSONValue.writeJSONString((double[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new double[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new double[] { 12.8 }, writer); + assertEquals("[12.8]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new double[] { -7.1, 22.234, 86.7, -99.02 }, writer); + assertEquals("[-7.1,22.234,86.7,-99.02]", writer.toString()); + } + + public void testBooleanArrayToString() throws IOException { + assertEquals("null", JSONValue.toJSONString((boolean[])null)); + assertEquals("[]", JSONValue.toJSONString(new boolean[0])); + assertEquals("[true]", JSONValue.toJSONString(new boolean[] { true })); + assertEquals("[true,false,true]", JSONValue.toJSONString(new boolean[] { true, false, true })); + + StringWriter writer; + + writer = new StringWriter(); + JSONValue.writeJSONString((boolean[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new boolean[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new boolean[] { true }, writer); + assertEquals("[true]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new boolean[] { true, false, true }, writer); + assertEquals("[true,false,true]", writer.toString()); + } + + public void testCharArrayToString() throws IOException { + assertEquals("null", JSONValue.toJSONString((char[])null)); + assertEquals("[]", JSONValue.toJSONString(new char[0])); + assertEquals("[\"a\"]", JSONValue.toJSONString(new char[] { 'a' })); + assertEquals("[\"a\",\"b\",\"c\"]", JSONValue.toJSONString(new char[] { 'a', 'b', 'c' })); + + StringWriter writer; + + writer = new StringWriter(); + JSONValue.writeJSONString((char[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new char[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new char[] { 'a' }, writer); + assertEquals("[\"a\"]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new char[] { 'a', 'b', 'c' }, writer); + assertEquals("[\"a\",\"b\",\"c\"]", writer.toString()); + } + + public void testObjectArrayToString() throws IOException { + assertEquals("null", JSONValue.toJSONString((Object[])null)); + assertEquals("[]", JSONValue.toJSONString(new Object[0])); + assertEquals("[\"Hello\"]", JSONValue.toJSONString(new Object[] { "Hello" })); + assertEquals("[\"Hello\",12,[1,2,3]]", JSONValue.toJSONString(new Object[] { "Hello", new Integer(12), new int[] { 1, 2, 3 } })); + + StringWriter writer; + + writer = new StringWriter(); + JSONValue.writeJSONString((Object[])null, writer); + assertEquals("null", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new Object[0], writer); + assertEquals("[]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new Object[] { "Hello" }, writer); + assertEquals("[\"Hello\"]", writer.toString()); + + writer = new StringWriter(); + JSONValue.writeJSONString(new Object[] { "Hello", new Integer(12), new int[] { 1, 2, 3} }, writer); + assertEquals("[\"Hello\",12,[1,2,3]]", writer.toString()); + } +}