1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sourceforge.domian.specification;
17
18
19 import java.text.ParseException;
20
21 import static org.junit.Assert.assertEquals;
22 import static org.junit.Assert.assertFalse;
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.fail;
25 import org.junit.Test;
26
27 import static net.sourceforge.domian.specification.SpecificationFactory.like;
28
29
30 public class WildcardExpressionMatcherStringSpecificationTest {
31
32 @Test
33 public void shouldNotAcceptNullAsValue() {
34 try {
35 new WildcardExpressionMatcherIgnoreCaseStringSpecification(null);
36 fail("Should have thrown exception");
37
38 } catch (IllegalArgumentException e) {
39 String expectedMessage = "Regular expression parameter cannot be null";
40 assertEquals(expectedMessage, e.getMessage());
41 }
42 }
43
44 @Test
45 public void shouldNotAcceptEmptyAsValue() {
46 Specification<String> spec = new WildcardExpressionMatcherStringSpecification("");
47 assertFalse(spec.isSatisfiedBy(null));
48 assertTrue(spec.isSatisfiedBy(""));
49 assertFalse(spec.isSatisfiedBy(" "));
50 }
51
52 @Test
53 public void shouldNotAcceptBlankAsValue() {
54 Specification<String> spec = new WildcardExpressionMatcherStringSpecification(" ");
55 assertFalse(spec.isSatisfiedBy(null));
56 assertFalse(spec.isSatisfiedBy(""));
57 assertFalse(spec.isSatisfiedBy(" "));
58 assertTrue(spec.isSatisfiedBy(" "));
59 assertFalse(spec.isSatisfiedBy(" "));
60 }
61
62 @Test
63 public void shouldMatchWildcardExpressions_Plain() {
64 Specification<String> spec = new WildcardExpressionMatcherStringSpecification("Eirik");
65 assertFalse(spec.isSatisfiedBy(null));
66 assertFalse(spec.isSatisfiedBy(""));
67 assertFalse(spec.isSatisfiedBy(" "));
68 assertFalse(spec.isSatisfiedBy("eirik"));
69 assertTrue(spec.isSatisfiedBy("Eirik"));
70 }
71
72 @Test
73 public void shouldMatchWildcardExpressions_Questions() {
74 Specification<String> spec = new WildcardExpressionMatcherStringSpecification("??");
75 assertFalse(spec.isSatisfiedBy(null));
76 assertFalse(spec.isSatisfiedBy(""));
77 assertTrue(spec.isSatisfiedBy("??"));
78 assertTrue(spec.isSatisfiedBy("yo"));
79 assertTrue(spec.isSatisfiedBy(" "));
80 assertFalse(spec.isSatisfiedBy(" "));
81 assertFalse(spec.isSatisfiedBy("e ri "));
82 assertTrue(spec.isSatisfiedBy("Ei"));
83
84 spec = new WildcardExpressionMatcherStringSpecification("E?ri?");
85 assertFalse(spec.isSatisfiedBy(null));
86 assertFalse(spec.isSatisfiedBy(""));
87 assertFalse(spec.isSatisfiedBy(" "));
88 assertFalse(spec.isSatisfiedBy("e ri "));
89 assertTrue(spec.isSatisfiedBy("E ri "));
90 assertTrue(spec.isSatisfiedBy("E rik"));
91 assertTrue(spec.isSatisfiedBy("E%rix"));
92 assertFalse(spec.isSatisfiedBy("eirik"));
93 assertTrue(spec.isSatisfiedBy("Eirik"));
94 }
95
96 @Test
97 public void shouldMatchWildcardExpressions_Stars() {
98 Specification<String> spec = new WildcardExpressionMatcherStringSpecification("*");
99 assertFalse(spec.isSatisfiedBy(null));
100 assertTrue(spec.isSatisfiedBy(""));
101 assertTrue(spec.isSatisfiedBy(" "));
102 assertTrue(spec.isSatisfiedBy("e ri "));
103 assertTrue(spec.isSatisfiedBy("E ri "));
104 assertTrue(spec.isSatisfiedBy("E rik"));
105 assertTrue(spec.isSatisfiedBy("E%rix"));
106 assertTrue(spec.isSatisfiedBy("eirik"));
107 assertTrue(spec.isSatisfiedBy("Eirik"));
108
109 spec = new WildcardExpressionMatcherStringSpecification("*i*k");
110 assertFalse(spec.isSatisfiedBy(null));
111 assertFalse(spec.isSatisfiedBy(""));
112 assertFalse(spec.isSatisfiedBy(" "));
113 assertTrue(spec.isSatisfiedBy("ik"));
114 assertFalse(spec.isSatisfiedBy("E ri "));
115 assertTrue(spec.isSatisfiedBy("E rik"));
116 assertTrue(spec.isSatisfiedBy("e%rik"));
117 assertTrue(spec.isSatisfiedBy("eirik"));
118 assertTrue(spec.isSatisfiedBy("Eirik"));
119 }
120
121 @Test
122 public void testEqual() throws ParseException {
123 Specification actualSpec = like("*T?*r");
124 Specification expectedSpec = like("*T?*r");
125
126 assertEquals(expectedSpec, actualSpec);
127 }
128 }