@Test public void testWithAll() throws Exception { final Map<String, Boolean> testPermissions = new HashMap<>(); testPermissions.put("generate.rainbow", true); testPermissions.put("generate.sunset", false); testPermissions.put("generate", true); testPermissions.put("generate.thunderstorm.explosive", false); NodeTree oldTree = NodeTree.of(testPermissions); final Map<String, Tristate> newPermissions = new HashMap<>(); newPermissions.put("generate.sunset.red", Tristate.TRUE); newPermissions.put("generate.thunderstorm.explosive", Tristate.UNDEFINED); newPermissions.put("something.new", Tristate.FALSE); NodeTree newTree = oldTree.withAll(newPermissions); assertEquals(Tristate.FALSE, oldTree.get("generate.sunset.red")); assertEquals(Tristate.TRUE, newTree.get("generate.sunset.red")); assertEquals(Tristate.FALSE, oldTree.get("generate.thunderstorm.explosive")); assertEquals(Tristate.UNDEFINED, newTree.get("generate.thunderstorm.explosive")); assertEquals(Tristate.UNDEFINED, oldTree.get("something.new")); assertEquals(Tristate.FALSE, newTree.get("something.new")); }