package com.vaadin.v7.data.util.sqlcontainer.filters;
import org.junit.Assert;
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<Integer>(5));
Assert.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<String>("asdfooghij"));
Assert.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<String>("asdfOOghij"));
Assert.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<String>("asdfOOghij"));
Assert.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<String>("asdbarghij"));
Assert.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<String>("foo"));
Assert.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<String>("fo"));
Assert.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<String>("foobar"));
Assert.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<String>("barfoo"));
Assert.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<String>("barfoo"));
Assert.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<String>("foobar"));
Assert.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<String>("fooASDFbar"));
Assert.assertTrue(like.passesFilter("id", item));
}
@Test
public void appliesToProperty_valueIsProperty_shouldBeTrue() {
Like like = new Like("test", "%foo");
Assert.assertTrue(like.appliesToProperty("test"));
}
@Test
public void appliesToProperty_valueIsNotProperty_shouldBeFalse() {
Like like = new Like("test", "%foo");
Assert.assertFalse(like.appliesToProperty("bar"));
}
@Test
public void equals_sameInstances_shouldBeTrue() {
Like like1 = new Like("test", "%foo");
Like like2 = like1;
Assert.assertTrue(like1.equals(like2));
}
@Test
public void equals_twoEqualInstances_shouldBeTrue() {
Like like1 = new Like("test", "foo");
Like like2 = new Like("test", "foo");
Assert.assertTrue(like1.equals(like2));
}
@Test
public void equals_differentValues_shouldBeFalse() {
Like like1 = new Like("test", "foo");
Like like2 = new Like("test", "bar");
Assert.assertFalse(like1.equals(like2));
}
@Test
public void equals_differentProperties_shouldBeFalse() {
Like like1 = new Like("foo", "test");
Like like2 = new Like("bar", "test");
Assert.assertFalse(like1.equals(like2));
}
@Test
public void equals_differentPropertiesAndValues_shouldBeFalse() {
Like like1 = new Like("foo", "bar");
Like like2 = new Like("baz", "zomg");
Assert.assertFalse(like1.equals(like2));
}
@Test
public void equals_differentClasses_shouldBeFalse() {
Like like1 = new Like("foo", "bar");
Object obj = new Object();
Assert.assertFalse(like1.equals(obj));
}
@Test
public void equals_bothHaveNullProperties_shouldBeTrue() {
Like like1 = new Like(null, "foo");
Like like2 = new Like(null, "foo");
Assert.assertTrue(like1.equals(like2));
}
@Test
public void equals_bothHaveNullValues_shouldBeTrue() {
Like like1 = new Like("foo", null);
Like like2 = new Like("foo", null);
Assert.assertTrue(like1.equals(like2));
}
@Test
public void equals_onePropertyIsNull_shouldBeFalse() {
Like like1 = new Like(null, "bar");
Like like2 = new Like("foo", "baz");
Assert.assertFalse(like1.equals(like2));
}
@Test
public void equals_oneValueIsNull_shouldBeFalse() {
Like like1 = new Like("foo", null);
Like like2 = new Like("baz", "bar");
Assert.assertFalse(like1.equals(like2));
}
@Test
public void hashCode_equalInstances_shouldBeEqual() {
Like like1 = new Like("test", "foo");
Like like2 = new Like("test", "foo");
Assert.assertEquals(like1.hashCode(), like2.hashCode());
}
@Test
public void hashCode_differentPropertiesAndValues_shouldNotEqual() {
Like like1 = new Like("foo", "bar");
Like like2 = new Like("baz", "zomg");
Assert.assertTrue(like1.hashCode() != like2.hashCode());
}
}