You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SimpleStringFilterTest.java 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.vaadin.data.util.filter;
  2. import org.junit.Assert;
  3. import org.junit.Test;
  4. public class SimpleStringFilterTest extends
  5. AbstractFilterTestBase<SimpleStringFilter> {
  6. protected static TestItem<String, String> createTestItem() {
  7. return new TestItem<String, String>("abcde", "TeSt");
  8. }
  9. protected TestItem<String, String> getTestItem() {
  10. return createTestItem();
  11. }
  12. protected SimpleStringFilter f(Object propertyId, String filterString,
  13. boolean ignoreCase, boolean onlyMatchPrefix) {
  14. return new SimpleStringFilter(propertyId, filterString, ignoreCase,
  15. onlyMatchPrefix);
  16. }
  17. protected boolean passes(Object propertyId, String filterString,
  18. boolean ignoreCase, boolean onlyMatchPrefix) {
  19. return f(propertyId, filterString, ignoreCase, onlyMatchPrefix)
  20. .passesFilter(null, getTestItem());
  21. }
  22. @Test
  23. public void testStartsWithCaseSensitive() {
  24. Assert.assertTrue(passes(PROPERTY1, "ab", false, true));
  25. Assert.assertTrue(passes(PROPERTY1, "", false, true));
  26. Assert.assertFalse(passes(PROPERTY2, "ab", false, true));
  27. Assert.assertFalse(passes(PROPERTY1, "AB", false, true));
  28. }
  29. @Test
  30. public void testStartsWithCaseInsensitive() {
  31. Assert.assertTrue(passes(PROPERTY1, "AB", true, true));
  32. Assert.assertTrue(passes(PROPERTY2, "te", true, true));
  33. Assert.assertFalse(passes(PROPERTY2, "AB", true, true));
  34. }
  35. @Test
  36. public void testContainsCaseSensitive() {
  37. Assert.assertTrue(passes(PROPERTY1, "ab", false, false));
  38. Assert.assertTrue(passes(PROPERTY1, "abcde", false, false));
  39. Assert.assertTrue(passes(PROPERTY1, "cd", false, false));
  40. Assert.assertTrue(passes(PROPERTY1, "e", false, false));
  41. Assert.assertTrue(passes(PROPERTY1, "", false, false));
  42. Assert.assertFalse(passes(PROPERTY2, "ab", false, false));
  43. Assert.assertFalse(passes(PROPERTY1, "es", false, false));
  44. }
  45. @Test
  46. public void testContainsCaseInsensitive() {
  47. Assert.assertTrue(passes(PROPERTY1, "AB", true, false));
  48. Assert.assertTrue(passes(PROPERTY1, "aBcDe", true, false));
  49. Assert.assertTrue(passes(PROPERTY1, "CD", true, false));
  50. Assert.assertTrue(passes(PROPERTY1, "", true, false));
  51. Assert.assertTrue(passes(PROPERTY2, "es", true, false));
  52. Assert.assertFalse(passes(PROPERTY2, "ab", true, false));
  53. }
  54. @Test
  55. public void testAppliesToProperty() {
  56. SimpleStringFilter filter = f(PROPERTY1, "ab", false, true);
  57. Assert.assertTrue(filter.appliesToProperty(PROPERTY1));
  58. Assert.assertFalse(filter.appliesToProperty(PROPERTY2));
  59. Assert.assertFalse(filter.appliesToProperty("other"));
  60. }
  61. @Test
  62. public void testEqualsHashCode() {
  63. SimpleStringFilter filter = f(PROPERTY1, "ab", false, true);
  64. SimpleStringFilter f1 = f(PROPERTY2, "ab", false, true);
  65. SimpleStringFilter f1b = f(PROPERTY2, "ab", false, true);
  66. SimpleStringFilter f2 = f(PROPERTY1, "cd", false, true);
  67. SimpleStringFilter f2b = f(PROPERTY1, "cd", false, true);
  68. SimpleStringFilter f3 = f(PROPERTY1, "ab", true, true);
  69. SimpleStringFilter f3b = f(PROPERTY1, "ab", true, true);
  70. SimpleStringFilter f4 = f(PROPERTY1, "ab", false, false);
  71. SimpleStringFilter f4b = f(PROPERTY1, "ab", false, false);
  72. // equal but not same instance
  73. Assert.assertEquals(f1, f1b);
  74. Assert.assertEquals(f2, f2b);
  75. Assert.assertEquals(f3, f3b);
  76. Assert.assertEquals(f4, f4b);
  77. // more than one property differ
  78. Assert.assertFalse(f1.equals(f2));
  79. Assert.assertFalse(f1.equals(f3));
  80. Assert.assertFalse(f1.equals(f4));
  81. Assert.assertFalse(f2.equals(f1));
  82. Assert.assertFalse(f2.equals(f3));
  83. Assert.assertFalse(f2.equals(f4));
  84. Assert.assertFalse(f3.equals(f1));
  85. Assert.assertFalse(f3.equals(f2));
  86. Assert.assertFalse(f3.equals(f4));
  87. Assert.assertFalse(f4.equals(f1));
  88. Assert.assertFalse(f4.equals(f2));
  89. Assert.assertFalse(f4.equals(f3));
  90. // only one property differs
  91. Assert.assertFalse(filter.equals(f1));
  92. Assert.assertFalse(filter.equals(f2));
  93. Assert.assertFalse(filter.equals(f3));
  94. Assert.assertFalse(filter.equals(f4));
  95. Assert.assertFalse(f1.equals(null));
  96. Assert.assertFalse(f1.equals(new Object()));
  97. Assert.assertEquals(f1.hashCode(), f1b.hashCode());
  98. Assert.assertEquals(f2.hashCode(), f2b.hashCode());
  99. Assert.assertEquals(f3.hashCode(), f3b.hashCode());
  100. Assert.assertEquals(f4.hashCode(), f4b.hashCode());
  101. }
  102. @Test
  103. public void testNonExistentProperty() {
  104. Assert.assertFalse(passes("other1", "ab", false, true));
  105. }
  106. @Test
  107. public void testNullValueForProperty() {
  108. TestItem<String, String> item = createTestItem();
  109. item.addItemProperty("other1", new NullProperty());
  110. Assert.assertFalse(f("other1", "ab", false, true).passesFilter(null,
  111. item));
  112. }
  113. }