aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/src/firebase/firestore/core/relation_filter.cc
diff options
context:
space:
mode:
authorGravatar rsgowman <rgowman@google.com>2018-07-17 10:28:25 -0400
committerGravatar GitHub <noreply@github.com>2018-07-17 10:28:25 -0400
commit890321214cc8340c9eb02712f63799085f3ea112 (patch)
tree77df5efbf17c8f9c56f083a599f37a4fc453e8aa /Firestore/core/src/firebase/firestore/core/relation_filter.cc
parent6ab0195f11e9a0daab46babf7f894bb08b2ae9c3 (diff)
Port PrimitiveValueTest test for core::Query (#1530)
(From java.) Also fix a bug uncovered by the test. (oops)
Diffstat (limited to 'Firestore/core/src/firebase/firestore/core/relation_filter.cc')
-rw-r--r--Firestore/core/src/firebase/firestore/core/relation_filter.cc18
1 files changed, 10 insertions, 8 deletions
diff --git a/Firestore/core/src/firebase/firestore/core/relation_filter.cc b/Firestore/core/src/firebase/firestore/core/relation_filter.cc
index a6ae916..07087e6 100644
--- a/Firestore/core/src/firebase/firestore/core/relation_filter.cc
+++ b/Firestore/core/src/firebase/firestore/core/relation_filter.cc
@@ -27,8 +27,10 @@ namespace core {
using model::FieldPath;
using model::FieldValue;
-RelationFilter::RelationFilter(FieldPath field, Operator op, FieldValue value)
- : field_(std::move(field)), op_(op), value_(std::move(value)) {
+RelationFilter::RelationFilter(FieldPath field,
+ Operator op,
+ FieldValue value_rhs)
+ : field_(std::move(field)), op_(op), value_rhs_(std::move(value_rhs)) {
}
const FieldPath& RelationFilter::field() const {
@@ -47,22 +49,22 @@ bool RelationFilter::Matches(const model::Document& doc) const {
bool RelationFilter::MatchesValue(const FieldValue& other) const {
// Only compare types with matching backend order (such as double and int).
- return FieldValue::Comparable(value_.type(), other.type()) &&
+ return FieldValue::Comparable(other.type(), value_rhs_.type()) &&
MatchesComparison(other);
}
bool RelationFilter::MatchesComparison(const FieldValue& other) const {
switch (op_) {
case Operator::LessThan:
- return value_ < other;
+ return other < value_rhs_;
case Operator::LessThanOrEqual:
- return value_ <= other;
+ return other <= value_rhs_;
case Operator::Equal:
- return value_ == other;
+ return other == value_rhs_;
case Operator::GreaterThan:
- return value_ > other;
+ return other > value_rhs_;
case Operator::GreaterThanOrEqual:
- return value_ >= other;
+ return other >= value_rhs_;
}
UNREACHABLE();
}