aboutsummaryrefslogtreecommitdiffstats
path: root/jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java
Publish
Diffstat (limited to 'jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java')
-rw-r--r--jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java130
1 files changed, 130 insertions, 0 deletions
diff --git a/jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java b/jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java
new file mode 100644
index 00000000000..36874f0b80f
--- /dev/null
+++ b/jrt/tests/com/yahoo/jrt/slobrok/api/SlobrokListTestCase.java
@@ -0,0 +1,130 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.jrt.slobrok.api;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a>
+ */
+public class SlobrokListTestCase {
+
+ @Test
+ public void requireThatNextSlobrokSpecReturnsNullAtEndOfList() {
+ SlobrokList lst = new SlobrokList();
+ lst.setup(new String[] { "foo", "bar" });
+ if ("[foo, bar]".equals(lst.toString())) {
+ assertEquals("foo", lst.nextSlobrokSpec());
+ assertEquals("bar", lst.nextSlobrokSpec());
+ assertNull(lst.nextSlobrokSpec());
+ assertEquals("foo", lst.nextSlobrokSpec());
+ assertEquals("bar", lst.nextSlobrokSpec());
+ assertNull(lst.nextSlobrokSpec());
+ assertEquals("[foo, bar]", lst.toString());
+ } else {
+ assertEquals("bar", lst.nextSlobrokSpec());
+ assertEquals("foo", lst.nextSlobrokSpec());
+ assertNull(lst.nextSlobrokSpec());
+ assertEquals("bar", lst.nextSlobrokSpec());
+ assertEquals("foo", lst.nextSlobrokSpec());
+ assertNull(lst.nextSlobrokSpec());
+ assertEquals("[bar, foo]", lst.toString());
+ }
+ }
+
+ @Test
+ public void requireThatSiblingsIterateIndependently() {
+ SlobrokList foo = new SlobrokList();
+ SlobrokList bar = new SlobrokList(foo);
+ foo.setup(new String[] { "foo", "bar" });
+ if ("[foo, bar]".equals(foo.toString())) {
+ assertEquals("foo", foo.nextSlobrokSpec());
+ assertEquals("foo", bar.nextSlobrokSpec());
+ assertEquals("bar", foo.nextSlobrokSpec());
+ assertEquals("bar", bar.nextSlobrokSpec());
+ assertNull(foo.nextSlobrokSpec());
+ assertNull(bar.nextSlobrokSpec());
+ } else {
+ assertEquals("bar", foo.nextSlobrokSpec());
+ assertEquals("bar", bar.nextSlobrokSpec());
+ assertEquals("foo", foo.nextSlobrokSpec());
+ assertEquals("foo", bar.nextSlobrokSpec());
+ assertNull(foo.nextSlobrokSpec());
+ assertNull(bar.nextSlobrokSpec());
+ }
+ }
+
+ @Test
+ public void requireThatLengthIsUpdatedBySetup() {
+ SlobrokList foo = new SlobrokList();
+ assertEquals(0, foo.length());
+ foo.setup(new String[69]);
+ assertEquals(69, foo.length());
+ }
+
+ @Test
+ public void requireThatIndexIsResetOnSetup() {
+ SlobrokList lst = new SlobrokList();
+ lst.setup(new String[] { "foo", "foo" });
+ assertEquals("foo", lst.nextSlobrokSpec());
+ lst.setup(new String[] { "baz" });
+ assertEquals("baz", lst.nextSlobrokSpec());
+ assertNull(lst.nextSlobrokSpec());
+ assertEquals("[baz]", lst.toString());
+ }
+
+ @Test
+ public void requireThatUpdateAffectsSiblings() {
+ SlobrokList foo = new SlobrokList();
+ SlobrokList bar = new SlobrokList(foo);
+
+ assertEquals(0, foo.length());
+ assertEquals(0, bar.length());
+
+ foo.setup(new String[] { "foo" });
+ assertEquals(1, foo.length());
+ assertEquals(1, bar.length());
+ assertEquals("foo", foo.nextSlobrokSpec());
+ assertEquals("foo", bar.nextSlobrokSpec());
+ assertEquals("[foo]", foo.toString());
+ assertEquals("[foo]", bar.toString());
+
+ foo.setup(new String[] { "baz" });
+ assertEquals(1, foo.length());
+ assertEquals(1, bar.length());
+ assertEquals("baz", bar.nextSlobrokSpec());
+ assertEquals("baz", foo.nextSlobrokSpec());
+ assertNull(foo.nextSlobrokSpec());
+ assertNull(bar.nextSlobrokSpec());
+ assertEquals("[baz]", foo.toString());
+ assertEquals("[baz]", bar.toString());
+ }
+
+ @Test
+ public void requireThatUpdateAffectsContains() {
+ SlobrokList foo = new SlobrokList();
+ foo.setup(new String[] { "foo", "bar" });
+ assertEquals(2, foo.length());
+ String one = foo.nextSlobrokSpec();
+ String two = foo.nextSlobrokSpec();
+ assertNull(foo.nextSlobrokSpec());
+ assertEquals(true, foo.contains(one));
+ assertEquals(true, foo.contains(two));
+ assertEquals(true, foo.contains("foo"));
+ assertEquals(true, foo.contains("bar"));
+ assertEquals(false, foo.contains("baz"));
+
+ foo.setup(new String[] { "foo", "baz" });
+ assertEquals(2, foo.length());
+ assertEquals(true, foo.contains("foo"));
+ assertEquals(false, foo.contains("bar"));
+ assertEquals(true, foo.contains("baz"));
+ one = foo.nextSlobrokSpec();
+ two = foo.nextSlobrokSpec();
+ assertNull(foo.nextSlobrokSpec());
+ assertEquals(true, foo.contains(one));
+ assertEquals(true, foo.contains(two));
+ }
+}