Add unicode parsing for JSON strings
Parses unicode in JSON strings. Syntax of the unicode in the string
should be \uxxxx. Also checks the validity of the unicode.
Change-Id: Ie6aa16ef1a67110c02f0374fe04edd9004a12c9b
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/json_to_flatbuffer_test.cc b/aos/json_to_flatbuffer_test.cc
index 42457f6..4918281 100644
--- a/aos/json_to_flatbuffer_test.cc
+++ b/aos/json_to_flatbuffer_test.cc
@@ -97,6 +97,18 @@
EXPECT_TRUE(JsonAndBack("{ \"foo_double\": -nan }"));
}
+// Tests that unicode is handled correctly
+TEST_F(JsonToFlatbufferTest, Unicode) {
+ EXPECT_TRUE(JsonAndBack("{ \"foo_string\": \"\\uF672\" }"));
+ EXPECT_TRUE(JsonAndBack("{ \"foo_string\": \"\\uEFEF\" }"));
+ EXPECT_TRUE(JsonAndBack("{ \"foo_string\": \"helloworld\\uD83E\\uDE94\" }"));
+ EXPECT_TRUE(JsonAndBack("{ \"foo_string\": \"\\uD83C\\uDF32\" }"));
+ EXPECT_FALSE(JsonAndBack("{ \"foo_string\": \"\\uP890\" }"));
+ EXPECT_FALSE(JsonAndBack("{ \"foo_string\": \"\\u!FA8\" }"));
+ EXPECT_FALSE(JsonAndBack("{ \"foo_string\": \"\\uF89\" }"));
+ EXPECT_FALSE(JsonAndBack("{ \"foo_string\": \"\\uD83C\" }"));
+}
+
// Tests that we can handle decimal points.
TEST_F(JsonToFlatbufferTest, DecimalPoint) {
EXPECT_TRUE(JsonAndBack("{ \"foo_float\": 5.1 }"));