Assert.assertEquals(filter2a.hashCode(), filter2a.hashCode());
Assert.assertEquals(filter2b.hashCode(), filter2b2.hashCode());
}
public void testAndAppliesToProperty() {
Filter filter0 = new And();
Filter filter1a = new And(new SameItemFilter(item1, "a"));
Filter filter1b = new And(new SameItemFilter(item1, "b"));
Filter filter2aa = new And(new SameItemFilter(item1, "a"),
new SameItemFilter(item1, "a"));
Filter filter2ab = new And(new SameItemFilter(item1, "a"),
new SameItemFilter(item1, "b"));
Filter filter3abc = new And(new SameItemFilter(item1, "a"),
new SameItemFilter(item1, "b"), new SameItemFilter(item1, "c"));
// empty And does not filter out anything
Assert.assertFalse(filter0.appliesToProperty("a"));
Assert.assertFalse(filter0.appliesToProperty("d"));
Assert.assertTrue(filter1a.appliesToProperty("a"));
Assert.assertFalse(filter1a.appliesToProperty("b"));
Assert.assertFalse(filter1b.appliesToProperty("a"));
Assert.assertTrue(filter1b.appliesToProperty("b"));
Assert.assertTrue(filter2aa.appliesToProperty("a"));
Assert.assertFalse(filter2aa.appliesToProperty("b"));
Assert.assertTrue(filter2ab.appliesToProperty("a"));
Assert.assertTrue(filter2ab.appliesToProperty("b"));
Assert.assertTrue(filter3abc.appliesToProperty("a"));
Assert.assertTrue(filter3abc.appliesToProperty("b"));
Assert.assertTrue(filter3abc.appliesToProperty("c"));
Assert.assertFalse(filter3abc.appliesToProperty("d"));
}