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.io.Serializable;
20  
21  import static org.junit.Assert.assertFalse;
22  import static org.junit.Assert.assertSame;
23  import static org.junit.Assert.assertTrue;
24  import org.junit.Test;
25  
26  
27  public class DefaultValueSpecificationTest {
28  
29      @Test
30      public void testBlankStringSpecificationType() {
31          Specification<Object> spec = new DefaultValueSpecification<Object>(Object.class);
32          assertSame(Object.class, spec.getType());
33          assertSame(Object.class, new DefaultValueSpecification<Object>(Object.class).getType());
34  
35          Specification<Serializable> spec2 = new DefaultValueSpecification<Serializable>(Serializable.class);
36          assertSame(Serializable.class, spec2.getType());
37          assertSame(Serializable.class, new DefaultValueSpecification<Serializable>(Serializable.class).getType());
38      }
39  
40      @Test
41      public void testBlankStringSpecification() {
42          Specification<String> spec = new DefaultValueSpecification<String>(String.class);
43  
44          assertTrue(spec.isSatisfiedBy(null));
45          assertTrue(spec.isSatisfiedBy(""));
46          assertTrue(spec.isSatisfiedBy("   "));
47  
48          assertTrue(spec.isSatisfiedBy("\n"));
49          assertTrue(spec.isSatisfiedBy("\r"));
50          assertTrue(spec.isSatisfiedBy("\t"));
51          assertTrue(spec.isSatisfiedBy("\r\n"));
52          assertTrue(spec.isSatisfiedBy("\r\n\t"));
53  
54          assertFalse(spec.isSatisfiedBy("."));
55          assertFalse(spec.isSatisfiedBy("x"));
56      }
57  
58      @Test
59      public void testBlankNumberSpecification() {
60          Specification<Number> spec = new DefaultValueSpecification<Number>(Number.class);
61  
62          assertTrue(spec.isSatisfiedBy(0));
63          assertTrue(spec.isSatisfiedBy(0L));
64          assertTrue(spec.isSatisfiedBy(0.0F));
65          assertTrue(spec.isSatisfiedBy(0.0D));
66          assertTrue(spec.isSatisfiedBy((short) 0));
67          assertTrue(spec.isSatisfiedBy(new Short((short) 0)));
68          assertTrue(spec.isSatisfiedBy(new Integer(0)));
69          assertTrue(spec.isSatisfiedBy(new Long(0)));
70          assertTrue(spec.isSatisfiedBy(new Float(0.00)));
71          assertTrue(spec.isSatisfiedBy(new Double(0.0000)));
72      }
73  
74      @Test
75      public void testDefaultBooleanSpecification() {
76          Specification<Boolean> spec = new DefaultValueSpecification<Boolean>(Boolean.class);
77  
78          assertTrue(spec.isSatisfiedBy(Boolean.FALSE));
79          assertTrue(spec.isSatisfiedBy(false));
80          assertFalse(spec.isSatisfiedBy(Boolean.TRUE));
81          assertFalse(spec.isSatisfiedBy(true));
82      }
83  
84      @Test
85      public void rawBulkTest() {
86          Specification spec = new DefaultValueSpecification();
87          assertSame(Object.class, spec.getType());
88          assertSame(Object.class, new DefaultValueSpecification<Object>(Object.class).getType());
89  
90          assertTrue(spec.isSatisfiedBy(null));
91          assertTrue(spec.isSatisfiedBy(""));
92          assertTrue(spec.isSatisfiedBy("   "));
93  
94          assertTrue(spec.isSatisfiedBy("\n"));
95          assertTrue(spec.isSatisfiedBy("\r"));
96          assertTrue(spec.isSatisfiedBy("\t"));
97          assertTrue(spec.isSatisfiedBy("\r\n"));
98          assertTrue(spec.isSatisfiedBy("\r\n\t"));
99  
100         assertFalse(spec.isSatisfiedBy("."));
101         assertFalse(spec.isSatisfiedBy("x"));
102 
103         assertTrue(spec.isSatisfiedBy(0));
104         assertTrue(spec.isSatisfiedBy(0L));
105         assertTrue(spec.isSatisfiedBy(0.0F));
106         assertTrue(spec.isSatisfiedBy(0.0D));
107         assertTrue(spec.isSatisfiedBy((short) 0));
108         assertTrue(spec.isSatisfiedBy(new Short((short) 0)));
109         assertTrue(spec.isSatisfiedBy(new Integer(0)));
110         assertTrue(spec.isSatisfiedBy(new Long(0)));
111         assertTrue(spec.isSatisfiedBy(new Float(0.00)));
112         assertTrue(spec.isSatisfiedBy(new Double(0.0000)));
113 
114         assertTrue(spec.isSatisfiedBy(Boolean.FALSE));
115         assertTrue(spec.isSatisfiedBy(false));
116         assertFalse(spec.isSatisfiedBy(Boolean.TRUE));
117         assertFalse(spec.isSatisfiedBy(true));
118     }
119 }