### Question:
Ipv6Range extends AbstractIpRange<Ipv6, Ipv6Range> { public static Ipv6Range parse(String range) { int idx = range.indexOf(DASH); if (idx != -1) { Ipv6 start = Ipv6.parse(range.substring(0, idx)); Ipv6 end = Ipv6.parse(range.substring(idx + 1, range.length())); return new Ipv6Range(start, end); } else { return parseCidr(range); } } protected  Ipv6Range(Ipv6 start, Ipv6 end); static Ipv6RangeBuilder from(Ipv6 from); static Ipv6RangeBuilder from(BigInteger from); static Ipv6RangeBuilder from(String from); static Ipv6Range parse(String range); static Ipv6Range parseCidr(String cidrString); static Ipv6Range parseDecimalNotation(String range); @Override BigInteger size();  }### Answer:
@Test public void shouldParseDashNotationWhenEmptyRange() { assertEquals(Ipv6.of("::1").asRange(), Ipv6Range.parse("::1-::1")); }
@Test(expected = IllegalArgumentException.class) public void shouldFailToParseDashNotationWhenIllegalRange() { Ipv6Range.parse("::10-::1"); }
@Test(expected = IllegalArgumentException.class) public void shouldFailToParseDashNotationWhenSingleResource() { Ipv6Range.parse("::1"); }