### Question:
SetMatchFunctionDecorator implements SetMatchFunction<E,T> { @Override public MatchTable<E, T> fullMatch(Set<E> source, Set<E> target) { return match(source, target, true); } SetMatchFunctionDecorator(MatchFunction<E, T> decoratedMatcher); @Override MatchTable<E, T> partialMatch(Set<E> source, Set<E> target); @Override MatchTable<E, T> fullMatch(Set<E> source, Set<E> target); @Override T match(E source, E target);  }### Answer:
@Test public void testFullMatch() throws Exception { MatchTable<String, Integer> result = setMatcher.fullMatch(source, target); assertEquals(Sets.newHashSet("d", "e"), result.getTargetElements()); assertEquals(Sets.newHashSet("a", "b"), result.getSortedSourceElemsThatMatch("d")); assertEquals(source, result.getSortedSourceElemsThatMatch("e")); assertNotNull(result.getSortedSourceElemsThatMatch("f")); assertTrue(result.getSortedSourceElemsThatMatch("f").isEmpty()); }
@Test public void testSortedTypesOnFullMatch(){ MatchTable<String, Integer> result = setMatcher.fullMatch(source, target); SortedSet<String> elements = result.getSortedSourceElemsThatMatch("e"); assertEquals("a",elements.first()); assertEquals("c",elements.last()); }