package com.jsoniter.output; import com.jsoniter.spi.TypeLiteral; import junit.framework.TestCase; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.*; public class TestArray extends TestCase { static { // JsonStream.setMode(EncodingMode.DYNAMIC_MODE); } private ByteArrayOutputStream baos; private JsonStream stream; public void setUp() { baos = new ByteArrayOutputStream(); stream = new JsonStream(baos, 4096); } public void test_gen_array() throws IOException { stream.writeVal(new String[]{"hello", "world"}); stream.close(); assertEquals("['hello','world']".replace('\'', '"'), baos.toString()); } public void test_collection() throws IOException { ArrayList list = new ArrayList(); list.add("hello"); list.add("world"); stream.writeVal(new TypeLiteral<List<String>>() { }, list); stream.close(); assertEquals("['hello','world']".replace('\'', '"'), baos.toString()); } public void test_collection_without_type() throws IOException { ArrayList list = new ArrayList(); list.add("hello"); list.add("world"); stream.writeVal(list); stream.close(); assertEquals("['hello','world']".replace('\'', '"'), baos.toString()); } public void test_empty_array() throws IOException { stream.writeVal(new String[0]); stream.close(); assertEquals("[]".replace('\'', '"'), baos.toString()); } public void test_null_array() throws IOException { stream.writeVal(new TypeLiteral<String[]>() { }, null); stream.close(); assertEquals("null".replace('\'', '"'), baos.toString()); } public void test_empty_collection() throws IOException { stream.writeVal(new ArrayList()); stream.close(); assertEquals("[]".replace('\'', '"'), baos.toString()); } public void test_null_collection() throws IOException { stream.writeVal(new TypeLiteral<ArrayList>() { }, null); stream.close(); assertEquals("null".replace('\'', '"'), baos.toString()); } public static class TestObject1 { public List<String> field1; } public void test_list_of_objects() throws IOException { TestObject1 obj = new TestObject1(); obj.field1 = Arrays.asList("a", "b"); stream.writeVal(new TypeLiteral<List<TestObject1>>() { }, Arrays.asList(obj)); stream.close(); assertEquals("[{\"field1\":[\"a\",\"b\"]}]", baos.toString()); } public void test_array_of_null() throws IOException { stream.writeVal(new TestObject1[1]); stream.close(); assertEquals("[null]", baos.toString()); } public void test_list_of_null() throws IOException { TestObject1 obj = new TestObject1(); obj.field1 = Arrays.asList("a", "b"); ArrayList<TestObject1> list = new ArrayList<TestObject1>(); list.add(null); stream.writeVal(new TypeLiteral<List<TestObject1>>() { }, list); stream.close(); assertEquals("[null]", baos.toString()); } public void test_hash_set() throws IOException { assertEquals("[]", JsonStream.serialize(new HashSet<Integer>())); HashSet<Integer> set = new HashSet<Integer>(); set.add(1); assertEquals("[1]", JsonStream.serialize(set)); } public void test_arrays_as_list() throws IOException { assertEquals("[1,2,3]", JsonStream.serialize(Arrays.asList(1, 2, 3))); } public void test_default_empty_collection() throws IOException { assertEquals("[]", JsonStream.serialize(Collections.emptySet())); } }