### Question:
NumberFilter extends Filter { @Override public boolean equals(Object obj) { if (! (obj instanceof NumberFilter)) return false; NumberFilter rhs = (NumberFilter) obj; return toString().equals(rhs.toString()); } NumberFilter();  NumberFilter(String str);  NumberFilter(int filterValue, Type type, int threshold, int numberOfSynchronousHands);  NumberFilter(String filterValue, Type type, int threshold, int numberOfSynchronousHands); void setNumberOfSynchronousHands(int numberOfSynchronousHands); @Override boolean isFulfilled(Siteswap siteswap); @Override boolean isPartlyFulfilled(Siteswap siteswap, int index); @Override String toParsableString(); @Override NumberFilter fromParsableString(String str); @Override String toString(); @Override boolean equals(Object obj); @Override int hashCode(); Type getType(); FilterValue getFilterValue(); int getThresholdValue(); static String[] getPossibleValues(int minThrow, int maxThrow,
											 int numberOfSynchronousHands);  }### Answer:
@Test public void testEquals() { NumberFilter filter1 = new NumberFilter("6p", NumberFilter.Type.EQUAL, 1, 2); NumberFilter filter2 = new NumberFilter("6p", NumberFilter.Type.EQUAL, 1, 2); NumberFilter filter3 = new NumberFilter("6", NumberFilter.Type.EQUAL, 1, 2); NumberFilter filter4 = new NumberFilter("8p", NumberFilter.Type.EQUAL, 1, 2); assertEquals(filter1, filter2); assertNotEquals(filter1, filter3); assertNotEquals(filter1, filter4); }