summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2019-01-30 15:44:08 +0000
committerHåvard Pettersen <havardpe@oath.com>2019-01-30 15:44:08 +0000
commita6169d17d1b4654b7331d55abb3e0870c8770632 (patch)
treed7275a88db9bd7723a1c4d68a09048d329114ed6 /vespalib
parent51dd7ec62219a9cdc4b3325b3649dec1983b9ab9 (diff)
improve nix equality to match Java Slime
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/tests/slime/slime_test.cpp9
-rw-r--r--vespalib/src/vespa/vespalib/data/slime/inspector.cpp1
2 files changed, 10 insertions, 0 deletions
diff --git a/vespalib/src/tests/slime/slime_test.cpp b/vespalib/src/tests/slime/slime_test.cpp
index fae61f4194b..7e70dc3538e 100644
--- a/vespalib/src/tests/slime/slime_test.cpp
+++ b/vespalib/src/tests/slime/slime_test.cpp
@@ -362,6 +362,15 @@ TEST("require that slime objects can be compared") {
EXPECT_NOT_EQUAL(Slime().setArray(), Slime().setObject());
}
+TEST("require that nix equality checks validity") {
+ const Inspector &good_nix = *vespalib::slime::NixValue::instance();
+ const Inspector &bad_nix = *vespalib::slime::NixValue::invalid();
+ EXPECT_EQUAL(good_nix, good_nix);
+ EXPECT_EQUAL(bad_nix, bad_nix);
+ EXPECT_NOT_EQUAL(good_nix, bad_nix);
+ EXPECT_NOT_EQUAL(bad_nix, good_nix);
+}
+
TEST("require that we can resolve to symbol table from a cursor") {
Slime slime;
Cursor &c1 = slime.setObject();
diff --git a/vespalib/src/vespa/vespalib/data/slime/inspector.cpp b/vespalib/src/vespa/vespalib/data/slime/inspector.cpp
index 1f5631accc6..fe03e2f8ed3 100644
--- a/vespalib/src/vespa/vespalib/data/slime/inspector.cpp
+++ b/vespalib/src/vespa/vespalib/data/slime/inspector.cpp
@@ -45,6 +45,7 @@ bool operator == (const Inspector & a, const Inspector & b)
if (equal) {
switch (a.type().getId()) {
case NIX::ID:
+ equal = a.valid() == b.valid();
break;
case BOOL::ID:
equal = a.asBool() == b.asBool();