package water; import org.junit.*; public class AutoBuffer2JSONTest extends TestUtil { private void assertEqual(Iced test, String expJson) { AutoBuffer ab = new AutoBuffer(); String json = new String(test.writeJSON(ab).buf()); Assert.assertEquals(expJson, json); } static class A1 extends Iced { double d1 = Double.NaN; double d2 = Double.POSITIVE_INFINITY; double d3 = Double.NEGATIVE_INFINITY; double d4 = -3.141527; } @Test public void testDouble() { assertEqual(new A1(), "{\"d1\":\"NaN\",\"d2\":\"Infinity\",\"d3\":\"-Infinity\",\"d4\":-3.141527}"); } static class A2 extends Iced { public float f1 = Float.NaN; private float f2 = Float.POSITIVE_INFINITY; final float f3 = Float.NEGATIVE_INFINITY; float f4 = -3.141527f; } @Test public void testFloat() { assertEqual(new A2(), "{\"f1\":\"NaN\",\"f2\":\"Infinity\",\"f3\":\"-Infinity\",\"f4\":-3.141527}"); } static class A3 extends Iced { int i = 3; int[] is = new int[]{1,2,Integer.MAX_VALUE,-1}; String s = "hello"; String ss[] = new String[]{"there",null,"\"",":"}; } @Test public void testMisc() { assertEqual(new A3(), "{\"i\":3,\"is\":[1,2,2147483647,-1],\"s\":\"hello\",\"ss\":[\"there\",null,\"\\\"\",\":\"]}"); } static class A4 extends Iced { int a=7; } static class A5 extends Iced { float b=9f; } static class A6 extends A4 { final A5 a5=new A5(); char c='Q'; } @Test public void testNest() { assertEqual(new A4(), "{\"a\":7}"); assertEqual(new A5(), "{\"b\":9.0}"); assertEqual(new A6(), "{\"a\":7,\"a5\":{\"b\":9.0},\"c\":81}"); } static class A7 extends Iced { } static class A8 extends A7 { } @Test public void testEmpty() { assertEqual(new A8(), "{}"); assertEqual(new A7(), "{}"); } // TODO: support arrays of booleans static class A9 extends Iced {boolean yep = true; boolean nope = false; }; // Boolean[] yepNope = new Boolean[] {true, false}; @Test public void testBoolean() { assertEqual(new A9(), "{\"yep\":true,\"nope\":false}"); // ,"yepNope":[true,false] } }