103b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian/* 203b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * Copyright (C) 2012 The Android Open Source Project 303b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * 403b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 503b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * you may not use this file except in compliance with the License. 603b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * You may obtain a copy of the License at 703b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * 803b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 903b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * 1003b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * Unless required by applicable law or agreed to in writing, software 1103b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 1203b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1303b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * See the License for the specific language governing permissions and 1403b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian * limitations under the License. 1503b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian */ 1603b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 1703b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian#define LOG_TAG "Vector_test" 1803b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 1903b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian#include <utils/Vector.h> 2003b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian#include <cutils/log.h> 2103b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian#include <gtest/gtest.h> 2203b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian#include <unistd.h> 2303b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 2403b168a69bd155be2675d7dffa342a30990259f7Mathias Agopiannamespace android { 2503b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 2603b168a69bd155be2675d7dffa342a30990259f7Mathias Agopianclass VectorTest : public testing::Test { 2703b168a69bd155be2675d7dffa342a30990259f7Mathias Agopianprotected: 2803b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian virtual void SetUp() { 2903b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian } 3003b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 3103b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian virtual void TearDown() { 3203b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian } 3303b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 3403b168a69bd155be2675d7dffa342a30990259f7Mathias Agopianpublic: 3503b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian}; 3603b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 3703b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 3803b168a69bd155be2675d7dffa342a30990259f7Mathias AgopianTEST_F(VectorTest, CopyOnWrite_CopyAndAddElements) { 3903b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 4003b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian Vector<int> vector; 4103b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian Vector<int> other; 4203b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian vector.setCapacity(8); 4303b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 4403b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian vector.add(1); 4503b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian vector.add(2); 4603b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian vector.add(3); 4703b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 4803b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian EXPECT_EQ(vector.size(), 3); 4903b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 5003b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian // copy the vector 5103b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian other = vector; 5203b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 5303b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian EXPECT_EQ(other.size(), 3); 5403b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 5503b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian // add an element to the first vector 5603b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian vector.add(4); 5703b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 5803b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian // make sure the sizes are correct 5903b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian EXPECT_EQ(vector.size(), 4); 6003b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian EXPECT_EQ(other.size(), 3); 6103b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 6203b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian // add an element to the copy 6303b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian other.add(5); 6403b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 6503b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian // make sure the sizes are correct 6603b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian EXPECT_EQ(vector.size(), 4); 6703b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian EXPECT_EQ(other.size(), 4); 6803b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 6903b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian // make sure the content of both vectors are correct 7003b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian EXPECT_EQ(vector[3], 4); 7103b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian EXPECT_EQ(other[3], 5); 7203b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian} 7303b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 7403b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian 7503b168a69bd155be2675d7dffa342a30990259f7Mathias Agopian} // namespace android 76