// Copyright 2011 The ChromiumOS Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include #include "include/vector.h" namespace gestures { typedef vector test_vector; class VectorTest : public ::testing::Test {}; void ExpectGrowingVectorOfSize(const test_vector& vector, int expected_size) { int count = 0; for (const int& v : vector) { ++count; EXPECT_EQ(count, v); } EXPECT_EQ(expected_size, count); } TEST(VectorTest, PushFrontBackTest) { test_vector vector; vector.push_back(3); vector.insert(vector.begin(), 2); vector.push_back(4); vector.insert(vector.begin(), 1); vector.push_back(5); ExpectGrowingVectorOfSize(vector, 5); } TEST(VectorTest, InsertTest) { test_vector vector; vector.push_back(1); vector.push_back(2); vector.push_back(4); vector.push_back(5); vector.insert(vector.find(4), 3); ExpectGrowingVectorOfSize(vector, 5); } bool EvenFilter(const int& v) { return (v % 2) == 0; } TEST(VectorTest, FilterTest) { test_vector vector; vector.push_back(1); vector.push_back(2); vector.push_back(3); vector.push_back(4); vector.push_back(5); vector.push_back(6); int count = 0; FilteredRange range(vector.begin(), vector.end(), EvenFilter); for (const int& v : range) { EXPECT_TRUE((v % 2) == 0); ++count; } EXPECT_EQ(count, 3); } TEST(VectorTest, FilterEditTest) { test_vector vector; vector.push_back(1); vector.push_back(2); vector.push_back(4); vector.push_back(7); FilteredRange range(vector.begin(), vector.end(), EvenFilter); for (int& v : range) v = v + 1; // vector = [1, 3, 5, 7] vector.insert(vector.find(3), 2); vector.insert(vector.find(5), 4); vector.insert(vector.find(7), 6); ExpectGrowingVectorOfSize(vector, 7); } } // namespace gestures