From 9667a4169fc7343e8d4edd1ef2ac00e395825cda Mon Sep 17 00:00:00 2001 From: Jeremy Manson <jeremymanson@google.com> Date: Wed, 21 Nov 2018 13:01:00 -0800 Subject: [PATCH] [fidl] Test to ensure inherited methods have correct ordinal. Test: This adds a test. Change-Id: I4c380678301bf724c95693c538d2c97ad48567df --- .../fidl-compiler/json_generator_tests.cpp | 130 +++++++++++++++++- 1 file changed, 128 insertions(+), 2 deletions(-) diff --git a/system/utest/fidl-compiler/json_generator_tests.cpp b/system/utest/fidl-compiler/json_generator_tests.cpp index 9815045ad1c..bb7d2ad09e7 100644 --- a/system/utest/fidl-compiler/json_generator_tests.cpp +++ b/system/utest/fidl-compiler/json_generator_tests.cpp @@ -27,8 +27,7 @@ static inline void trim(std::string& s) { })); s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) { return !std::isspace(ch) && ch != '\n'; - }) - .base(), + }).base(), s.end()); } @@ -329,10 +328,137 @@ union PizzaOrPasta { END_TEST; } +// This test ensures that inherited methods have the same ordinal / signature / +// etc as the method from which they are inheriting. +bool json_generator_test_inheritance() { + BEGIN_TEST; + + for (int i = 0; i < kRepeatTestCount; i++) { + EXPECT_TRUE(checkJSONGenerator(R"FIDL( +library fidl.test.json; + +[FragileBase] +interface super { + foo(string s) -> (int64 y); +}; + +interface sub : super { +}; + +)FIDL", + R"JSON({ + "version": "0.0.1", + "name": "fidl.test.json", + "library_dependencies": [], + "const_declarations": [], + "enum_declarations": [], + "interface_declarations": [ + { + "name": "fidl.test.json/super", + "maybe_attributes": [ + { + "name": "FragileBase", + "value": "" + } + ], + "methods": [ + { + "ordinal": 790020540, + "name": "foo", + "has_request": true, + "maybe_request": [ + { + "type": { + "kind": "string", + "nullable": false + }, + "name": "s", + "size": 16, + "alignment": 8, + "offset": 16 + } + ], + "maybe_request_size": 32, + "maybe_request_alignment": 8, + "has_response": true, + "maybe_response": [ + { + "type": { + "kind": "primitive", + "subtype": "int64" + }, + "name": "y", + "size": 8, + "alignment": 8, + "offset": 16 + } + ], + "maybe_response_size": 24, + "maybe_response_alignment": 8 + } + ] + }, + { + "name": "fidl.test.json/sub", + "methods": [ + { + "ordinal": 790020540, + "name": "foo", + "has_request": true, + "maybe_request": [ + { + "type": { + "kind": "string", + "nullable": false + }, + "name": "s", + "size": 16, + "alignment": 8, + "offset": 16 + } + ], + "maybe_request_size": 32, + "maybe_request_alignment": 8, + "has_response": true, + "maybe_response": [ + { + "type": { + "kind": "primitive", + "subtype": "int64" + }, + "name": "y", + "size": 8, + "alignment": 8, + "offset": 16 + } + ], + "maybe_response_size": 24, + "maybe_response_alignment": 8 + } + ] + } + ], + "struct_declarations": [], + "table_declarations": [], + "union_declarations": [], + "declaration_order": [ + "fidl.test.json/super", + "fidl.test.json/sub" + ], + "declarations": { + "fidl.test.json/super": "interface", + "fidl.test.json/sub": "interface" + } +})JSON")); + } + + END_TEST; +} } // namespace BEGIN_TEST_CASE(json_generator_tests); RUN_TEST(json_generator_test_struct); RUN_TEST(json_generator_test_table); RUN_TEST(json_generator_test_union); +RUN_TEST(json_generator_test_inheritance); END_TEST_CASE(json_generator_tests); -- GitLab