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 java.util.Date;
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.test.domain.Testdata.maleCustomer;
28  
29  
30  public class EqualIgnoreCaseStringSpecificationTest {
31  
32      @Test
33      public void testShouldNotAcceptNullAsValue() {
34          try {
35              new EqualIgnoreCaseStringSpecification(null);
36              fail("Should have thrown exception");
37  
38          } catch (IllegalArgumentException e) {
39              String expectedMessage = "Value parameter cannot be null";
40              assertEquals(expectedMessage, e.getMessage());
41          }
42      }
43  
44      @Test
45      public void testEqualIgnoreCaseStringSpecification_equals() {
46          Specification<String> spec = new EqualIgnoreCaseStringSpecification("Hey Chica!");
47          assertFalse(spec.equals(new EqualIgnoreCaseStringSpecification("")));
48          assertFalse(spec.equals(new EqualIgnoreCaseStringSpecification("         ")));
49          assertFalse(spec.equals(new EqualIgnoreCaseStringSpecification("Hey Chico!")));
50          assertTrue(spec.equals(new EqualIgnoreCaseStringSpecification("Hey Chica!")));
51          assertFalse(spec.equals(new EqualIgnoreCaseStringSpecification("hey chica!")));
52  
53          assertFalse(new EqualIgnoreCaseStringSpecification("").equals(spec));
54          assertFalse(new EqualIgnoreCaseStringSpecification("         ").equals(spec));
55          assertFalse(new EqualIgnoreCaseStringSpecification("Hey Chico!").equals(spec));
56          assertTrue(new EqualIgnoreCaseStringSpecification("Hey Chica!").equals(spec));
57          assertFalse(new EqualIgnoreCaseStringSpecification("hey chica!").equals(spec));
58  
59          assertFalse(new EqualSpecification<String>("hey chica!").equals(spec));
60          assertFalse(new EqualSpecification<String>("Hey Chica!").equals(spec));
61      }
62  
63      @Test
64      public void testEqualIgnoreCaseStringSpecification() {
65          Specification<String> spec = new EqualIgnoreCaseStringSpecification("Hey Chica!");
66          assertFalse(spec.isSatisfiedBy(null));
67          assertFalse(spec.isSatisfiedBy(""));
68          assertFalse(spec.isSatisfiedBy("         "));
69          assertFalse(spec.isSatisfiedBy("Hey Chico!"));
70          assertTrue(spec.isSatisfiedBy("Hey Chica!"));
71          assertTrue(spec.isSatisfiedBy("hey Chica!"));
72          assertTrue(spec.isSatisfiedBy("Hey chica!"));
73      }
74  
75      @Test
76      public void testEqualIgnoreCaseStringSpecification_Raw() {
77          Specification spec = new EqualIgnoreCaseStringSpecification("Hey Chica!");
78          assertFalse(spec.isSatisfiedBy(null));
79          assertFalse(spec.isSatisfiedBy(""));
80          assertFalse(spec.isSatisfiedBy("         "));
81          assertFalse(spec.isSatisfiedBy("Hey Chico!"));
82          assertTrue(spec.isSatisfiedBy("Hey Chica!"));
83          assertTrue(spec.isSatisfiedBy("hey Chica!"));
84          assertTrue(spec.isSatisfiedBy("Hey chica!"));
85  
86          try {
87              assertFalse(spec.isSatisfiedBy(0));
88              fail("Should have thrown exception");
89          } catch (ClassCastException e) {
90              assertEquals("java.lang.Integer cannot be cast to java.lang.String",
91                           e.getMessage());
92          }
93          try {
94              assertFalse(spec.isSatisfiedBy(new Date()));
95              fail("Should have thrown exception");
96          } catch (ClassCastException e) {
97              assertEquals("java.util.Date cannot be cast to java.lang.String",
98                           e.getMessage());
99          }
100         try {
101             assertFalse(spec.isSatisfiedBy(maleCustomer));
102             fail("Should have thrown exception");
103         } catch (ClassCastException e) {
104             assertEquals("net.sourceforge.domian.test.domain.Customer cannot be cast to java.lang.String",
105                          e.getMessage());
106         }
107     }
108 }