### Question:
Ipv6Range extends AbstractIpRange<Ipv6, Ipv6Range> { public static Ipv6RangeBuilder from(Ipv6 from) { return new Ipv6RangeBuilder(from); } 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 shouldParseWithPrefix() { assertEquals(Ipv6Range.from(FIRST_IPV6_ADDRESS).to(LAST_IPV6_ADDRESS), Ipv6Range.from("::").andPrefixLength("0")); }
@Test(expected = IllegalArgumentException.class) public void shouldFailToParseWithPrefixWhenIllegalPrefix() { Ipv6Range.from("ffce:abcd::").andPrefixLength("129"); }
@Test(expected = IllegalArgumentException.class) public void shouldFailToParseWithPrefixWhenPrefixIsNull() { Ipv6Range.from("ffce:abcd::").andPrefixLength(null); }
@Test public void testBuilderWithBigIntegers() { Ipv6Range range = Ipv6Range.from(BigInteger.valueOf(1l)).to(BigInteger.valueOf(3l)); assertEquals(ip1, range.start()); assertEquals(ip3, range.end()); }
@Test public void testBuilderWithStrings() { Ipv6Range range = Ipv6Range.from("::1").to("::3"); assertEquals(ip1, range.start()); assertEquals(ip3, range.end()); }
@Test public void testBuilderWithIpv6s() { Ipv6Range range = Ipv6Range.from(ip1).to(ip3); assertEquals(ip1, range.start()); assertEquals(ip3, range.end()); }
@Test(expected = IllegalArgumentException.class) public void testBuilderWithInvalidRange() { Ipv6Range.from(ip3).to(ip1); }
@Test(expected = IllegalArgumentException.class) public void testBuilderWithNullStart() { Ipv6Range.from((Ipv6) null).to(ip3); }
@Test(expected = IllegalArgumentException.class) public void testBuilderWithNullEnd() { Ipv6Range.from(ip1).to((Ipv6) null); }
@Test public void testBuilderWithValidAddressAndPrefixLength() { Ipv6Range range = Ipv6Range.from("::2").andPrefixLength(127); assertEquals(Ipv6.of("::2"), range.start()); assertEquals(Ipv6.of("::3"), range.end()); }
@Test(expected = IllegalArgumentException.class) public void testBuilderWithInvalidAddressAndPrefixLength() { Ipv6Range.from("::3").andPrefixLength(127); }
@Test(expected = IllegalArgumentException.class) public void testBuilderWithTooSmallPrefixLength() { Ipv6Range.from("::2").andPrefixLength(-1); }
@Test(expected = IllegalArgumentException.class) public void testBuilderWithTooBigPrefixLength() { Ipv6Range.from("::2").andPrefixLength(129); }