From cbf4dda5cc09dc6d2c3c10329e7941923cc04e2e Mon Sep 17 00:00:00 2001 From: bjculkin Date: Wed, 25 Oct 2023 23:00:44 +0000 Subject: Tweak for new setup Also, add some tests for Context --- src/test/java/bjc/test/TestUtils.java | 20 +++++++++ src/test/java/bjc/test/data/ContextsTest.java | 64 +++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/test/java/bjc/test/data/ContextsTest.java (limited to 'src/test') diff --git a/src/test/java/bjc/test/TestUtils.java b/src/test/java/bjc/test/TestUtils.java index 04cdf70..664aaef 100644 --- a/src/test/java/bjc/test/TestUtils.java +++ b/src/test/java/bjc/test/TestUtils.java @@ -144,4 +144,24 @@ public class TestUtils { public static void assertStackEquals(bjc.esodata.Stack src, T... exps) { assertArrayEquals(exps, src.toArray()); } + + public static void assertOneOf(T actual, T... expecteds) { + for (T expected : expecteds) { + if (expected.equals(actual)) return; + } + + StringBuilder builder = new StringBuilder(); + builder.append("Value '"); + builder.append(actual.toString()); + builder.append("' was not one of the expected values: "); + for (T expected : expecteds) { + builder.append("'"); + builder.append(expected.toString()); + builder.append("', "); + } + builder.deleteCharAt(builder.length() - 1); + builder.deleteCharAt(builder.length() - 1); + + assertFalse("Value '%' was no", true); + } } diff --git a/src/test/java/bjc/test/data/ContextsTest.java b/src/test/java/bjc/test/data/ContextsTest.java new file mode 100644 index 0000000..cff6e06 --- /dev/null +++ b/src/test/java/bjc/test/data/ContextsTest.java @@ -0,0 +1,64 @@ +package bjc.test.data; + +import static org.junit.Assert.*; + +import org.junit.Test; + +import bjc.data.Context; +import bjc.data.Contexts; +import bjc.test.TestUtils; + +public class ContextsTest { + + @Test(expected = UnsupportedOperationException.class) + public void testNull() { + Context ctx = Contexts.NULL; + ctx.register("a", "b"); + } + @Test + public void testCreate() { + Context ctx = Contexts.create(); + + assertTrue(ctx.getParent() == Contexts.NULL); + + ctx.register("a", "b"); + + assertEquals("b", ctx.get("a")); + assertEquals("b", ctx.get(String.class)); + assertEquals("b", ctx.get("a", String.class)); + } + + @Test + public void testCreateContext() { + Context parent = Contexts.create(); + + assertTrue(parent.getParent() == Contexts.NULL); + + parent.register("a", "1"); + + Context child1 = Contexts.create(parent); + Context child2 = Contexts.create(parent); + + Context child11 = Contexts.create(child1); + Context child22 = Contexts.create(child2); + + child1.register("b", "2"); + child1.register("c", "3"); + + child2.register("d", "4"); + child2.register("e", "5"); + + child11.register("a", "6"); + + child22.register("a", "7"); + child22.register("f", "8"); + + assertEquals("2", child1.get("b")); + assertEquals("1", child1.get("a")); + assertEquals("6", child11.get("a")); + assertEquals("7", child22.get("a")); + + TestUtils.assertOneOf(child1.get(String.class), "1", "2", "3"); + } + +} -- cgit v1.2.3