package water; import org.junit.*; import dontweave.gson.JsonObject; import water.api.DocGen; import water.api.Request.API; import water.util.JsonUtil; public class AutoBuffer2JSONTest extends TestUtil { @BeforeClass public static void stall() { TestUtil.stall_till_cloudsize(1); } static class A1 extends Iced { static final int API_WEAVER = 1; static public DocGen.FieldDoc[] DOC_FIELDS; @API(help="double field with NaN") double d1 = Double.NaN; @API(help="double field with +Infinity") double d2 = Double.POSITIVE_INFINITY; @API(help="double field with -Infinity") double d3 = Double.NEGATIVE_INFINITY; @API(help="double field with a number") 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 { static final int API_WEAVER = 1; static public DocGen.FieldDoc[] DOC_FIELDS; @API(help="float field with NaN") float f1 = Float.NaN; @API(help="float field with +Infinity") float f2 = Float.POSITIVE_INFINITY; @API(help="float field with -Infinity") float f3 = Float.NEGATIVE_INFINITY; @API(help="float field with a number") float f4 = -3.141527f; } @Test public void testFloat() { assertEqual(new A2(), "{\"f1\":\"NaN\",\"f2\":\"Infinity\",\"f3\":\"-Infinity\",\"f4\":-3.141527}"); } // ---- Only Request1 tests for correct JSON @Test public void testDoubleFromRequest() { JsonObject o = new JsonObject(); o.addProperty("d1", Double.NaN); o.addProperty("d2", Double.POSITIVE_INFINITY); o.addProperty("d3", Double.NEGATIVE_INFINITY); o.addProperty("d4", 3.141527); o = JsonUtil.escape(o); Assert.assertEquals("{\"d1\":\"NaN\",\"d2\":\"Infinity\",\"d3\":\"-Infinity\",\"d4\":3.141527}", o.toString()); } //---- Only Request1 tests @Test public void testFloatFromRequest() { JsonObject o = new JsonObject(); o.addProperty("f1", Float.NaN); o.addProperty("f2", Float.POSITIVE_INFINITY); o.addProperty("f3", Float.NEGATIVE_INFINITY); o.addProperty("f4", 3.141527f); o = JsonUtil.escape(o); Assert.assertEquals("{\"f1\":\"NaN\",\"f2\":\"Infinity\",\"f3\":\"-Infinity\",\"f4\":3.141527}", o.toString()); } private void assertEqual(Iced test, String expJson) { AutoBuffer ab = new AutoBuffer(); String json = new String(test.writeJSON(ab).buf()); Assert.assertEquals(expJson, json); } }