Left: | ||
Right: |
OLD | NEW |
---|---|
(Empty) | |
1 /* | |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | |
3 * Copyright (C) 2006-2015 Eyeo GmbH | |
4 * | |
5 * Adblock Plus is free software: you can redistribute it and/or modify | |
6 * it under the terms of the GNU General Public License version 3 as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * Adblock Plus is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License | |
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | |
16 */ | |
17 #include <gtest/gtest.h> | |
18 #include "../../src/plugin/TokenSequence.h" | |
19 | |
20 TEST(TokenSequence, MustHaveDelimiters) | |
21 { | |
22 ASSERT_THROW( | |
23 { | |
24 TokenSequence<std::wstring> s(L"foo", L""); | |
25 }, | |
26 std::runtime_error | |
27 ); | |
28 } | |
29 | |
30 TEST(TokenSequence, Cbegin1) | |
sergei
2016/01/25 14:13:54
That's really not clear what is being tested by an
| |
31 { | |
32 TokenSequence<std::wstring> s(L"", L" "); | |
33 auto a = s.cbegin(); | |
34 auto b = s.cbegin(); | |
35 ASSERT_TRUE(a == b); | |
36 } | |
37 | |
38 TEST(TokenSequence, Cbegin2) | |
39 { | |
40 TokenSequence<std::wstring> s(L"foo", L" "); | |
41 auto a = s.cbegin(); | |
42 auto b = s.cbegin(); | |
43 ASSERT_TRUE(a == b); | |
44 } | |
45 | |
46 TEST(TokenSequence, Cend1) | |
47 { | |
48 TokenSequence<std::wstring> s(L"", L" "); | |
49 auto a = s.cend(); | |
50 auto b = s.cend(); | |
51 ASSERT_TRUE(a == b); | |
52 } | |
53 | |
54 TEST(TokenSequence, Cend2) | |
55 { | |
56 TokenSequence<std::wstring> s(L"foo", L" "); | |
57 auto a = s.cend(); | |
58 auto b = s.cend(); | |
59 ASSERT_TRUE(a == b); | |
60 } | |
61 | |
62 TEST(TokenSequence, BeginIsEndIfNoTokens1) | |
63 { | |
64 TokenSequence<std::wstring> s(L"", L" "); | |
65 auto a = s.cbegin(); | |
66 auto b = s.cend(); | |
67 ASSERT_TRUE(a == b); | |
68 } | |
69 | |
70 TEST(TokenSequence, BeginIsEndIfNoTokens2) | |
71 { | |
72 TokenSequence<std::wstring> s(L" ", L" "); | |
73 auto a = s.cbegin(); | |
74 auto b = s.cend(); | |
75 ASSERT_TRUE(a == b); | |
76 } | |
77 | |
78 TEST(TokenSequence, BeginIsNotEndIfTokens) | |
79 { | |
80 TokenSequence<std::wstring> s(L"foo", L" "); | |
81 auto a = s.cbegin(); | |
82 auto b = s.cend(); | |
83 ASSERT_TRUE(a != b); | |
84 } | |
85 | |
86 TEST(TokenSequence, MayNotIndirectEndIterator1) | |
87 { | |
88 TokenSequence<std::wstring> s(L"foo", L" "); | |
89 auto b = s.cend(); | |
90 ASSERT_THROW( | |
91 { | |
92 auto x = *b; | |
93 }, | |
94 std::runtime_error | |
95 ); | |
96 } | |
97 | |
98 TEST(TokenSequence, MayNotIndirectEndIterator2) | |
99 { | |
100 TokenSequence<std::wstring> s(L"", L" "); | |
101 auto a = s.cbegin(); | |
102 ASSERT_THROW( | |
103 { | |
104 auto x = *a; | |
105 }, | |
106 std::runtime_error | |
107 ); | |
108 } | |
109 | |
110 TEST(TokenSequence, SingleToken1) | |
111 { | |
112 TokenSequence<std::wstring> s(L"foo", L" "); | |
113 auto a = s.cbegin(); | |
114 ASSERT_EQ(L"foo", *a); | |
115 ++a; | |
116 ASSERT_TRUE(a == s.cend()); | |
117 } | |
118 | |
119 TEST(TokenSequence, SingleToken2) | |
120 { | |
121 TokenSequence<std::wstring> s(L"foo ", L" "); | |
122 auto a = s.cbegin(); | |
123 ASSERT_EQ(L"foo", *a); | |
124 ++a; | |
125 ASSERT_TRUE(a == s.cend()); | |
126 } | |
127 | |
128 TEST(TokenSequence, SingleToken3) | |
129 { | |
130 TokenSequence<std::wstring> s(L" foo", L" "); | |
131 auto a = s.cbegin(); | |
132 ASSERT_EQ(L"foo", *a); | |
133 ++a; | |
134 ASSERT_TRUE(a == s.cend()); | |
135 } | |
136 | |
137 TEST(TokenSequence, SingleToken4) | |
138 { | |
139 TokenSequence<std::wstring> s(L" foo ", L" "); | |
140 auto a = s.cbegin(); | |
141 ASSERT_EQ(L"foo", *a); | |
142 ++a; | |
143 ASSERT_TRUE(a == s.cend()); | |
144 } | |
145 | |
146 TEST(TokenSequence, IncrementEndToken) | |
147 { | |
148 TokenSequence<std::wstring> s(L"foo", L" "); | |
149 auto a = s.cend(); | |
150 ++a; | |
151 ASSERT_TRUE(a == s.cend()); | |
152 } | |
153 | |
154 void MultipleTokens(const std::wstring& text) | |
155 { | |
156 TokenSequence<std::wstring> s(text, L" "); | |
157 auto a = s.cbegin(); | |
158 ASSERT_NE(a, s.cend()); | |
159 ASSERT_EQ(L"foo", *a); | |
160 ++a; | |
161 ASSERT_NE(a, s.cend()); | |
162 ASSERT_EQ(L"bar", *a); | |
163 ++a; | |
164 ASSERT_NE(a, s.cend()); | |
165 ASSERT_EQ(L"baz", *a); | |
166 ++a; | |
167 ASSERT_EQ(a, s.cend()); | |
168 } | |
169 | |
170 TEST(TokenSequence, MultipleTokens1) | |
171 { | |
172 MultipleTokens(L"foo bar baz"); | |
173 } | |
174 | |
175 TEST(TokenSequence, MultipleTokens2) | |
176 { | |
177 MultipleTokens(L"foo bar baz "); | |
178 } | |
179 | |
180 TEST(TokenSequence, MultipleTokens3) | |
181 { | |
182 MultipleTokens(L" foo bar baz"); | |
183 } | |
184 | |
185 TEST(TokenSequence, MultipleTokens4) | |
186 { | |
187 MultipleTokens(L" foo bar baz "); | |
188 } | |
189 | |
190 TEST(TokenSequence, ForLoop) | |
191 { | |
192 TokenSequence<std::wstring> s(L"foo bar baz", L" "); | |
193 auto a = s.cbegin(); | |
194 for (int j = 0; a != s.cend(); ++a, ++j) | |
sergei
2016/01/25 14:13:55
1. What is tested here?
2. Why is it so complicate
| |
195 { | |
196 switch (j) | |
197 { | |
198 case 0: | |
199 ASSERT_EQ(L"foo", *a); | |
200 break; | |
201 case 1: | |
202 ASSERT_EQ(L"bar", *a); | |
203 break; | |
204 case 2: | |
205 ASSERT_EQ(L"baz", *a); | |
206 break; | |
207 } | |
208 } | |
209 ASSERT_EQ(s.cend(), a); | |
210 } | |
OLD | NEW |