Index: mojo/public/cpp/bindings/tests/formatting_unittest.cc |
diff --git a/mojo/public/cpp/bindings/tests/formatting_unittest.cc b/mojo/public/cpp/bindings/tests/formatting_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..90822437a7bf39877fc21f3ca76fb575a51e1e39 |
--- /dev/null |
+++ b/mojo/public/cpp/bindings/tests/formatting_unittest.cc |
@@ -0,0 +1,104 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include <sstream> |
+ |
+#include "mojo/public/cpp/bindings/array.h" |
+#include "mojo/public/cpp/bindings/formatting.h" |
viettrungluu
2016/01/26 23:19:40
nit: The convention is to include the particular f
jeffbrown
2016/01/26 23:40:46
Yeah, none of the other unit tests in this directo
|
+#include "mojo/public/cpp/bindings/map.h" |
+#include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace mojo { |
+namespace test { |
+namespace { |
viettrungluu
2016/01/26 23:19:40
Note: You can probably put everything in an anonym
jeffbrown
2016/01/26 23:40:46
Acknowledged.
|
+RectPtr MakeRect(int32_t factor = 1) { |
+ RectPtr rect(Rect::New()); |
+ rect->x = 1 * factor; |
+ rect->y = 2 * factor; |
+ rect->width = 10 * factor; |
+ rect->height = 20 * factor; |
+ return rect; |
+} |
+} // namespace |
+ |
+std::ostream& operator<<(std::ostream& os, const Rect& value) { |
+ return os << "{x=" << value.x << ", y=" << value.y |
+ << ", width=" << value.width << ", height=" << value.height << "}"; |
+} |
+ |
+std::ostream& operator<<(std::ostream& os, const RectPair& value) { |
+ return os << "{first=" << value.first << ", second=" << value.second << "}"; |
+} |
+ |
+TEST(FormattingTest, Arrays) { |
+ Array<int32_t> null_array; |
+ Array<int32_t> empty_array; |
+ empty_array.resize(0); |
+ Array<int32_t> one_element_array; |
+ one_element_array.push_back(123); |
+ Array<int32_t> three_element_array; |
+ three_element_array.push_back(4); |
+ three_element_array.push_back(5); |
+ three_element_array.push_back(6); |
+ |
+ std::ostringstream so; |
+ so << "null_array=" << null_array << ", empty_array=" << empty_array |
+ << ", one_element_array=" << one_element_array |
+ << ", three_element_array=" << three_element_array; |
+ |
+ EXPECT_EQ( |
+ "null_array=null, " |
+ "empty_array=[], " |
+ "one_element_array=[123], " |
+ "three_element_array=[4, 5, 6]", |
+ so.str()); |
+} |
+ |
+TEST(FormattingTest, Maps) { |
+ Map<int32_t, std::string> null_map; |
+ Map<int32_t, std::string> empty_map; |
+ empty_map.mark_non_null(); |
+ Map<int32_t, std::string> one_element_map; |
+ one_element_map.insert(123, "abc"); |
+ Map<int32_t, std::string> three_element_map; |
+ three_element_map.insert(4, "d"); |
+ three_element_map.insert(5, "e"); |
+ three_element_map.insert(6, "f"); |
+ |
+ std::ostringstream so; |
+ so << "null_map=" << null_map << ", empty_map=" << empty_map |
+ << ", one_element_map=" << one_element_map |
+ << ", three_element_map=" << three_element_map; |
+ |
+ EXPECT_EQ( |
+ "null_map=null, " |
+ "empty_map={}, " |
+ "one_element_map={123: abc}, " |
viettrungluu
2016/01/26 23:19:40
Side comment (not for this CL -- for future refere
jeffbrown
2016/01/26 23:40:46
Starting to think you may be right, but the lack o
|
+ "three_element_map={4: d, 5: e, 6: f}", |
+ so.str()); |
+} |
+ |
+TEST(FormattingTest, Structs) { |
+ InlinedStructPtr<Rect> inlined_struct_ptr = MakeRect(1); |
+ InlinedStructPtr<Rect> null_inlined_struct_ptr; |
+ StructPtr<RectPair> struct_ptr = RectPair::New(); |
+ struct_ptr->first = MakeRect(2); |
+ StructPtr<RectPair> null_struct_ptr; |
+ |
+ std::ostringstream so; |
+ so << "inlined_struct_ptr=" << inlined_struct_ptr |
+ << ", null_inlined_struct_ptr=" << null_inlined_struct_ptr |
+ << ", struct_ptr=" << struct_ptr |
+ << ", null_struct_ptr=" << null_struct_ptr; |
+ EXPECT_EQ( |
+ "inlined_struct_ptr={x=1, y=2, width=10, height=20}, " |
+ "null_inlined_struct_ptr=null, " |
+ "struct_ptr={first={x=2, y=4, width=20, height=40}, second=null}, " |
+ "null_struct_ptr=null", |
+ so.str()); |
+} |
+ |
+} // namespace test |
+} // namespace mojo |