@@ -23,16 +23,109 @@ namespace {
23
23
24
24
using FilterTest = FirestoreIntegrationTest;
25
25
26
- TEST_F (FilterTest, IdenticalShouldBeEqual) {
26
+ TEST_F (FilterTest, CopyConstructorReturnsEqualObject) {
27
+ const Filter filter1a = Filter::EqualTo (" foo" , FieldValue::Integer (42 ));
28
+ const Filter filter2a = Filter::ArrayContainsAny (
29
+ " bar" , {FieldValue::Integer (4 ), FieldValue::Integer (2 )});
30
+ const Filter filter3a = Filter::And (filter1a, filter2a);
31
+
32
+ const Filter filter1b (filter1a);
33
+ const Filter filter2b (filter2a);
34
+ const Filter filter3b (filter3a);
35
+
36
+ EXPECT_EQ (filter1a, filter1b);
37
+ EXPECT_EQ (filter2a, filter2b);
38
+ EXPECT_EQ (filter3a, filter3b);
39
+ }
40
+
41
+ TEST_F (FilterTest, CopyAssignementReturnsEqualObject) {
42
+ const Filter filter1 = Filter::EqualTo (" foo" , FieldValue::Integer (42 ));
43
+ const Filter filter2 = Filter::ArrayContainsAny (
44
+ " bar" , {FieldValue::Integer (4 ), FieldValue::Integer (2 )});
45
+ const Filter filter3 = Filter::And (filter1, filter2);
46
+
47
+ Filter filter = Filter::And ();
48
+
49
+ EXPECT_NE (filter, filter1);
50
+ EXPECT_NE (filter, filter2);
51
+ EXPECT_NE (filter, filter3);
52
+
53
+ filter = filter1;
54
+
55
+ EXPECT_EQ (filter, filter1);
56
+ EXPECT_NE (filter, filter2);
57
+ EXPECT_NE (filter, filter3);
58
+
59
+ filter = filter2;
60
+
61
+ EXPECT_NE (filter, filter1);
62
+ EXPECT_EQ (filter, filter2);
63
+ EXPECT_NE (filter, filter3);
64
+
65
+ filter = filter3;
66
+
67
+ EXPECT_NE (filter, filter1);
68
+ EXPECT_NE (filter, filter2);
69
+ EXPECT_EQ (filter, filter3);
70
+ }
71
+
72
+ TEST_F (FilterTest, MoveConstructorReturnsEqualObject) {
73
+ Filter filter1a = Filter::EqualTo (" foo" , FieldValue::Integer (42 ));
74
+ Filter filter2a = Filter::ArrayContainsAny (
75
+ " bar" , {FieldValue::Integer (4 ), FieldValue::Integer (2 )});
76
+ Filter filter3a = Filter::And (filter1a, filter2a);
77
+
78
+ Filter filter1b (std::move (filter1a));
79
+ EXPECT_EQ (filter1b, Filter::EqualTo (" foo" , FieldValue::Integer (42 )));
80
+
81
+ Filter filter2b (std::move (filter2a));
82
+ EXPECT_EQ (filter2b, Filter::ArrayContainsAny (" bar" , {FieldValue::Integer (4 ), FieldValue::Integer (2 )}));
83
+
84
+ Filter filter3b (std::move (filter3a));
85
+ EXPECT_EQ (filter3b, Filter::And (filter1b, filter2b));
86
+ }
87
+
88
+ TEST_F (FilterTest, MoveAssignmentReturnsEqualObject) {
89
+ Filter filter1a = Filter::EqualTo (" foo" , FieldValue::Integer (42 ));
90
+ Filter filter2a = Filter::ArrayContainsAny (
91
+ " bar" , {FieldValue::Integer (4 ), FieldValue::Integer (2 )});
92
+ Filter filter3a = Filter::And (filter1a, filter2a);
93
+
94
+ Filter filter1b = std::move (filter1a);
95
+ EXPECT_EQ (filter1b, Filter::EqualTo (" foo" , FieldValue::Integer (42 )));
96
+
97
+ Filter filter2b = std::move (filter2a);
98
+ EXPECT_EQ (filter2b, Filter::ArrayContainsAny (" bar" , {FieldValue::Integer (4 ), FieldValue::Integer (2 )}));
99
+
100
+ Filter filter3b = std::move (filter3a);
101
+ EXPECT_EQ (filter3b, Filter::And (filter1b, filter2b));
102
+ }
103
+
104
+ TEST_F (FilterTest, MoveAssignmentAppliedToSelfReturnsEqualObject) {
105
+ Filter filter1 = Filter::EqualTo (" foo" , FieldValue::Integer (42 ));
106
+ Filter filter2 = Filter::ArrayContainsAny (
107
+ " bar" , {FieldValue::Integer (4 ), FieldValue::Integer (2 )});
108
+ Filter filter3 = Filter::And (filter1, filter2);
109
+
110
+ filter1 = std::move (filter1);
111
+ EXPECT_EQ (filter1, Filter::EqualTo (" foo" , FieldValue::Integer (42 )));
112
+
113
+ filter2 = std::move (filter2);
114
+ EXPECT_EQ (filter2, Filter::ArrayContainsAny (" bar" , {FieldValue::Integer (4 ), FieldValue::Integer (2 )}));
115
+
116
+ filter3 = std::move (filter3);
117
+ EXPECT_EQ (filter3, Filter::And (filter1, filter2));
118
+ }
119
+
120
+ TEST_F (FilterTest, IdenticalFilterShouldBeEqual) {
27
121
FieldPath foo_path{std::vector<std::string>{" foo" }};
28
122
29
123
Filter filter1a = Filter::ArrayContains (" foo" , FieldValue::Integer (42 ));
30
124
Filter filter1b = Filter::ArrayContains (foo_path, FieldValue::Integer (42 ));
31
125
32
- Filter filter2a = Filter::ArrayContainsAny (
33
- " foo" , std::vector<FieldValue>{FieldValue::Integer (42 )});
34
- Filter filter2b = Filter::ArrayContainsAny (
35
- foo_path, std::vector<FieldValue>{FieldValue::Integer (42 )});
126
+ Filter filter2a = Filter::ArrayContainsAny (" foo" , {FieldValue::Integer (42 )});
127
+ Filter filter2b =
128
+ Filter::ArrayContainsAny (foo_path, {FieldValue::Integer (42 )});
36
129
37
130
Filter filter3a = Filter::EqualTo (" foo" , FieldValue::Integer (42 ));
38
131
Filter filter3b = Filter::EqualTo (foo_path, FieldValue::Integer (42 ));
@@ -55,15 +148,17 @@ TEST_F(FilterTest, IdenticalShouldBeEqual) {
55
148
Filter filter8b =
56
149
Filter::LessThanOrEqualTo (foo_path, FieldValue::Integer (42 ));
57
150
58
- Filter filter9a =
59
- Filter::In (" foo" , std::vector<FieldValue>{FieldValue::Integer (42 )});
60
- Filter filter9b =
61
- Filter::In (foo_path, std::vector<FieldValue>{FieldValue::Integer (42 )});
151
+ Filter filter9a = Filter::In (" foo" , {FieldValue::Integer (42 )});
152
+ Filter filter9b = Filter::In (foo_path, {FieldValue::Integer (42 )});
153
+
154
+ Filter filter10a = Filter::NotIn (" foo" , {FieldValue::Integer (42 )});
155
+ Filter filter10b = Filter::NotIn (foo_path, {FieldValue::Integer (42 )});
62
156
63
- Filter filter10a =
64
- Filter::NotIn (" foo" , std::vector<FieldValue>{FieldValue::Integer (42 )});
65
- Filter filter10b =
66
- Filter::NotIn (foo_path, std::vector<FieldValue>{FieldValue::Integer (42 )});
157
+ Filter filter11a = Filter::And (filter1a, filter2a);
158
+ Filter filter11b = Filter::And (filter1b, filter2b);
159
+
160
+ Filter filter12a = Filter::Or (filter3a, filter4a, filter5a, filter6a, filter7a);
161
+ Filter filter12b = Filter::Or (filter3b, filter4b, filter5b, filter6b, filter7b);
67
162
68
163
EXPECT_TRUE (filter1a == filter1a);
69
164
EXPECT_TRUE (filter2a == filter2a);
@@ -75,6 +170,8 @@ TEST_F(FilterTest, IdenticalShouldBeEqual) {
75
170
EXPECT_TRUE (filter8a == filter8a);
76
171
EXPECT_TRUE (filter9a == filter9a);
77
172
EXPECT_TRUE (filter10a == filter10a);
173
+ EXPECT_TRUE (filter11a == filter11a);
174
+ EXPECT_TRUE (filter12a == filter12a);
78
175
79
176
EXPECT_TRUE (filter1a == filter1b);
80
177
EXPECT_TRUE (filter2a == filter2b);
@@ -86,6 +183,8 @@ TEST_F(FilterTest, IdenticalShouldBeEqual) {
86
183
EXPECT_TRUE (filter8a == filter8b);
87
184
EXPECT_TRUE (filter9a == filter9b);
88
185
EXPECT_TRUE (filter10a == filter10b);
186
+ EXPECT_TRUE (filter11a == filter11b);
187
+ EXPECT_TRUE (filter12a == filter12b);
89
188
90
189
EXPECT_FALSE (filter1a != filter1a);
91
190
EXPECT_FALSE (filter2a != filter2a);
@@ -97,6 +196,8 @@ TEST_F(FilterTest, IdenticalShouldBeEqual) {
97
196
EXPECT_FALSE (filter8a != filter8a);
98
197
EXPECT_FALSE (filter9a != filter9a);
99
198
EXPECT_FALSE (filter10a != filter10a);
199
+ EXPECT_FALSE (filter11a != filter11a);
200
+ EXPECT_FALSE (filter12a != filter12a);
100
201
101
202
EXPECT_FALSE (filter1a != filter1b);
102
203
EXPECT_FALSE (filter2a != filter2b);
@@ -108,6 +209,8 @@ TEST_F(FilterTest, IdenticalShouldBeEqual) {
108
209
EXPECT_FALSE (filter8a != filter8b);
109
210
EXPECT_FALSE (filter9a != filter9b);
110
211
EXPECT_FALSE (filter10a != filter10b);
212
+ EXPECT_FALSE (filter11a != filter11b);
213
+ EXPECT_FALSE (filter12a != filter12b);
111
214
112
215
EXPECT_TRUE (filter1a != filter2a);
113
216
EXPECT_TRUE (filter1a != filter3a);
@@ -118,6 +221,8 @@ TEST_F(FilterTest, IdenticalShouldBeEqual) {
118
221
EXPECT_TRUE (filter1a != filter8a);
119
222
EXPECT_TRUE (filter1a != filter9a);
120
223
EXPECT_TRUE (filter1a != filter10a);
224
+ EXPECT_TRUE (filter1a != filter11a);
225
+ EXPECT_TRUE (filter1a != filter12a);
121
226
EXPECT_TRUE (filter2a != filter3a);
122
227
EXPECT_TRUE (filter2a != filter4a);
123
228
EXPECT_TRUE (filter2a != filter5a);
@@ -126,34 +231,53 @@ TEST_F(FilterTest, IdenticalShouldBeEqual) {
126
231
EXPECT_TRUE (filter2a != filter8a);
127
232
EXPECT_TRUE (filter2a != filter9a);
128
233
EXPECT_TRUE (filter2a != filter10a);
234
+ EXPECT_TRUE (filter2a != filter11a);
235
+ EXPECT_TRUE (filter2a != filter12a);
129
236
EXPECT_TRUE (filter3a != filter4a);
130
237
EXPECT_TRUE (filter3a != filter5a);
131
238
EXPECT_TRUE (filter3a != filter6a);
132
239
EXPECT_TRUE (filter3a != filter7a);
133
240
EXPECT_TRUE (filter3a != filter8a);
134
241
EXPECT_TRUE (filter3a != filter9a);
135
242
EXPECT_TRUE (filter3a != filter10a);
243
+ EXPECT_TRUE (filter3a != filter11a);
244
+ EXPECT_TRUE (filter3a != filter12a);
136
245
EXPECT_TRUE (filter4a != filter5a);
137
246
EXPECT_TRUE (filter4a != filter6a);
138
247
EXPECT_TRUE (filter4a != filter7a);
139
248
EXPECT_TRUE (filter4a != filter8a);
140
249
EXPECT_TRUE (filter4a != filter9a);
141
250
EXPECT_TRUE (filter4a != filter10a);
251
+ EXPECT_TRUE (filter4a != filter11a);
252
+ EXPECT_TRUE (filter4a != filter12a);
142
253
EXPECT_TRUE (filter5a != filter6a);
143
254
EXPECT_TRUE (filter5a != filter7a);
144
255
EXPECT_TRUE (filter5a != filter8a);
145
256
EXPECT_TRUE (filter5a != filter9a);
146
257
EXPECT_TRUE (filter5a != filter10a);
258
+ EXPECT_TRUE (filter5a != filter11a);
259
+ EXPECT_TRUE (filter5a != filter12a);
147
260
EXPECT_TRUE (filter6a != filter7a);
148
261
EXPECT_TRUE (filter6a != filter8a);
149
262
EXPECT_TRUE (filter6a != filter9a);
150
263
EXPECT_TRUE (filter6a != filter10a);
264
+ EXPECT_TRUE (filter6a != filter11a);
265
+ EXPECT_TRUE (filter6a != filter12a);
151
266
EXPECT_TRUE (filter7a != filter8a);
152
267
EXPECT_TRUE (filter7a != filter9a);
153
268
EXPECT_TRUE (filter7a != filter10a);
269
+ EXPECT_TRUE (filter7a != filter11a);
270
+ EXPECT_TRUE (filter7a != filter12a);
154
271
EXPECT_TRUE (filter8a != filter9a);
155
272
EXPECT_TRUE (filter8a != filter10a);
273
+ EXPECT_TRUE (filter8a != filter11a);
274
+ EXPECT_TRUE (filter8a != filter12a);
156
275
EXPECT_TRUE (filter9a != filter10a);
276
+ EXPECT_TRUE (filter9a != filter11a);
277
+ EXPECT_TRUE (filter9a != filter12a);
278
+ EXPECT_TRUE (filter10a != filter11a);
279
+ EXPECT_TRUE (filter10a != filter12a);
280
+ EXPECT_TRUE (filter11a != filter12a);
157
281
}
158
282
159
283
TEST_F (FilterTest, DifferentValuesAreNotEqual) {
@@ -231,7 +355,7 @@ TEST_F(FilterTest, CompositesWithOneFilterAreTheSameAsFilter) {
231
355
EXPECT_FALSE (filter1 != filter3);
232
356
}
233
357
234
- TEST_F (FilterTest, EmptyCompositeIsIgnored ) {
358
+ TEST_F (FilterTest, EmptyCompositeIsIgnoredByCompositesAndQueries ) {
235
359
Filter filter1 = Filter::And ();
236
360
Filter filter2 = Filter::And (Filter::And (), Filter::And ());
237
361
Filter filter3 = Filter::And (Filter::Or (), Filter::Or ());
@@ -287,7 +411,9 @@ TEST_F(FilterTest, CompositeComparison) {
287
411
EXPECT_EQ (or3, or3);
288
412
EXPECT_EQ (or4, or4);
289
413
414
+ // Is equal because single filter composite is same as filter itself.
290
415
EXPECT_EQ (and1, or1);
416
+
291
417
EXPECT_NE (and2, or2);
292
418
EXPECT_NE (and3, or3);
293
419
EXPECT_NE (and4, or4);
0 commit comments