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.util.Date;
20
21 import static net.sourceforge.domian.specification.SpecificationFactory.greaterThanOrEqualTo;
22 import static net.sourceforge.domian.specification.SpecificationFactory.lessThanOrEqualTo;
23 import static net.sourceforge.domian.test.domain.Testdata.thirtyYearsAgo;
24 import static net.sourceforge.domian.test.domain.Testdata.today;
25 import static net.sourceforge.domian.test.domain.Testdata.tomorrow;
26 import static net.sourceforge.domian.test.domain.Testdata.yesterday;
27
28 import junit.framework.TestCase;
29
30
31 public class ComparableSpecificationTest extends TestCase {
32
33 public void testShouldNotAcceptNullAsValue() {
34 try {
35 new GreaterThanSpecification<Integer>(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
45 public void testGreaterThanOrEqualSpecification_Integer() {
46 Specification<Integer> grThanOrEqInt23 = greaterThanOrEqualTo(23);
47
48 assertFalse(grThanOrEqInt23.isSatisfiedBy(null));
49 assertFalse(grThanOrEqInt23.isSatisfiedBy(22));
50 assertFalse(grThanOrEqInt23.isSatisfiedBy(new Integer("00022")));
51 assertTrue(grThanOrEqInt23.isSatisfiedBy(23));
52 assertTrue(grThanOrEqInt23.isSatisfiedBy(new Integer("0023")));
53 assertTrue(grThanOrEqInt23.isSatisfiedBy(24));
54 assertTrue(grThanOrEqInt23.isSatisfiedBy(new Integer("00002300")));
55 }
56
57
58 public void testGreaterThanOrEqualSpecification_Date() {
59 Specification<Date> spec = greaterThanOrEqualTo(today);
60
61 assertFalse(spec.isSatisfiedBy(null));
62 assertTrue(spec.isSatisfiedBy(tomorrow));
63 assertTrue(spec.isSatisfiedBy(today));
64 assertFalse(spec.isSatisfiedBy(yesterday));
65 assertFalse(spec.isSatisfiedBy(thirtyYearsAgo));
66 }
67
68
69 public void testGreaterThanSpecification_Float() {
70 Specification<Float> grThanOrEqFloat23 = new GreaterThanSpecification<Float>(23.0F);
71
72 assertFalse(grThanOrEqFloat23.isSatisfiedBy(null));
73 assertFalse(grThanOrEqFloat23.isSatisfiedBy(new Float("22.90")));
74 assertFalse(grThanOrEqFloat23.isSatisfiedBy(new Float("23.00")));
75 assertTrue(grThanOrEqFloat23.isSatisfiedBy(new Float("23.09")));
76 }
77
78
79 public void testLessThanOrEqualSpecification_Integer() {
80 Specification<Integer> lessThanOrEqInt23 = lessThanOrEqualTo(23);
81
82 assertFalse(lessThanOrEqInt23.isSatisfiedBy(null));
83 assertTrue(lessThanOrEqInt23.isSatisfiedBy(22));
84 assertTrue(lessThanOrEqInt23.isSatisfiedBy(new Integer("00022")));
85 assertTrue(lessThanOrEqInt23.isSatisfiedBy(23));
86 assertTrue(lessThanOrEqInt23.isSatisfiedBy(new Integer("0023")));
87 assertFalse(lessThanOrEqInt23.isSatisfiedBy(24));
88 assertFalse(lessThanOrEqInt23.isSatisfiedBy(new Integer("00002300")));
89 }
90
91
92 public void testLessThanOrEqualSpecification_Float() {
93 Specification<Float> lessThanOrEqFloat23 = lessThanOrEqualTo(23.0F);
94
95 assertFalse(lessThanOrEqFloat23.isSatisfiedBy(null));
96 assertTrue(lessThanOrEqFloat23.isSatisfiedBy(new Float("22.90")));
97 assertTrue(lessThanOrEqFloat23.isSatisfiedBy(new Float("23.00")));
98 assertFalse(lessThanOrEqFloat23.isSatisfiedBy(new Float("23.09")));
99 }
100
101
102 public void testLessThanSpecification_String() {
103 Specification<String> lessThanUpperCaseA = new LessThanSpecification<String>("A");
104 assertFalse(lessThanUpperCaseA.isSatisfiedBy(null));
105 assertFalse(lessThanUpperCaseA.isSatisfiedBy("A"));
106 assertFalse(lessThanUpperCaseA.isSatisfiedBy("B"));
107 assertFalse(lessThanUpperCaseA.isSatisfiedBy("a"));
108 assertTrue(lessThanUpperCaseA.isSatisfiedBy(""));
109 assertTrue(lessThanUpperCaseA.isSatisfiedBy(" "));
110 assertTrue(lessThanUpperCaseA.isSatisfiedBy(".,"));
111 assertTrue(lessThanUpperCaseA.isSatisfiedBy("?"));
112
113 Specification<String> lessThanLowerCaseA = new LessThanSpecification<String>("a");
114 assertFalse(lessThanLowerCaseA.isSatisfiedBy(null));
115 assertFalse(lessThanLowerCaseA.isSatisfiedBy("a"));
116
117 assertFalse(lessThanLowerCaseA.isSatisfiedBy("b"));
118 assertTrue(lessThanLowerCaseA.isSatisfiedBy("A"));
119 assertTrue(lessThanLowerCaseA.isSatisfiedBy("B"));
120 assertTrue(lessThanLowerCaseA.isSatisfiedBy(""));
121 assertTrue(lessThanLowerCaseA.isSatisfiedBy(" "));
122 assertTrue(lessThanLowerCaseA.isSatisfiedBy(".,"));
123 assertTrue(lessThanLowerCaseA.isSatisfiedBy("?"));
124 }
125
126
127 public void testLessThanSpecification_Date() {
128 Specification<Date> spec = new LessThanSpecification<Date>(today);
129
130 assertFalse(spec.isSatisfiedBy(null));
131 assertFalse(spec.isSatisfiedBy(tomorrow));
132 assertTrue(spec.isSatisfiedBy(yesterday));
133 assertTrue(spec.isSatisfiedBy(thirtyYearsAgo));
134 }
135 }