13f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh/* 23f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Copyright (C) 2017 The Android Open Source Project 33f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 43f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Licensed under the Apache License, Version 2.0 (the "License"); 53f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * you may not use this file except in compliance with the License. 63f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * You may obtain a copy of the License at 73f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 83f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * http://www.apache.org/licenses/LICENSE-2.0 93f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * 103f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * Unless required by applicable law or agreed to in writing, software 113f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * distributed under the License is distributed on an "AS IS" BASIS, 123f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * See the License for the specific language governing permissions and 143f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh * limitations under the License. 153f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh */ 163f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 173f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "gtest/gtest.h" 183f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 193f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh#include "include/utility.h" 203f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 213f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehtemplate <typename TestType> 223f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehclass OffloadTypesTest : public testing::Test { 233f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh public: 243f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh // RandomGenerator used to initialize data-types with random values 253f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh wifi_offload_test::RandomGenerator random_gen_; 263f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 273f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh flatbuffers::FlatBufferBuilder builder; 283f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 293f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh void EqualOperatorReturnsTrueForEqualValues() { 303f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh TestType lhs; 313f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(lhs, random_gen_); 323f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 333f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh random_gen_.Reset(); 343f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh TestType rhs; 353f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(rhs, random_gen_); 363f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 373f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh EXPECT_EQ(lhs, rhs); 383f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh } 393f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 403f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh void EqualOperatorReturnsFalseForDifferentValues() { 413f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh TestType lhs, rhs; 423f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(lhs, random_gen_); 433f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(rhs, random_gen_); 443f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 453f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ASSERT_FALSE(lhs == rhs); 463f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh } 473f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 483f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh void SerializationThenDeserializationCreatesEqualValue() { 493f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh TestType test_obj; 503f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh init(test_obj, random_gen_); 513f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh builder.Finish(test_obj.Serialize(&builder)); 523f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 533f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh const uint8_t *serialized_buff = builder.GetBufferPointer(); 543f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh const size_t serialized_size = builder.GetSize(); 553f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ASSERT_NE(nullptr, serialized_buff); 563f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ASSERT_NE(0, serialized_size); 573f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 583f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh flatbuffers::Verifier verifier(serialized_buff, serialized_size); 593f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ASSERT_TRUE(verifier.VerifyBuffer<typename TestType::FbsType>(nullptr)); 603f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 613f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh const auto fbs_obj = 623f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh flatbuffers::GetRoot<typename TestType::FbsType>(serialized_buff); 633f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ASSERT_NE(nullptr, fbs_obj); 643f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 653f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh TestType deserialized_obj; 663f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh ASSERT_TRUE(deserialized_obj.Deserialize(*fbs_obj)); 673f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh EXPECT_EQ(test_obj, deserialized_obj); 683f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh } 693f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh}; 703f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 713f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadehtypedef testing::Types<wifi_offload::PreferredNetwork, wifi_offload::ScanResult, 723f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh wifi_offload::ScanParams, wifi_offload::ScanFilter, 733f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh wifi_offload::ScanConfig, wifi_offload::ScanRecord, 743f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh wifi_offload::RpcLogRecord, wifi_offload::ScanStats> 753f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh Implementations; 763f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 773f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi AlizadehTYPED_TEST_CASE(OffloadTypesTest, Implementations); 783f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 793f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi AlizadehTYPED_TEST(OffloadTypesTest, EqualOperatorReturnsTrueForEqualValues) { 803f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh this->EqualOperatorReturnsTrueForEqualValues(); 813f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 823f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 833f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi AlizadehTYPED_TEST(OffloadTypesTest, EqualOperatorReturnsFalseForDifferentValues) { 843f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh this->EqualOperatorReturnsFalseForDifferentValues(); 853f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 863f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh 873f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi AlizadehTYPED_TEST(OffloadTypesTest, 883f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh SerializationThenDeserializationCreatesEqualValue) { 893f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh this->SerializationThenDeserializationCreatesEqualValue(); 903f5e86ee9463dce381ebd8cdb65ab3f79c1b864dMehdi Alizadeh} 91