@Override public boolean matches(Prefix prefix, Environment environment) { boolean value = _prefixSpace.containsPrefix(prefix); return value; }
@Test public void addPrefixRangeTest() { PrefixRange range = PrefixRange.fromString("10.10.10.0/32:16-24"); _ps = new PrefixSpace(range); assertThat(_ps.containsPrefixRange(range), equalTo(true)); assertThat( "Shorter prefixes not included", _ps.containsPrefix(Prefix.parse("10.10.10.0/15")), equalTo(false)); assertThat( "Shortest prefix is included", _ps.containsPrefix(Prefix.parse("10.10.10.0/16")), equalTo(true)); assertThat( "Longest prefix is included", _ps.containsPrefix(Prefix.parse("10.10.10.0/24")), equalTo(true)); assertThat( "Longer prefixes not included", _ps.containsPrefix(Prefix.parse("10.10.10.0/25")), equalTo(false)); assertThat( "Prefixes with mismatch in masked bits not included", _ps.containsPrefix(Prefix.parse("10.10.11.0/24")), equalTo(false)); assertThat( "Prefixes with mismatch in unmasked bits included", _ps.containsPrefix(Prefix.parse("10.10.10.255/24")), equalTo(true)); }
@Test public void intersectionAndOverlapsTest() { PrefixSpace other = new PrefixSpace(); assertThat("empty spaces don't intersect", _ps.intersection(other).isEmpty(), equalTo(true)); assertThat("no overlap for empty spaces", _ps.overlaps(other), equalTo(false)); _ps.addPrefixRange(PrefixRange.fromString("10.10.10.0/20:18-21")); assertThat("no intersection for one empty", _ps.intersection(other).isEmpty(), equalTo(true)); assertThat("no overlap for one empty", _ps.overlaps(other), equalTo(false)); other.addPrefixRange(PrefixRange.fromString("10.10.10.0/16:14-16")); assertThat("no intersection", _ps.intersection(other).isEmpty(), equalTo(true)); assertThat("no overlap", _ps.overlaps(other), equalTo(false)); other.addPrefixRange(PrefixRange.fromString("10.10.10.0/20:18-20")); PrefixSpace intersection = _ps.intersection(other); assertThat( "now intersect for length 18", intersection.containsPrefix(Prefix.parse("10.10.0.0/18")), equalTo(true)); assertThat( "now intersect for length 19", intersection.containsPrefix(Prefix.parse("10.10.0.0/19")), equalTo(true)); assertThat( "now intersect for range 18-20", intersection.containsPrefixRange(PrefixRange.fromString("10.10.0.0/20:18-20")), equalTo(true)); assertThat("don't intersect anywhere else", intersection.getPrefixRanges().size(), equalTo(3)); assertThat("has overlap", _ps.overlaps(other), equalTo(true)); }
@Test public void addPrefixTest() { Prefix prefix = Prefix.parse("100.0.0.0/32"); _ps.addPrefix(prefix); assertThat(_ps.getPrefixRanges().size(), equalTo(1)); assertThat(_ps.containsPrefix(prefix), equalTo(true)); }
@Test public void containsPrefixTest() { Prefix prefix = Prefix.parse("10.10.10.0/24"); _ps.addPrefix(prefix); assertThat( "Shorter prefixes not included", _ps.containsPrefix(Prefix.parse("10.10.10.0/20")), equalTo(false)); assertThat( "Exact given prefix is included", _ps.containsPrefix(Prefix.parse("10.10.10.0/24")), equalTo(true)); assertThat( "Longer prefixes not included", _ps.containsPrefix(Prefix.parse("10.10.10.0/26")), equalTo(false)); assertThat( "Prefixes with mismatch in masked bits not included", _ps.containsPrefix(Prefix.parse("10.10.11.0/24")), equalTo(false)); assertThat( "Prefixes with mismatch in unmasked bits included", _ps.containsPrefix(Prefix.parse("10.10.10.255/24")), equalTo(true)); }