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 net.sourceforge.domian.test.domain.Customer;
20
21 import junit.framework.TestCase;
22
23
24 public class EnumNameStringSpecificationTest extends TestCase {
25
26 final static String maleGenderString = Customer.Gender.MALE.name();
27 final static String femaleGenderString = Customer.Gender.FEMALE.name();
28 final static String mixedCaseMaleGenderString = "MaLe";
29 final static String mixedCaseFemaleGenderString = "fEmALe";
30 final static String lowercaseMaleGenderString = Customer.Gender.MALE.name().toLowerCase();
31 final static String lowercaseMFemaleGenderString = Customer.Gender.FEMALE.name().toLowerCase();
32 final static String almostMaleGenderString = "MALLE";
33 final static String almostFemaleGenderString = "FEEMALE";
34
35 final static Specification rawSpec = new EnumNameStringSpecification(Customer.Gender.class);
36 final static Specification<String> spec = new EnumNameStringSpecification<Customer.Gender>(Customer.Gender.class);
37 final static Specification<String> notEnumTypeSpec = new EnumNameStringSpecification(Customer.class);
38
39
40 public void testRawEnumSpecificationShouldNotBeSatisfiedByBlankStrings() {
41 assertFalse(rawSpec.isSatisfiedBy(null));
42
43 assertFalse(rawSpec.isSatisfiedBy(""));
44 assertFalse(rawSpec.isSatisfiedBy(" "));
45 assertFalse(rawSpec.isSatisfiedBy("\n"));
46 assertFalse(rawSpec.isSatisfiedBy("\r"));
47 assertFalse(rawSpec.isSatisfiedBy("\t"));
48 assertFalse(rawSpec.isSatisfiedBy("\r\n"));
49 assertFalse(rawSpec.isSatisfiedBy("\r\n\t"));
50
51 assertFalse(rawSpec.isSatisfiedBy("."));
52 assertFalse(rawSpec.isSatisfiedBy("x"));
53 }
54
55
56 public void testShouldNotBeSatisfiedByBlankStrings() {
57 assertFalse(spec.isSatisfiedBy(null));
58
59 assertFalse(spec.isSatisfiedBy(""));
60 assertFalse(spec.isSatisfiedBy(" "));
61 assertFalse(spec.isSatisfiedBy("\n"));
62 assertFalse(spec.isSatisfiedBy("\r"));
63 assertFalse(spec.isSatisfiedBy("\t"));
64 assertFalse(spec.isSatisfiedBy("\r\n"));
65 assertFalse(spec.isSatisfiedBy("\r\n\t"));
66
67 assertFalse(spec.isSatisfiedBy("."));
68 assertFalse(spec.isSatisfiedBy("x"));
69 }
70
71
72 public void testNotEnumSpecificationShouldNotBeSatisfiedByBlankStrings() {
73 assertFalse(notEnumTypeSpec.isSatisfiedBy(null));
74
75 assertFalse(notEnumTypeSpec.isSatisfiedBy(""));
76 assertFalse(notEnumTypeSpec.isSatisfiedBy(" "));
77 assertFalse(notEnumTypeSpec.isSatisfiedBy("\n"));
78 assertFalse(notEnumTypeSpec.isSatisfiedBy("\r"));
79 assertFalse(notEnumTypeSpec.isSatisfiedBy("\t"));
80 assertFalse(notEnumTypeSpec.isSatisfiedBy("\r\n"));
81 assertFalse(notEnumTypeSpec.isSatisfiedBy("\r\n\t"));
82
83 assertFalse(notEnumTypeSpec.isSatisfiedBy("."));
84 assertFalse(notEnumTypeSpec.isSatisfiedBy("x"));
85 }
86
87
88 public void testRawEnumSpecificationShouldBeSatisfiedByEnumStrings() {
89 assertTrue(rawSpec.isSatisfiedBy(maleGenderString));
90 assertTrue(rawSpec.isSatisfiedBy(femaleGenderString));
91 assertTrue(rawSpec.isSatisfiedBy(lowercaseMaleGenderString));
92 assertTrue(rawSpec.isSatisfiedBy(lowercaseMFemaleGenderString));
93 assertTrue(rawSpec.isSatisfiedBy(mixedCaseMaleGenderString));
94 assertTrue(rawSpec.isSatisfiedBy(mixedCaseFemaleGenderString));
95
96 assertFalse(rawSpec.isSatisfiedBy(almostMaleGenderString));
97 assertFalse(rawSpec.isSatisfiedBy(almostFemaleGenderString));
98 }
99
100
101 public void testShouldBeSatisfiedByEnumStrings() {
102 assertTrue(spec.isSatisfiedBy(maleGenderString));
103 assertTrue(spec.isSatisfiedBy(femaleGenderString));
104 assertTrue(spec.isSatisfiedBy(lowercaseMaleGenderString));
105 assertTrue(spec.isSatisfiedBy(lowercaseMFemaleGenderString));
106 assertTrue(spec.isSatisfiedBy(mixedCaseMaleGenderString));
107 assertTrue(spec.isSatisfiedBy(mixedCaseFemaleGenderString));
108
109 assertFalse(spec.isSatisfiedBy(almostMaleGenderString));
110 assertFalse(spec.isSatisfiedBy(almostFemaleGenderString));
111 }
112
113
114 public void testNotEnumSpecificationShouldNotBeSatisfiedByAnything() {
115 assertFalse(notEnumTypeSpec.isSatisfiedBy(maleGenderString));
116 assertFalse(notEnumTypeSpec.isSatisfiedBy(femaleGenderString));
117 assertFalse(notEnumTypeSpec.isSatisfiedBy(lowercaseMaleGenderString));
118 assertFalse(notEnumTypeSpec.isSatisfiedBy(lowercaseMFemaleGenderString));
119 assertFalse(notEnumTypeSpec.isSatisfiedBy(mixedCaseMaleGenderString));
120 assertFalse(notEnumTypeSpec.isSatisfiedBy(mixedCaseFemaleGenderString));
121
122 assertFalse(notEnumTypeSpec.isSatisfiedBy(almostMaleGenderString));
123 assertFalse(notEnumTypeSpec.isSatisfiedBy(almostFemaleGenderString));
124 }
125
126
127 public void testGetType() {
128 assertEquals(String.class, spec.getType());
129 }
130
131
132 public void testEnumType() {
133 assertEquals(Customer.Gender.class, ((EnumNameStringSpecification) spec).getEnumType());
134 }
135 }