### Question:
SameAsURIMatcher extends TypeSafeDiagnosingMatcher<URI> { @Factory public static SameAsURIMatcher sameAsURI(URI expectedUri) { return new SameAsURIMatcher(expectedUri); } private  SameAsURIMatcher(URI expectedUri); @Override void describeTo(Description description); SameAsURIMatcher filteredWith(UriDiffFilter... filters); @Factory static SameAsURIMatcher sameAsURI(URI expectedUri); @Factory static Matcher<String> sameAsURI(String expectedUri);  }### Answer:
@Test(expected = AssertionError.class) public void shouldThrowAssertionErrorOnDifferentURIs() throws Exception { assertThat(ACTUAL_URI, sameAsURI(EXPECTED_URI)); }
@Test(expected = AssertionError.class) public void shouldThrowAssertionErrorWithoutFilters() throws Exception { assertThat(ACTUAL_AS_EXPECTED_WITH_PARAM_AND_SCHEME_URI, sameAsURI(EXPECTED_URI)); }
@Test public void shouldUseDefaultReport() throws Exception { Description description = new StringDescription(); sameAsURI(EXPECTED_URI).describeMismatch(ACTUAL_URI, description); assertThat("Description should contain actual and diff", description.toString(), both(containsString(UriDiffer.diff().actual(ACTUAL_URI).expected(EXPECTED_URI).changes().report())) .and(containsString(ACTUAL_URI.toString()))); }