@Test
public void testVal() {

    assertSame("null is NULL", val(null).get(), JsonObject.NULL);
    assertSame("null is NULL is NULL", val(val(null)).get(), JsonObject.NULL);
    assertTrue("Number is JsonNumber", val(1).get() instanceof JsonNumber);
    assertTrue("Number is JsonNumber is JsonNumber", val(val(1)).get() instanceof JsonNumber);
    assertTrue("String is JsonString", val("string").get() instanceof JsonString);
    assertTrue("String is JsonString is JsonString", val(val("string")).get() instanceof JsonString);
    assertSame("Boolean is JsonValue.TRUE or FALSE", val(true).get(), JsonValue.TRUE);
    assertSame("Boolean is JsonValue is JsonValue", val(val(true)).get(), JsonValue.TRUE);
    assertTrue("obj is JsonObject", val(obj()).get() instanceof JsonObject);
    assertTrue("obj is obj is JsonObject", val(val(obj())).get() instanceof JsonObject);
    assertTrue("JsonObject is JsonObject", val(obj().get()).get() instanceof JsonObject);
    assertTrue("JsonObject is JsonObject is JsonObject", val(val(obj().get())).get() instanceof JsonObject);
    assertTrue("arr is JsonArray", val(arr()).get() instanceof JsonArray);
    assertTrue("arr is arr is JsonArray", val(val(arr())).get() instanceof JsonArray);
    assertTrue("JsonArray is JsonArray", val(arr().get()).get() instanceof JsonArray);
    assertTrue("JsonArray is JsonArray is JsonArray", val(val(arr().get())).get() instanceof JsonArray);
}