Skip to content

Commit 5c29499

Browse files
committed
Make FieldFilter constructor protected
1 parent 09ca539 commit 5c29499

File tree

4 files changed

+34
-35
lines changed

4 files changed

+34
-35
lines changed

Firestore/Example/Tests/Core/FSTViewTests.mm

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050

5151
using testing::ElementsAre;
5252
using testutil::Field;
53+
using testutil::Filter;
5354

5455
NS_ASSUME_NONNULL_BEGIN
5556

@@ -176,9 +177,7 @@ - (void)testDoesNotReturnNilForFirstChanges {
176177

177178
- (void)testFiltersDocumentsBasedOnQueryWithFilter {
178179
FSTQuery *query = [self queryForMessages];
179-
auto filter = std::make_shared<FieldFilter>(Field("sort"), Filter::Operator::LessThanOrEqual,
180-
FieldValue::FromDouble(2));
181-
query = [query queryByAddingFilter:filter];
180+
query = [query queryByAddingFilter:Filter("sort", "<=", 2)];
182181

183182
FSTView *view = [[FSTView alloc] initWithQuery:query remoteDocuments:DocumentKeySet{}];
184183
FSTDocument *doc1 =
@@ -213,9 +212,7 @@ - (void)testFiltersDocumentsBasedOnQueryWithFilter {
213212

214213
- (void)testUpdatesDocumentsBasedOnQueryWithFilter {
215214
FSTQuery *query = [self queryForMessages];
216-
auto filter = std::make_shared<FieldFilter>(Field("sort"), Filter::Operator::LessThanOrEqual,
217-
FieldValue::FromDouble(2));
218-
query = [query queryByAddingFilter:filter];
215+
query = [query queryByAddingFilter:Filter("sort", "<=", 2)];
219216

220217
FSTView *view = [[FSTView alloc] initWithQuery:query remoteDocuments:DocumentKeySet{}];
221218
FSTDocument *doc1 =

Firestore/Source/Remote/FSTSerializerBeta.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -951,7 +951,7 @@ - (GCFSStructuredQuery_Filter *)encodedFieldFilter:(const FieldFilter &)filter {
951951
FieldPath fieldPath = FieldPath::FromServerFormat(util::MakeString(proto.field.fieldPath));
952952
Filter::Operator op = [self decodedFieldFilterOperator:proto.op];
953953
FieldValue value = [self decodedFieldValue:proto.value];
954-
return std::make_shared<FieldFilter>(std::move(fieldPath), op, std::move(value));
954+
return FieldFilter::Create(std::move(fieldPath), op, std::move(value));
955955
}
956956

957957
- (GCFSStructuredQuery_Filter *)encodedUnaryFilter:(const Filter &)filter {

Firestore/core/src/firebase/firestore/core/field_filter.h

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,6 @@ class FieldFilter : public Filter {
4444

4545
FieldFilter() = default;
4646

47-
/**
48-
* Creates a new filter that compares fields and values. Only intended to be
49-
* called from Filter::Create().
50-
*
51-
* @param field A path to a field in the document to filter on. The LHS of the
52-
* expression.
53-
* @param op The binary operator to apply.
54-
* @param value_rhs A constant value to compare @a field to. The RHS of the
55-
* expression.
56-
*/
57-
FieldFilter(model::FieldPath field, Operator op, model::FieldValue value_rhs);
58-
5947
Type type() const override {
6048
return Type::kFieldFilter;
6149
}
@@ -79,11 +67,25 @@ class FieldFilter : public Filter {
7967

8068
bool IsInequality() const override;
8169

70+
protected:
71+
/**
72+
* Creates a new filter that compares fields and values. Only intended to be
73+
* called from Filter::Create().
74+
*
75+
* @param field A path to a field in the document to filter on. The LHS of the
76+
* expression.
77+
* @param op The binary operator to apply.
78+
* @param value_rhs A constant value to compare @a field to. The RHS of the
79+
* expression.
80+
*/
81+
FieldFilter(model::FieldPath field, Operator op, model::FieldValue value_rhs);
82+
83+
bool MatchesComparison(util::ComparisonResult result) const;
84+
8285
private:
8386
bool Equals(const Filter& other) const override;
8487

8588
bool MatchesValue(const model::FieldValue& lhs) const;
86-
bool MatchesComparison(util::ComparisonResult result) const;
8789

8890
/** The left hand side of the relation. A path into a document field. */
8991
model::FieldPath field_;

Firestore/core/test/firebase/firestore/core/filter_test.cc

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,21 @@ using testutil::Value;
3434
using Operator = Filter::Operator;
3535

3636
TEST(FilterTest, Equality) {
37-
FieldFilter filter(Field("f"), Operator::Equal, Value(1));
38-
EXPECT_EQ(filter, FieldFilter(Field("f"), Operator::Equal, Value(1)));
39-
EXPECT_NE(filter, FieldFilter(Field("g"), Operator::Equal, Value(1)));
40-
EXPECT_NE(filter, FieldFilter(Field("f"), Operator::GreaterThan, Value(1)));
41-
EXPECT_NE(filter, FieldFilter(Field("f"), Operator::Equal, Value(2)));
42-
EXPECT_NE(filter, NanFilter(Field("f")));
43-
EXPECT_NE(filter, NullFilter(Field("f")));
44-
45-
NullFilter null_filter(Field("g"));
46-
EXPECT_EQ(null_filter, NullFilter(Field("g")));
47-
EXPECT_NE(null_filter, NullFilter(Field("h")));
48-
49-
NanFilter nan_filter(Field("g"));
50-
EXPECT_EQ(nan_filter, NanFilter(Field("g")));
51-
EXPECT_NE(nan_filter, NanFilter(Field("h")));
37+
auto filter = Filter("f", "==", 1);
38+
EXPECT_EQ(*filter, *Filter("f", "==", 1));
39+
EXPECT_NE(*filter, *Filter("g", "==", 1));
40+
EXPECT_NE(*filter, *Filter("f", ">", 1));
41+
EXPECT_NE(*filter, *Filter("f", "==", 2));
42+
EXPECT_NE(*filter, *Filter("f", "==", NAN));
43+
EXPECT_NE(*filter, *Filter("f", "==", nullptr));
44+
45+
auto null_filter = Filter("g", "==", nullptr);
46+
EXPECT_EQ(*null_filter, *Filter("g", "==", nullptr));
47+
EXPECT_NE(*null_filter, *Filter("h", "==", nullptr));
48+
49+
auto nan_filter = Filter("g", "==", NAN);
50+
EXPECT_EQ(*nan_filter, *Filter("g", "==", NAN));
51+
EXPECT_NE(*nan_filter, *Filter("h", "==", NAN));
5252
}
5353

5454
} // namespace core

0 commit comments

Comments
 (0)