1 // Copyright 2011 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <gtest/gtest.h>
6
7 #include "include/vector.h"
8
9 namespace gestures {
10
11 typedef vector<int, 10> test_vector;
12
13 class VectorTest : public ::testing::Test {};
14
ExpectGrowingVectorOfSize(const test_vector & vector,int expected_size)15 void ExpectGrowingVectorOfSize(const test_vector& vector, int expected_size) {
16 int count = 0;
17 for (const int& v : vector) {
18 ++count;
19 EXPECT_EQ(count, v);
20 }
21 EXPECT_EQ(expected_size, count);
22 }
23
TEST(VectorTest,PushFrontBackTest)24 TEST(VectorTest, PushFrontBackTest) {
25 test_vector vector;
26 vector.push_back(3);
27 vector.insert(vector.begin(), 2);
28 vector.push_back(4);
29 vector.insert(vector.begin(), 1);
30 vector.push_back(5);
31 ExpectGrowingVectorOfSize(vector, 5);
32 }
33
TEST(VectorTest,InsertTest)34 TEST(VectorTest, InsertTest) {
35 test_vector vector;
36 vector.push_back(1);
37 vector.push_back(2);
38 vector.push_back(4);
39 vector.push_back(5);
40 vector.insert(vector.find(4), 3);
41 ExpectGrowingVectorOfSize(vector, 5);
42 }
43
EvenFilter(const int & v)44 bool EvenFilter(const int& v) { return (v % 2) == 0; }
45
TEST(VectorTest,FilterTest)46 TEST(VectorTest, FilterTest) {
47 test_vector vector;
48 vector.push_back(1);
49 vector.push_back(2);
50 vector.push_back(3);
51 vector.push_back(4);
52 vector.push_back(5);
53 vector.push_back(6);
54
55 int count = 0;
56 FilteredRange<int> range(vector.begin(), vector.end(), EvenFilter);
57 for (const int& v : range) {
58 EXPECT_TRUE((v % 2) == 0);
59 ++count;
60 }
61 EXPECT_EQ(count, 3);
62 }
63
TEST(VectorTest,FilterEditTest)64 TEST(VectorTest, FilterEditTest) {
65 test_vector vector;
66 vector.push_back(1);
67 vector.push_back(2);
68 vector.push_back(4);
69 vector.push_back(7);
70 FilteredRange<int> range(vector.begin(), vector.end(), EvenFilter);
71 for (int& v : range)
72 v = v + 1;
73 // vector = [1, 3, 5, 7]
74 vector.insert(vector.find(3), 2);
75 vector.insert(vector.find(5), 4);
76 vector.insert(vector.find(7), 6);
77 ExpectGrowingVectorOfSize(vector, 7);
78 }
79
80 } // namespace gestures
81