From 7a13b032f8be8e8957daca7acf06b17a5e27b2f5 Mon Sep 17 00:00:00 2001 From: TopchetoEU <36534413+TopchetoEU@users.noreply.github.com> Date: Sat, 11 Jan 2025 14:19:19 +0200 Subject: [PATCH] add environment tests --- .../j2s/common/environment/Environment.java | 7 +- .../j2s/common/TestEnvironment.java | 72 +++++++++++++++++++ 2 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 common/src/test/java/me/topchetoeu/j2s/common/TestEnvironment.java diff --git a/common/src/main/java/me/topchetoeu/j2s/common/environment/Environment.java b/common/src/main/java/me/topchetoeu/j2s/common/environment/Environment.java index 9099640..5e4a941 100644 --- a/common/src/main/java/me/topchetoeu/j2s/common/environment/Environment.java +++ b/common/src/main/java/me/topchetoeu/j2s/common/environment/Environment.java @@ -63,8 +63,11 @@ public class Environment { } public T init(Key key, T val) { - if (!has(key)) this.add(key, val); - return val; + if (!has(key)) { + this.add(key, val); + return val; + } + else return get(key); } public T initFrom(Key key, Supplier val) { if (!has(key)) { diff --git a/common/src/test/java/me/topchetoeu/j2s/common/TestEnvironment.java b/common/src/test/java/me/topchetoeu/j2s/common/TestEnvironment.java new file mode 100644 index 0000000..242c0d2 --- /dev/null +++ b/common/src/test/java/me/topchetoeu/j2s/common/TestEnvironment.java @@ -0,0 +1,72 @@ +package me.topchetoeu.j2s.common; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +import org.junit.jupiter.api.Test; + +import me.topchetoeu.j2s.common.environment.Environment; +import me.topchetoeu.j2s.common.environment.Key; + +public class TestEnvironment { + private final Key FOO = new Key<>(); + private final Key MARKER = new Key<>(); + + @Test public void testShouldCreate() { + new Environment(); + Environment.empty(); + } + @Test public void testShouldNotExist() { + var env = new Environment(); + assertEquals(env.get(FOO), null); + assertEquals(env.has(FOO), false); + } + + @Test public void testShouldAdd() { + var env = new Environment(); + env.add(FOO, "test"); + assertEquals(env.get(FOO), "test"); + } + + @Test public void testShouldGetFromParent() { + var parent = new Environment(); + parent.add(FOO, "test"); + var child = parent.child(); + assertEquals(child.get(FOO), "test"); + assertEquals(child.has(FOO), true); + } + @Test public void testShouldHideParent() { + var parent = new Environment(); + parent.add(FOO, "test"); + var child = parent.child(); + child.remove(FOO); + assertEquals(child.get(FOO), null); + assertEquals(child.has(FOO), false); + } + + @Test public void testShouldAddMarker() { + var env = new Environment(); + env.add(MARKER); + assertEquals(env.has(MARKER), true); + assertEquals(env.hasNotNull(MARKER), false); + } + + @Test public void testShouldInitOnce() { + var env = new Environment(); + assertEquals(env.init(FOO, "a"), "a"); + assertEquals(env.init(FOO, "b"), "a"); + assertEquals(env.get(FOO), "a"); + } + @Test public void testShouldInitOnceFrom() { + var env = new Environment(); + assertEquals(env.initFrom(FOO, () -> "a"), "a"); + assertEquals(env.initFrom(FOO, () -> "b"), "a"); + assertEquals(env.get(FOO), "a"); + } + + @Test public void testShouldWrap() { + var env = new Environment(); + assertEquals(Environment.wrap(env), env); + assertNotEquals(Environment.wrap(null), null); + } +}