package com.vaadin.v7.data.util.sqlcontainer.filters; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Test; import com.vaadin.v7.data.Item; import com.vaadin.v7.data.Property; import com.vaadin.v7.data.util.filter.Between; public class BetweenTest { private Item itemWithPropertyValue(Object propertyId, Object value) { Property<?> property = EasyMock.createMock(Property.class); property.getValue(); EasyMock.expectLastCall().andReturn(value).anyTimes(); EasyMock.replay(property); Item item = EasyMock.createMock(Item.class); item.getItemProperty(propertyId); EasyMock.expectLastCall().andReturn(property).anyTimes(); EasyMock.replay(item); return item; } @Test public void passesFilter_valueIsInRange_shouldBeTrue() { Item item = itemWithPropertyValue("foo", 15); Between between = new Between("foo", 1, 30); Assert.assertTrue(between.passesFilter("foo", item)); } @Test public void passesFilter_valueIsOutOfRange_shouldBeFalse() { Item item = itemWithPropertyValue("foo", 15); Between between = new Between("foo", 0, 2); Assert.assertFalse(between.passesFilter("foo", item)); } @Test public void passesFilter_valueNotComparable_shouldBeFalse() { Item item = itemWithPropertyValue("foo", new Object()); Between between = new Between("foo", 0, 2); Assert.assertFalse(between.passesFilter("foo", item)); } @Test public void appliesToProperty_differentProperties_shoudlBeFalse() { Between between = new Between("foo", 0, 2); Assert.assertFalse(between.appliesToProperty("bar")); } @Test public void appliesToProperty_sameProperties_shouldBeTrue() { Between between = new Between("foo", 0, 2); Assert.assertTrue(between.appliesToProperty("foo")); } @Test public void hashCode_equalInstances_shouldBeEqual() { Between b1 = new Between("foo", 0, 2); Between b2 = new Between("foo", 0, 2); Assert.assertEquals(b1.hashCode(), b2.hashCode()); } @Test public void equals_differentObjects_shouldBeFalse() { Between b1 = new Between("foo", 0, 2); Object obj = new Object(); Assert.assertFalse(b1.equals(obj)); } @Test public void equals_sameInstance_shouldBeTrue() { Between b1 = new Between("foo", 0, 2); Between b2 = b1; Assert.assertTrue(b1.equals(b2)); } @Test public void equals_equalInstances_shouldBeTrue() { Between b1 = new Between("foo", 0, 2); Between b2 = new Between("foo", 0, 2); Assert.assertTrue(b1.equals(b2)); } @Test public void equals_equalInstances2_shouldBeTrue() { Between b1 = new Between(null, null, null); Between b2 = new Between(null, null, null); Assert.assertTrue(b1.equals(b2)); } @Test public void equals_secondValueDiffers_shouldBeFalse() { Between b1 = new Between("foo", 0, 1); Between b2 = new Between("foo", 0, 2); Assert.assertFalse(b1.equals(b2)); } @Test public void equals_firstAndSecondValueDiffers_shouldBeFalse() { Between b1 = new Between("foo", 0, null); Between b2 = new Between("foo", 1, 2); Assert.assertFalse(b1.equals(b2)); } @Test public void equals_propertyAndFirstAndSecondValueDiffers_shouldBeFalse() { Between b1 = new Between("foo", null, 1); Between b2 = new Between("bar", 1, 2); Assert.assertFalse(b1.equals(b2)); } @Test public void equals_propertiesDiffer_shouldBeFalse() { Between b1 = new Between(null, 0, 1); Between b2 = new Between("bar", 0, 1); Assert.assertFalse(b1.equals(b2)); } @Test public void hashCode_nullStartValue_shouldBeEqual() { Between b1 = new Between("foo", null, 2); Between b2 = new Between("foo", null, 2); Assert.assertEquals(b1.hashCode(), b2.hashCode()); } @Test public void hashCode_nullEndValue_shouldBeEqual() { Between b1 = new Between("foo", 0, null); Between b2 = new Between("foo", 0, null); Assert.assertEquals(b1.hashCode(), b2.hashCode()); } @Test public void hashCode_nullPropertyId_shouldBeEqual() { Between b1 = new Between(null, 0, 2); Between b2 = new Between(null, 0, 2); Assert.assertEquals(b1.hashCode(), b2.hashCode()); } @Test public void passesFilter_nullValue_filterIsPassed() { String id = "id"; Between between = new Between(id, null, null); Assert.assertTrue( between.passesFilter(id, itemWithPropertyValue(id, null))); } @Test public void passesFilter_nullStartValue_filterIsPassed() { String id = "id"; Between between = new Between(id, null, 2); Assert.assertTrue( between.passesFilter(id, itemWithPropertyValue(id, 1))); } @Test public void passesFilter_nullEndValue_filterIsPassed() { String id = "id"; Between between = new Between(id, 0, null); Assert.assertTrue( between.passesFilter(id, itemWithPropertyValue(id, 1))); } @Test public void passesFilter_nullStartValueAndEndValue_filterIsPassed() { String id = "id"; Between between = new Between(id, null, null); Assert.assertTrue( between.passesFilter(id, itemWithPropertyValue(id, 1))); } @Test public void passesFilter_nullStartValueAndEndValueAndValueIsNotComparable_filterIsNotPassed() { String id = "id"; Between between = new Between(id, null, null); Assert.assertFalse(between.passesFilter(id, itemWithPropertyValue(id, new Object()))); } }