xref: /aosp_15_r20/external/libchrome-gestures/src/vector_unittest.cc (revision aed3e5085e770be5b69ce25295ecf6ddf906af95)
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