add environment tests

This commit is contained in:
TopchetoEU 2025-01-11 14:19:19 +02:00
parent 5a154c8a69
commit 7a13b032f8
Signed by: topchetoeu
GPG Key ID: 6531B8583E5F6ED4
2 changed files with 77 additions and 2 deletions

View File

@ -63,8 +63,11 @@ public class Environment {
} }
public <T> T init(Key<T> key, T val) { public <T> T init(Key<T> key, T val) {
if (!has(key)) this.add(key, val); if (!has(key)) {
return val; this.add(key, val);
return val;
}
else return get(key);
} }
public <T> T initFrom(Key<T> key, Supplier<T> val) { public <T> T initFrom(Key<T> key, Supplier<T> val) {
if (!has(key)) { if (!has(key)) {

View File

@ -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<String> FOO = new Key<>();
private final Key<Void> 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);
}
}