Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: test/plugin/TokenSequenceTest.cpp

Issue 29331055: Issue #1234 - Remove 'CString' from PluginFilter.* (Closed)
Patch Set: rebase Created Jan. 5, 2016, 4:07 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« src/plugin/TokenSequence.h ('K') | « test/UtilTest.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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 }
OLDNEW
« src/plugin/TokenSequence.h ('K') | « test/UtilTest.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld