@Test public void testGetEffectiveFlagInheritanceAndDifferingGroupsMemberOnParentFlagOnBottomGroupOutside() throws Exception { MockApplicableRegionSet mock = new MockApplicableRegionSet(); StringFlag stringFlag1 = new StringFlag("string1"); StringFlag stringFlag2 = new StringFlag("string2"); ProtectedRegion parent1 = mock.createOutside(0); parent1.setFlag(stringFlag1, "everyone"); parent1.setFlag(stringFlag1.getRegionGroupFlag(), RegionGroup.ALL); ProtectedRegion parent2 = mock.add(0); parent2.setParent(parent1); ProtectedRegion region = mock.add(0); region.setFlag(stringFlag1, "members"); region.setFlag(stringFlag1.getRegionGroupFlag(), RegionGroup.MEMBERS); region.setParent(parent2); LocalPlayer player1 = mock.createPlayer(); parent1.getMembers().addPlayer(player1); LocalPlayer player2 = mock.createPlayer(); FlagValueCalculator result = mock.getFlagCalculator(); assertThat(result.getEffectiveFlag(region, stringFlag1, player1), equalTo("members")); assertThat(result.getEffectiveFlag(region, stringFlag1, player2), equalTo("everyone")); assertThat(result.getEffectiveFlag(region, stringFlag1, null), equalTo("everyone")); assertThat(result.getEffectiveFlag(region, stringFlag2, null), equalTo(null)); }