summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java')
-rw-r--r--vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java119
1 files changed, 119 insertions, 0 deletions
diff --git a/vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java b/vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java
index 95a0ef4319e..47f835a42e7 100644
--- a/vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java
+++ b/vespajlib/src/test/java/com/yahoo/slime/SlimeUtilsTest.java
@@ -7,11 +7,14 @@ import org.junit.Test;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
+import java.nio.charset.StandardCharsets;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+
/**
* @author Ulf Lilleengen
*/
@@ -110,4 +113,120 @@ public class SlimeUtilsTest {
SlimeUtils.entriesStream(inspector.field("list")).map(Inspector::asLong).toList());
}
+ @Test
+ public void verifyObjectEquality() {
+ Slime slimeLeft = new Slime();
+ Cursor left = slimeLeft.setObject();
+ left.setString("a", "A");
+ left.setString("b", "B");
+
+ Slime slimeRight = new Slime();
+ Cursor right = slimeRight.setObject();
+ right.setString("b", "B");
+ right.setString("a", "A");
+
+ assertTrue(left.equalTo(right));
+ assertTrue(right.equalTo(left));
+ assertTrue(left.equalTo(left));
+
+ right.setString("c", "C");
+ assertFalse(left.equalTo(right));
+ assertFalse(right.equalTo(left));
+ }
+
+ @Test
+ public void verifyArrayEquality() {
+ Slime slimeLeft = new Slime();
+ Cursor left = slimeLeft.setArray();
+ left.addArray().addString("a");
+ left.addArray().addString("b");
+
+ Slime slimeRight = new Slime();
+ Cursor right = slimeRight.setArray();
+ right.addArray().addString("a");
+ right.addArray().addString("b");
+
+ assertTrue(left.equalTo(right));
+ assertTrue(right.equalTo(left));
+ assertTrue(left.equalTo(left));
+
+ right.addArray().addString("c");
+ assertFalse(left.equalTo(right));
+ assertFalse(right.equalTo(left));
+
+ // Order matters
+ Slime slimeRight2 = new Slime();
+ Cursor right2 = slimeRight2.setObject();
+ right2.addArray().addString("b");
+ right2.addArray().addString("a");
+ assertFalse(left.equalTo(right2));
+ assertFalse(right2.equalTo(left));
+ }
+
+ @Test
+ public void verifyPrimitiveEquality() {
+ Slime left = new Slime();
+ Cursor leftObject = left.setObject();
+ populateWithPrimitives(leftObject, true);
+
+ Slime right = new Slime();
+ Cursor rightObject = right.setObject();
+ populateWithPrimitives(rightObject, true);
+
+ assertEqualTo(left.get().field("bool"), right.get().field("bool"));
+ assertEqualTo(left.get().field("nix"), right.get().field("nix"));
+ assertEqualTo(left.get().field("long"), right.get().field("long"));
+ assertEqualTo(left.get().field("string"), right.get().field("string"));
+ assertEqualTo(left.get().field("data"), right.get().field("data"));
+ assertEqualTo(left.get(), right.get());
+
+ assertNotEqualTo(left.get().field("bool"), right.get().field("nix"));
+ assertNotEqualTo(left.get().field("nix"), right.get().field("string"));
+ assertNotEqualTo(left.get().field("string"), right.get().field("data"));
+ assertNotEqualTo(left.get().field("bool"), right.get().field("data"));
+ assertNotEqualTo(left.get().field("bool"), right.get().field("long"));
+ }
+
+ @Test
+ public void verifyPrimitiveNotEquality() {
+ Slime left = new Slime();
+ Cursor leftObject = left.setObject();
+ populateWithPrimitives(leftObject, true);
+
+ Slime right = new Slime();
+ Cursor rightObject = right.setObject();
+ populateWithPrimitives(rightObject, false);
+
+ assertNotEqualTo(left.get().field("bool"), right.get().field("bool"));
+ assertEqualTo(left.get().field("nix"), right.get().field("nix"));
+ assertNotEqualTo(left.get().field("long"), right.get().field("long"));
+ assertNotEqualTo(left.get().field("string"), right.get().field("string"));
+ assertNotEqualTo(left.get().field("data"), right.get().field("data"));
+ assertNotEqualTo(left.get(), right.get());
+ }
+
+ @Test
+ public void testNixEquality() {
+ assertEqualTo(NixValue.invalid(), NixValue.invalid());
+ assertEqualTo(NixValue.instance(), NixValue.instance());
+ assertNotEqualTo(NixValue.instance(), NixValue.invalid());
+ assertNotEqualTo(NixValue.invalid(), NixValue.instance());
+ }
+
+ private void populateWithPrimitives(Cursor cursor, boolean enabled) {
+ cursor.setBool("bool", enabled ? true : false);
+ cursor.setNix("nix");
+ cursor.setLong("long", enabled ? 1 : 0);
+ cursor.setString("string", enabled ? "enabled" : "disabled");
+ cursor.setDouble("double", enabled ? 1.5 : 0.5);
+ cursor.setData("data", (enabled ? "edata" : "ddata").getBytes(StandardCharsets.UTF_8));
+ }
+
+ private void assertEqualTo(Inspector left, Inspector right) {
+ assertTrue("'" + left + "' is not equal to '" + right + "'", left.equalTo(right));
+ }
+
+ private void assertNotEqualTo(Inspector left, Inspector right) {
+ assertTrue("'" + left + "' is equal to '" + right + "'", !left.equalTo(right));
+ }
}