package com.vaadin.v7.data.util.sqlcontainer.filters; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; import com.vaadin.v7.data.Item; import com.vaadin.v7.data.util.ObjectProperty; import com.vaadin.v7.data.util.PropertysetItem; import com.vaadin.v7.data.util.filter.Like; public class LikeTest { @Test public void passesFilter_valueIsNotStringType_shouldFail() { Like like = new Like("test", "%foo%"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty(5)); assertFalse(like.passesFilter("id", item)); } @Test public void passesFilter_containsLikeQueryOnStringContainingValue_shouldSucceed() { Like like = new Like("test", "%foo%"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("asdfooghij")); assertTrue(like.passesFilter("id", item)); } @Test public void passesFilter_containsLikeQueryOnStringContainingValueCaseInsensitive_shouldSucceed() { Like like = new Like("test", "%foo%"); like.setCaseSensitive(false); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("asdfOOghij")); assertTrue(like.passesFilter("id", item)); } @Test public void passesFilter_containsLikeQueryOnStringContainingValueConstructedCaseInsensitive_shouldSucceed() { Like like = new Like("test", "%foo%", false); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("asdfOOghij")); assertTrue(like.passesFilter("id", item)); } @Test public void passesFilter_containsLikeQueryOnStringNotContainingValue_shouldFail() { Like like = new Like("test", "%foo%"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("asdbarghij")); assertFalse(like.passesFilter("id", item)); } @Test public void passesFilter_containsLikeQueryOnStringExactlyEqualToValue_shouldSucceed() { Like like = new Like("test", "%foo%"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("foo")); assertTrue(like.passesFilter("id", item)); } @Test public void passesFilter_containsLikeQueryOnStringEqualToValueMinusOneCharAtTheEnd_shouldFail() { Like like = new Like("test", "%foo%"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("fo")); assertFalse(like.passesFilter("id", item)); } @Test public void passesFilter_beginsWithLikeQueryOnStringBeginningWithValue_shouldSucceed() { Like like = new Like("test", "foo%"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("foobar")); assertTrue(like.passesFilter("id", item)); } @Test public void passesFilter_beginsWithLikeQueryOnStringNotBeginningWithValue_shouldFail() { Like like = new Like("test", "foo%"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("barfoo")); assertFalse(like.passesFilter("id", item)); } @Test public void passesFilter_endsWithLikeQueryOnStringEndingWithValue_shouldSucceed() { Like like = new Like("test", "%foo"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("barfoo")); assertTrue(like.passesFilter("id", item)); } @Test public void passesFilter_endsWithLikeQueryOnStringNotEndingWithValue_shouldFail() { Like like = new Like("test", "%foo"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("foobar")); assertFalse(like.passesFilter("id", item)); } @Test public void passesFilter_startsWithAndEndsWithOnMatchingValue_shouldSucceed() { Like like = new Like("test", "foo%bar"); Item item = new PropertysetItem(); item.addItemProperty("test", new ObjectProperty("fooASDFbar")); assertTrue(like.passesFilter("id", item)); } @Test public void appliesToProperty_valueIsProperty_shouldBeTrue() { Like like = new Like("test", "%foo"); assertTrue(like.appliesToProperty("test")); } @Test public void appliesToProperty_valueIsNotProperty_shouldBeFalse() { Like like = new Like("test", "%foo"); assertFalse(like.appliesToProperty("bar")); } @Test public void equals_sameInstances_shouldBeTrue() { Like like1 = new Like("test", "%foo"); Like like2 = like1; assertTrue(like1.equals(like2)); } @Test public void equals_twoEqualInstances_shouldBeTrue() { Like like1 = new Like("test", "foo"); Like like2 = new Like("test", "foo"); assertTrue(like1.equals(like2)); } @Test public void equals_differentValues_shouldBeFalse() { Like like1 = new Like("test", "foo"); Like like2 = new Like("test", "bar"); assertFalse(like1.equals(like2)); } @Test public void equals_differentProperties_shouldBeFalse() { Like like1 = new Like("foo", "test"); Like like2 = new Like("bar", "test"); assertFalse(like1.equals(like2)); } @Test public void equals_differentPropertiesAndValues_shouldBeFalse() { Like like1 = new Like("foo", "bar"); Like like2 = new Like("baz", "zomg"); assertFalse(like1.equals(like2)); } @Test public void equals_differentClasses_shouldBeFalse() { Like like1 = new Like("foo", "bar"); Object obj = new Object(); assertFalse(like1.equals(obj)); } @Test public void equals_bothHaveNullProperties_shouldBeTrue() { Like like1 = new Like(null, "foo"); Like like2 = new Like(null, "foo"); assertTrue(like1.equals(like2)); } @Test public void equals_bothHaveNullValues_shouldBeTrue() { Like like1 = new Like("foo", null); Like like2 = new Like("foo", null); assertTrue(like1.equals(like2)); } @Test public void equals_onePropertyIsNull_shouldBeFalse() { Like like1 = new Like(null, "bar"); Like like2 = new Like("foo", "baz"); assertFalse(like1.equals(like2)); } @Test public void equals_oneValueIsNull_shouldBeFalse() { Like like1 = new Like("foo", null); Like like2 = new Like("baz", "bar"); assertFalse(like1.equals(like2)); } @Test public void hashCode_equalInstances_shouldBeEqual() { Like like1 = new Like("test", "foo"); Like like2 = new Like("test", "foo"); assertEquals(like1.hashCode(), like2.hashCode()); } @Test public void hashCode_differentPropertiesAndValues_shouldNotEqual() { Like like1 = new Like("foo", "bar"); Like like2 = new Like("baz", "zomg"); assertTrue(like1.hashCode() != like2.hashCode()); } }