diff options
author | Tony Mak <tonymak@google.com> | 2021-03-05 20:58:27 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-03-05 20:58:27 +0000 |
commit | 5757079a01916b9a76be7fd2f7a0caff3f6c4895 (patch) | |
tree | ce058d915982d93f07293c8ebe774ec17f7a984b /native | |
parent | 8c96c74f3c921389e118d37e711b2a7cb085a2cd (diff) | |
parent | 685a48d6b067183190bf25daef6dfa51097801eb (diff) | |
download | libtextclassifier-5757079a01916b9a76be7fd2f7a0caff3f6c4895.tar.gz |
Add some tests for coverage am: 685a48d6b0
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/libtextclassifier/+/13773941
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: If05be4c32ce1383f0609caca5d824af5df8a6efd
Diffstat (limited to 'native')
-rw-r--r-- | native/utils/lua-utils_test.cc | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/native/utils/lua-utils_test.cc b/native/utils/lua-utils_test.cc index 22a8a87..44190b8 100644 --- a/native/utils/lua-utils_test.cc +++ b/native/utils/lua-utils_test.cc @@ -95,6 +95,119 @@ TYPED_TEST(TypedLuaUtilsTest, HandlesVectorIterators) { testing::ContainerEq(elements)); } +TEST_F(LuaUtilsTest, IndexCallback) { + test::TestDataT input_data; + input_data.repeated_byte_field = {1, 2}; + input_data.repeated_ubyte_field = {1, 2}; + input_data.repeated_int_field = {1, 2}; + input_data.repeated_uint_field = {1, 2}; + input_data.repeated_long_field = {1, 2}; + input_data.repeated_ulong_field = {1, 2}; + input_data.repeated_bool_field = {true, false}; + input_data.repeated_float_field = {1, 2}; + input_data.repeated_double_field = {1, 2}; + input_data.repeated_string_field = {"1", "2"}; + + flatbuffers::FlatBufferBuilder builder; + builder.Finish(test::TestData::Pack(builder, &input_data)); + const flatbuffers::DetachedBuffer input_buffer = builder.Release(); + PushFlatbuffer(schema_.get(), + flatbuffers::GetRoot<flatbuffers::Table>(input_buffer.data())); + lua_setglobal(state_, "arg"); + // A Lua script that reads the vectors and return the first value of them. + // This should trigger the __index callback. + RunScript(R"lua( + return { + byte_field = arg.repeated_byte_field[1], + ubyte_field = arg.repeated_ubyte_field[1], + int_field = arg.repeated_int_field[1], + uint_field = arg.repeated_uint_field[1], + long_field = arg.repeated_long_field[1], + ulong_field = arg.repeated_ulong_field[1], + bool_field = arg.repeated_bool_field[1], + float_field = arg.repeated_float_field[1], + double_field = arg.repeated_double_field[1], + string_field = arg.repeated_string_field[1], + } + )lua"); + + // Read the flatbuffer. + std::unique_ptr<MutableFlatbuffer> buffer = flatbuffer_builder_.NewRoot(); + ReadFlatbuffer(/*index=*/-1, buffer.get()); + const std::string serialized_buffer = buffer->Serialize(); + std::unique_ptr<test::TestDataT> test_data = + LoadAndVerifyMutableFlatbuffer<test::TestData>(buffer->Serialize()); + + EXPECT_THAT(test_data->byte_field, 1); + EXPECT_THAT(test_data->ubyte_field, 1); + EXPECT_THAT(test_data->int_field, 1); + EXPECT_THAT(test_data->uint_field, 1); + EXPECT_THAT(test_data->long_field, 1); + EXPECT_THAT(test_data->ulong_field, 1); + EXPECT_THAT(test_data->bool_field, true); + EXPECT_THAT(test_data->float_field, FloatEq(1)); + EXPECT_THAT(test_data->double_field, DoubleEq(1)); + EXPECT_THAT(test_data->string_field, "1"); +} + +TEST_F(LuaUtilsTest, PairCallback) { + test::TestDataT input_data; + input_data.repeated_byte_field = {1, 2}; + input_data.repeated_ubyte_field = {1, 2}; + input_data.repeated_int_field = {1, 2}; + input_data.repeated_uint_field = {1, 2}; + input_data.repeated_long_field = {1, 2}; + input_data.repeated_ulong_field = {1, 2}; + input_data.repeated_bool_field = {true, false}; + input_data.repeated_float_field = {1, 2}; + input_data.repeated_double_field = {1, 2}; + input_data.repeated_string_field = {"1", "2"}; + + flatbuffers::FlatBufferBuilder builder; + builder.Finish(test::TestData::Pack(builder, &input_data)); + const flatbuffers::DetachedBuffer input_buffer = builder.Release(); + PushFlatbuffer(schema_.get(), + flatbuffers::GetRoot<flatbuffers::Table>(input_buffer.data())); + lua_setglobal(state_, "arg"); + + // Iterate the pushed repeated fields by using the pair API and check + // if the value is correct. This should trigger the __pair callback. + RunScript(R"lua( + function equal(table1, table2) + for key, value in pairs(table1) do + if value ~= table2[key] then + return false + end + end + return true + end + + local valid = equal(arg.repeated_byte_field, {[1]=1,[2]=2}) + valid = valid and equal(arg.repeated_ubyte_field, {[1]=1,[2]=2}) + valid = valid and equal(arg.repeated_int_field, {[1]=1,[2]=2}) + valid = valid and equal(arg.repeated_uint_field, {[1]=1,[2]=2}) + valid = valid and equal(arg.repeated_long_field, {[1]=1,[2]=2}) + valid = valid and equal(arg.repeated_ulong_field, {[1]=1,[2]=2}) + valid = valid and equal(arg.repeated_bool_field, {[1]=true,[2]=false}) + valid = valid and equal(arg.repeated_float_field, {[1]=1,[2]=2}) + valid = valid and equal(arg.repeated_double_field, {[1]=1,[2]=2}) + valid = valid and equal(arg.repeated_string_field, {[1]="1",[2]="2"}) + + return { + bool_field = valid + } + )lua"); + + // Read the flatbuffer. + std::unique_ptr<MutableFlatbuffer> buffer = flatbuffer_builder_.NewRoot(); + ReadFlatbuffer(/*index=*/-1, buffer.get()); + const std::string serialized_buffer = buffer->Serialize(); + std::unique_ptr<test::TestDataT> test_data = + LoadAndVerifyMutableFlatbuffer<test::TestData>(buffer->Serialize()); + + EXPECT_THAT(test_data->bool_field, true); +} + TEST_F(LuaUtilsTest, PushAndReadsFlatbufferRoundTrip) { // Setup. test::TestDataT input_data; |