/** * Utility method to set a flag. * * @param region the region * @param flag the flag * @param sender the sender * @param value the value * @throws InvalidFlagFormat thrown if the value is invalid */ protected static <V> void setFlag(ProtectedRegion region, Flag<V> flag, Actor sender, String value) throws InvalidFlagFormat { region.setFlag(flag, flag.parseInput(FlagContext.create().setSender(sender).setInput(value).setObject("region", region).build())); }
@Test public void testGetMembershipPassthroughRegions() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(0); region.setFlag(Flags.PASSTHROUGH, State.ALLOW); LocalPlayer player = mock.createPlayer(); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.getMembership(player), is(Result.NO_REGIONS)); }
@Test public void testQueryValueStringFlagWithGlobalRegionAndRegionOverride() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); StringFlag flag = new StringFlag("test"); ProtectedRegion global = mock.global(); global.setFlag(flag, "hello"); ProtectedRegion region = mock.add(0); region.setFlag(flag, "beep"); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.queryValue(null, flag), is("beep")); }
@Test public void testGetEffectiveFlagGlobalRegionBuildAllow() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion global = mock.global(); global.setFlag(Flags.BUILD, State.ALLOW); FlagValueCalculator result = mock.getFlagCalculator(); // Cannot let users override BUILD on GLOBAL assertThat(result.getEffectiveFlag(global, Flags.BUILD, null), equalTo(null)); } }
@Test public void testQueryValueSingleRegion() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); StateFlag flag1 = new StateFlag("test1", false); StateFlag flag2 = new StateFlag("test2", false); ProtectedRegion region = mock.add(0); region.setFlag(flag2, State.DENY); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.queryValue(null, flag1), is((State) null)); assertThat(result.queryValue(null, flag2), is(State.DENY)); }
@Test public void testQueryValueGlobalRegionAllow() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); StateFlag flag = new StateFlag("test", true); ProtectedRegion global = mock.global(); global.setFlag(flag, State.ALLOW); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.queryValue(null, flag), is(State.ALLOW)); }
void setUpFountainRegion() throws Exception { DefaultDomain domain = new DefaultDomain(); domain.addGroup(MEMBER_GROUP); ProtectedRegion region = new ProtectedCuboidRegion(FOUNTAIN_ID, BlockVector3.ZERO, BlockVector3.at(5, 5, 5)); region.setMembers(domain); manager.addRegion(region); fountain = region; fountain.setParent(courtyard); fountain.setFlag(Flags.FIRE_SPREAD, StateFlag.State.DENY); fountain.setFlag(Flags.MOB_SPAWNING, StateFlag.State.ALLOW); }
@Test public void testQueryValueGlobalRegionDeny() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); StateFlag flag = new StateFlag("test", true); ProtectedRegion global = mock.global(); global.setFlag(flag, State.DENY); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.queryValue(null, flag), is(State.DENY)); }
@Test public void testQueryValueBuildFlagWildernessAndGlobalRegionAllow() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); LocalPlayer nonMember = mock.createPlayer(); ProtectedRegion global = mock.global(); global.setFlag(Flags.BUILD, State.ALLOW); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.queryValue(nonMember, Flags.BUILD), is(State.ALLOW)); }
@Test public void testQueryValueStringFlagWithGlobalRegionValueSet() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); StringFlag flag = new StringFlag("test"); ProtectedRegion global = mock.global(); global.setFlag(flag, "hello"); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.queryValue(null, flag), is("hello")); }
@Test public void testQueryValueAllowOverridesNone() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); StateFlag flag1 = new StateFlag("test1", false); StateFlag flag2 = new StateFlag("test2", false); region = mock.add(0); region.setFlag(flag2, State.ALLOW); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.queryValue(null, flag1), is((State) null)); assertThat(result.queryValue(null, flag2), is(State.ALLOW)); }
@Test public void testQueryValueStringFlagWithGlobalRegionAndRegion() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); StringFlag flag = new StringFlag("test"); ProtectedRegion global = mock.global(); global.setFlag(flag, "hello"); ProtectedRegion region = mock.add(0); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.queryValue(null, flag), is("hello")); }
@Test public void testGetMembershipPassthroughAndRegion() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(0); LocalPlayer player = mock.createPlayer(); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.getMembership(player), is(Result.FAIL)); }
void setUpNoFireRegion() throws Exception { ProtectedRegion region = new ProtectedCuboidRegion(NO_FIRE_ID, BlockVector3.at(100, 100, 100), BlockVector3.at(200, 200, 200)); manager.addRegion(region); region.setFlag(Flags.FIRE_SPREAD, StateFlag.State.DENY); }
void setUpExitRegion() throws Exception { DefaultDomain domain = new DefaultDomain(); domain.addGroup(BUILDER_GROUP); ProtectedRegion region = new ProtectedCuboidRegion(EXIT_ID, BlockVector3.at(-1, 0, -1), BlockVector3.at(-10, 255, -10)); region.setOwners(domain); manager.addRegion(region); entryRegion = region; // same as above entryRegion.setFlag(Flags.EXIT, StateFlag.State.DENY); entryRegion.setFlag(Flags.EXIT.getRegionGroupFlag(), RegionGroup.NON_OWNERS); }
@Test public void testGetMembershipPassthroughAndRegionMemberOf() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(0); LocalPlayer player = mock.createPlayer(); region.getMembers().addPlayer(player); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.getMembership(player), is(Result.SUCCESS)); }
@Test public void testGetMembershipPassthroughAndRegionMemberOfWithHigherPriorityAndAnotherNot() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region = mock.add(0); region.setFlag(Flags.PASSTHROUGH, State.ALLOW); region = mock.add(10); LocalPlayer player = mock.createPlayer(); region.getMembers().addPlayer(player); region = mock.add(0); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.getMembership(player), is(Result.SUCCESS)); }
void setUpFountainRegion() throws Exception { DefaultDomain domain = new DefaultDomain(); domain.addGroup(MEMBER_GROUP); ProtectedRegion region = new ProtectedCuboidRegion(FOUNTAIN_ID, BlockVector3.ZERO, BlockVector3.at(5, 5, 5)); region.setMembers(domain); manager.addRegion(region); fountain = region; fountain.setParent(courtyard); fountain.setFlag(Flags.FIRE_SPREAD, StateFlag.State.DENY); }
@Test public void testGlobalRegionBuildFlagDeny() { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region; region = mock.global(); region.setFlag(Flags.BUILD, StateFlag.State.DENY); LocalPlayer member = mock.createPlayer(); LocalPlayer nonMember = mock.createPlayer(); ApplicableRegionSet set = mock.getApplicableSet(); assertFalse(set.testState(member, Flags.BUILD)); assertFalse(set.testState(nonMember, Flags.BUILD)); }
@Test public void testGlobalRegionBuildFlagAllow() { MockApplicableRegionSet mock = new MockApplicableRegionSet(); ProtectedRegion region; region = mock.global(); region.setFlag(Flags.BUILD, StateFlag.State.ALLOW); LocalPlayer member = mock.createPlayer(); LocalPlayer nonMember = mock.createPlayer(); ApplicableRegionSet set = mock.getApplicableSet(); assertTrue(set.testState(member, Flags.BUILD)); assertTrue(set.testState(nonMember, Flags.BUILD)); }