1   /*
2    * Copyright 2006-2010 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package net.sourceforge.domian.specification;
17  
18  
19  import static org.junit.Assert.assertEquals;
20  import static org.junit.Assert.assertFalse;
21  import static org.junit.Assert.assertTrue;
22  import static org.junit.Assert.fail;
23  import org.junit.Test;
24  
25  
26  public class WildcardExpressionMatcherIgnoreCaseStringSpecificationTest {
27  
28      @Test
29      public void shouldNotAcceptNullAsValue() {
30          try {
31              new WildcardExpressionMatcherIgnoreCaseStringSpecification(null);
32              fail("Should have thrown exception");
33  
34          } catch (IllegalArgumentException e) {
35              String expectedMessage = "Regular expression parameter cannot be null";
36              assertEquals(expectedMessage, e.getMessage());
37          }
38      }
39  
40  
41      @Test
42      public void shouldMatchWildcardExpressions_Plain() {
43          Specification<String> spec = new WildcardExpressionMatcherIgnoreCaseStringSpecification("Eirik");
44          assertFalse(spec.isSatisfiedBy(null));
45          assertFalse(spec.isSatisfiedBy(""));
46          assertFalse(spec.isSatisfiedBy("     "));
47          assertTrue(spec.isSatisfiedBy("eirik"));
48          assertTrue(spec.isSatisfiedBy("Eirik"));
49      }
50  
51  
52      @Test
53      public void shouldMatchWildcardExpressions_Questions() {
54          Specification<String> spec = new WildcardExpressionMatcherIgnoreCaseStringSpecification("??");
55          assertFalse(spec.isSatisfiedBy(null));
56          assertFalse(spec.isSatisfiedBy(""));
57          assertTrue(spec.isSatisfiedBy("  "));
58          assertFalse(spec.isSatisfiedBy("     "));
59          assertFalse(spec.isSatisfiedBy("e ri "));
60          assertTrue(spec.isSatisfiedBy("Ei"));
61  
62          spec = new WildcardExpressionMatcherIgnoreCaseStringSpecification("E?ri?");
63          assertFalse(spec.isSatisfiedBy(null));
64          assertFalse(spec.isSatisfiedBy(""));
65          assertFalse(spec.isSatisfiedBy("     "));
66          assertFalse(spec.isSatisfiedBy("e rk "));
67          assertTrue(spec.isSatisfiedBy("e ri "));
68          assertTrue(spec.isSatisfiedBy("E ri "));
69          assertTrue(spec.isSatisfiedBy("E rik"));
70          assertTrue(spec.isSatisfiedBy("E%rix"));
71          assertTrue(spec.isSatisfiedBy("eirik"));
72          assertTrue(spec.isSatisfiedBy("Eirik"));
73      }
74  
75  
76      @Test
77      public void shouldMatchWildcardExpressions_Stars() {
78          Specification<String> spec = new WildcardExpressionMatcherIgnoreCaseStringSpecification("*");
79          assertFalse(spec.isSatisfiedBy(null)); // null is never approved
80          assertTrue(spec.isSatisfiedBy(""));
81          assertTrue(spec.isSatisfiedBy("     "));
82          assertTrue(spec.isSatisfiedBy("e ri "));
83          assertTrue(spec.isSatisfiedBy("E ri "));
84          assertTrue(spec.isSatisfiedBy("E rik"));
85          assertTrue(spec.isSatisfiedBy("E%rix"));
86          assertTrue(spec.isSatisfiedBy("eirik"));
87          assertTrue(spec.isSatisfiedBy("Eirik"));
88  
89          spec = new WildcardExpressionMatcherIgnoreCaseStringSpecification("*i*k");
90          assertFalse(spec.isSatisfiedBy(null));
91          assertFalse(spec.isSatisfiedBy(""));
92          assertFalse(spec.isSatisfiedBy("     "));
93          assertTrue(spec.isSatisfiedBy("ik"));
94          assertFalse(spec.isSatisfiedBy("E ri "));
95          assertTrue(spec.isSatisfiedBy("E rik"));
96          assertTrue(spec.isSatisfiedBy("e%rik"));
97          assertTrue(spec.isSatisfiedBy("eirik"));
98          assertTrue(spec.isSatisfiedBy("Eirik"));
99      }
100 }