Handle multiple arrays.
The storage vector wasn't getting cleared out... Fix that.
Change-Id: Idd29395fd39ea2af7615f5d106653e95aefb70ad
diff --git a/aos/json_to_flatbuffer.cc b/aos/json_to_flatbuffer.cc
index 85e2d7f..939dca7 100644
--- a/aos/json_to_flatbuffer.cc
+++ b/aos/json_to_flatbuffer.cc
@@ -333,14 +333,6 @@
if (!AddElement(field_index, double_value)) return false;
}
} break;
- // TODO(austin): Need to detect int vs float.
- /*
- asdf
- {
- const int field_index = stack_.back().field_index;
-
- } break;
- */
case Tokenizer::TokenType::kStringValue: // string value
{
const int field_index = stack_.back().field_index;
@@ -606,6 +598,7 @@
stack_.back().elements.emplace_back(
field_index, flatbuffers::Offset<flatbuffers::String>(
fbb_.EndVector(vector_elements_.size())));
+ vector_elements_.clear();
return true;
}
diff --git a/aos/json_to_flatbuffer_test.cc b/aos/json_to_flatbuffer_test.cc
index 82bbd52..be752d0 100644
--- a/aos/json_to_flatbuffer_test.cc
+++ b/aos/json_to_flatbuffer_test.cc
@@ -144,6 +144,14 @@
EXPECT_TRUE(JsonAndBack("{ }"));
}
+// Tests that multiple arrays get properly handled.
+TEST_F(JsonToFlatbufferTest, MultipleArrays) {
+ EXPECT_TRUE(
+ JsonAndBack("{ \"vector_foo_float\": [ 9, 7, 1 ], \"vector_foo_double\": "
+ "[ 9, 7, 1 ] }",
+ "{ \"vector_foo_float\": [ 9.0, 7.0, 1.0 ], "
+ "\"vector_foo_double\": [ 9.0, 7.0, 1.0 ] }"));
+}
// TODO(austin): Missmatched values.
// TODO(austin): enums