1a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian/* 2a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * Copyright (C) 2012 The Android Open Source Project 3a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * 4a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 5a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * you may not use this file except in compliance with the License. 6a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * You may obtain a copy of the License at 7a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * 8a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 9a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * 10a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * Unless required by applicable law or agreed to in writing, software 11a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 12a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * See the License for the specific language governing permissions and 14a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian * limitations under the License. 15a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian */ 16a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 17a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian#define LOG_TAG "Vector_test" 18a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 19a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian#include <utils/Vector.h> 20a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian#include <cutils/log.h> 21a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian#include <gtest/gtest.h> 22a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian#include <unistd.h> 23a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 24a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopiannamespace android { 25a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 26a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopianclass VectorTest : public testing::Test { 27a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopianprotected: 28a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian virtual void SetUp() { 29a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian } 30a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 31a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian virtual void TearDown() { 32a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian } 33a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 34a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopianpublic: 35a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian}; 36a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 37a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 38a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias AgopianTEST_F(VectorTest, CopyOnWrite_CopyAndAddElements) { 39a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 40a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian Vector<int> vector; 41a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian Vector<int> other; 42a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian vector.setCapacity(8); 43a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 44a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian vector.add(1); 45a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian vector.add(2); 46a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian vector.add(3); 47a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 48a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian EXPECT_EQ(vector.size(), 3); 49a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 50a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian // copy the vector 51a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian other = vector; 52a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 53a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian EXPECT_EQ(other.size(), 3); 54a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 55a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian // add an element to the first vector 56a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian vector.add(4); 57a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 58a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian // make sure the sizes are correct 59a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian EXPECT_EQ(vector.size(), 4); 60a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian EXPECT_EQ(other.size(), 3); 61a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 62a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian // add an element to the copy 63a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian other.add(5); 64a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 65a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian // make sure the sizes are correct 66a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian EXPECT_EQ(vector.size(), 4); 67a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian EXPECT_EQ(other.size(), 4); 68a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 69a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian // make sure the content of both vectors are correct 70a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian EXPECT_EQ(vector[3], 4); 71a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian EXPECT_EQ(other[3], 5); 72a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian} 73a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 74a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian 75a9611c5d5b61c594b9f5f24b24a665dc1e647f81Mathias Agopian} // namespace android 76