108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// Copyright (c) 2010, Google Inc. 208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// All rights reserved. 308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// 408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// Redistribution and use in source and binary forms, with or without 508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// modification, are permitted provided that the following conditions are 608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// met: 708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// 808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// * Redistributions of source code must retain the above copyright 908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// notice, this list of conditions and the following disclaimer. 1008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// * Redistributions in binary form must reproduce the above 1108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// copyright notice, this list of conditions and the following disclaimer 1208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// in the documentation and/or other materials provided with the 1308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// distribution. 1408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// * Neither the name of Google Inc. nor the names of its 1508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// contributors may be used to endorse or promote products derived from 1608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// this software without specific prior written permission. 1708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// 1808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 3008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// static_address_map_unittest.cc: Unit tests for StaticAddressMap. 3108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// 3208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com// Author: Siyang Xie (lambxsy@google.com) 3308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 3408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include <climits> 3508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include <cstdlib> 3608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include <ctime> 3708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include <string> 3808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include <iostream> 3908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include <sstream> 4008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 4108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include "breakpad_googletest_includes.h" 424e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com#include "common/using_std_string.h" 4308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include "processor/address_map-inl.h" 4408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include "processor/static_address_map-inl.h" 4508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include "processor/simple_serializer-inl.h" 4608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com#include "map_serializers-inl.h" 4708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 4808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.comtypedef google_breakpad::StaticAddressMap<int, char> TestMap; 494e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.comtypedef google_breakpad::AddressMap<int, string> AddrMap; 5008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 5108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.comclass TestStaticAddressMap : public ::testing::Test { 5208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com protected: 5308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com void SetUp() { 5408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int testcase = 0; testcase < kNumberTestCases; ++testcase) { 5508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com testdata[testcase] = new int[testsize[testcase]]; 5608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 5708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 5808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // Test data set0: NULL (empty map) 5908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 6008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // Test data set1: single element. 6108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com testdata[1][0] = 10; 6208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 6308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // Test data set2: six elements. 6408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com const int tempdata[] = {5, 10, 14, 15, 16, 20}; 6508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int i = 0; i < testsize[2]; ++i) 6608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com testdata[2][i] = tempdata[i]; 6708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 6808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // Test data set3: 6908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com srand(time(NULL)); 7008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int i = 0; i < testsize[3]; ++i) 7108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com testdata[3][i] = rand(); 7208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 7308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // Setup maps. 7408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com std::stringstream sstream; 7508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int testcase = 0; testcase < kNumberTestCases; ++testcase) { 7608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int data_item = 0; data_item < testsize[testcase]; ++data_item) { 7708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com sstream.clear(); 7808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com sstream << "test " << testdata[testcase][data_item]; 7908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com addr_map[testcase].Store(testdata[testcase][data_item], sstream.str()); 8008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 8108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com map_data[testcase] = serializer.Serialize(addr_map[testcase], NULL); 8208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com test_map[testcase] = TestMap(map_data[testcase]); 8308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 8408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 8508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 8608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com void TearDown() { 8708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int i = 0; i < kNumberTestCases; ++i) { 884adb6f4f7b6e87801eac85aac721846a2293f2dfSiyangXie@gmail.com delete [] map_data[i]; 8908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com delete [] testdata[i]; 9008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 9108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 9208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 9308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com void CompareRetrieveResult(int testcase, int target) { 9408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int address; 9508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int address_test; 964e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string entry; 974e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com string entry_test; 9808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com const char *entry_cstring = NULL; 9908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com bool found; 10008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com bool found_test; 10108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 10208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com found = addr_map[testcase].Retrieve(target, &entry, &address); 10308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com found_test = 10408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com test_map[testcase].Retrieve(target, entry_cstring, &address_test); 10508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 10608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com ASSERT_EQ(found, found_test); 10708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 10808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com if (found && found_test) { 10908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com ASSERT_EQ(address, address_test); 11008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com entry_test = entry_cstring; 11108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com ASSERT_EQ(entry, entry_test); 11208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 11308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 11408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 11508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com void RetrieveTester(int testcase) { 11608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int target; 11708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MIN; 11808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 11908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MAX; 12008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 12108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 12208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com srand(time(0)); 12308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int data_item = 0; data_item < testsize[testcase]; ++data_item) { 12408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // Retrive (aka, search) for target address and compare results from 12508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // AddressMap and StaticAddressMap. 12608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 12708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // First, assign the search target to be one of original testdata that is 12808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // known to exist in the map. 12908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = testdata[testcase][data_item]; 13008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 13108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // Then, add +2 / -1 bias to target value, in order to test searching for 13208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // a target address not stored in the map. 13308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target -= 1; 13408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 13508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target += 3; 13608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 13708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // Repeatedly test searching for random target addresses. 13808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = rand(); 13908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 14008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 14108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 14208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 14308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com // Test data sets: 14408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com static const int kNumberTestCases = 4; 14508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com static const int testsize[]; 14608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int *testdata[kNumberTestCases]; 14708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 14808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com AddrMap addr_map[kNumberTestCases]; 14908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com TestMap test_map[kNumberTestCases]; 15008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com char *map_data[kNumberTestCases]; 1514e518a4357a2d1c379d4a91df6d4e153ee791101ivan.penkov@gmail.com google_breakpad::AddressMapSerializer<int, string> serializer; 15208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com}; 15308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 15408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.comconst int TestStaticAddressMap::testsize[] = {0, 1, 6, 1000}; 15508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 15608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.comTEST_F(TestStaticAddressMap, TestEmptyMap) { 15708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int testcase = 0; 15808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int target; 15908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MIN; 16008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 16108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MAX; 16208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 16308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int data_item = 0; data_item < testsize[testcase]; ++data_item) { 16408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = testdata[testcase][data_item]; 16508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 16608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target -= 1; 16708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 16808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target += 3; 16908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 17008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = rand(); 17108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 17208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 17308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com} 17408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 17508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.comTEST_F(TestStaticAddressMap, TestOneElementMap) { 17608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int testcase = 1; 17708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int target; 17808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MIN; 17908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 18008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MAX; 18108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 18208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int data_item = 0; data_item < testsize[testcase]; ++data_item) { 18308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = testdata[testcase][data_item]; 18408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 18508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target -= 1; 18608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 18708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target += 3; 18808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 18908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = rand(); 19008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 19108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 19208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com} 19308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 19408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.comTEST_F(TestStaticAddressMap, TestSixElementsMap) { 19508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int testcase = 2; 19608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int target; 19708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MIN; 19808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 19908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MAX; 20008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 20108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int data_item = 0; data_item < testsize[testcase]; ++data_item) { 20208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = testdata[testcase][data_item]; 20308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 20408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target -= 1; 20508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 20608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target += 3; 20708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 20808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = rand(); 20908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 21008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 21108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com} 21208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 21308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.comTEST_F(TestStaticAddressMap, Test1000RandomElementsMap) { 21408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int testcase = 3; 21508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com int target; 21608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MIN; 21708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 21808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = INT_MAX; 21908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 22008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com for (int data_item = 0; data_item < testsize[testcase]; ++data_item) { 22108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = testdata[testcase][data_item]; 22208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 22308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target -= 1; 22408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 22508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target += 3; 22608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 22708730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com target = rand(); 22808730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com CompareRetrieveResult(testcase, target); 22908730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com } 23008730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com} 23108730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 23208730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.comint main(int argc, char *argv[]) { 23308730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com ::testing::InitGoogleTest(&argc, argv); 23408730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com 23508730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com return RUN_ALL_TESTS(); 23608730fc9a639e5b962f9a803ae8f5e91630e9484SiyangXie@gmail.com} 237