2 * This document is a part of the source code and related artifacts
3 * for CollectionSpace, an open source collections management system
4 * for museums and related institutions:
6 * http://www.collectionspace.org
7 * http://wiki.collectionspace.org
9 * Copyright © 2009 Regents of the University of California
11 * Licensed under the Educational Community License (ECL), Version 2.0.
12 * You may not use this file except in compliance with this License.
14 * You may obtain a copy of the ECL 2.0 License at
15 * https://source.collectionspace.org/collection-space/LICENSE.txt
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
24 package org.collectionspace.services.id.test;
26 import org.collectionspace.services.id.AlphabeticIDGeneratorPart;
27 import org.collectionspace.services.id.SequenceIDGeneratorPart;
29 import static org.junit.Assert.fail;
30 import junit.framework.TestCase;
33 * AlphabeticIDGeneratorPartTest
35 * Test class for AlphabeticIDGeneratorPart.
37 * $LastChangedRevision$
40 public class AlphabeticIDGeneratorPartTest extends TestCase {
42 SequenceIDGeneratorPart part;
44 public void testNextIDLowercase() {
46 part = new AlphabeticIDGeneratorPart("a");
47 assertEquals("a", part.newID());
48 assertEquals("b", part.newID());
49 assertEquals("c", part.newID());
51 part = new AlphabeticIDGeneratorPart("x");
52 assertEquals("x", part.newID());
53 assertEquals("y", part.newID());
54 assertEquals("z", part.newID());
58 public void testnewIDLowercase2Chars() {
60 part = new AlphabeticIDGeneratorPart("aa");
61 assertEquals("aa", part.newID());
62 assertEquals("ab", part.newID());
63 assertEquals("ac", part.newID());
65 part = new AlphabeticIDGeneratorPart("zx");
66 assertEquals("zx", part.newID());
67 assertEquals("zy", part.newID());
68 assertEquals("zz", part.newID());
72 public void testnewIDLowercase2CharsRolloverFirst() {
74 part = new AlphabeticIDGeneratorPart("ay");
75 assertEquals("ay", part.newID());
76 assertEquals("az", part.newID());
77 assertEquals("ba", part.newID());
78 assertEquals("bb", part.newID());
82 public void testnewIDUppercase() {
84 part = new AlphabeticIDGeneratorPart("A", "Z", "A");
85 assertEquals("A", part.newID());
86 assertEquals("B", part.newID());
87 assertEquals("C", part.newID());
89 part = new AlphabeticIDGeneratorPart("A", "Z", "X");
90 assertEquals("X", part.newID());
91 assertEquals("Y", part.newID());
92 assertEquals("Z", part.newID());
96 public void testnewIDUppercase2Chars() {
98 part = new AlphabeticIDGeneratorPart("A", "Z", "AA");
99 assertEquals("AA", part.newID());
100 assertEquals("AB", part.newID());
101 assertEquals("AC", part.newID());
103 part = new AlphabeticIDGeneratorPart("A", "Z", "ZX");
104 assertEquals("ZX", part.newID());
105 assertEquals("ZY", part.newID());
106 assertEquals("ZZ", part.newID());
110 public void testnewIDUppercase2CharsRolloverFirst() {
112 part = new AlphabeticIDGeneratorPart("A", "Z", "AY");
113 assertEquals("AY", part.newID());
114 assertEquals("AZ", part.newID());
115 assertEquals("BA", part.newID());
116 assertEquals("BB", part.newID());
120 public void testInitialLowercase() {
122 part = new AlphabeticIDGeneratorPart("aaa");
123 assertEquals("aaa", part.getInitialID());
127 public void testInitialUppercase() {
129 part = new AlphabeticIDGeneratorPart("A", "Z", "AZ");
130 assertEquals("AZ", part.getInitialID());
134 public void testCurrentLowercase() {
136 part = new AlphabeticIDGeneratorPart("aaa");
137 assertEquals("aaa", part.getCurrentID());
138 assertEquals("aaa", part.newID());
139 assertEquals("aab", part.newID());
140 assertEquals("aac", part.newID());
141 assertEquals("aac", part.getCurrentID());
142 assertEquals("aad", part.newID());
146 public void testCurrentUppercase() {
148 part = new AlphabeticIDGeneratorPart("A", "Z", "A");
149 assertEquals("A", part.getCurrentID());
150 assertEquals("A", part.newID());
151 assertEquals("B", part.newID());
152 assertEquals("C", part.newID());
153 assertEquals("C", part.getCurrentID());
154 assertEquals("D", part.newID());
158 public void testOverflowLowercase() {
160 part = new AlphabeticIDGeneratorPart("zx");
161 assertEquals("zx", part.newID());
162 assertEquals("zy", part.newID());
163 assertEquals("zz", part.newID());
164 assertEquals("aaa", part.newID());
168 public void testOverflowUppercase() {
170 part = new AlphabeticIDGeneratorPart("A", "Z", "X");
171 assertEquals("X", part.newID());
172 assertEquals("Y", part.newID());
173 assertEquals("Z", part.newID());
174 assertEquals("AA", part.newID());
178 public void testNonAlphabeticInitialValue() {
180 part = new AlphabeticIDGeneratorPart("&*432");
181 fail("Should have thrown IllegalArgumentException here");
182 } catch (IllegalArgumentException expected) {
183 // This Exception should be thrown, and thus the test should pass.
187 public void testNullInitialValue() {
189 part = new AlphabeticIDGeneratorPart(null);
190 fail("Should have thrown IllegalArgumentException here");
191 } catch (IllegalArgumentException expected) {
192 // This Exception should be thrown, and thus the test should pass.
196 public void testEmptyStringInitialValue() {
198 part = new AlphabeticIDGeneratorPart("");
199 fail("Should have thrown IllegalArgumentException here");
200 } catch (IllegalArgumentException expected) {
201 // This Exception should be thrown, and thus the test should pass.
205 public void testAllSpaceCharsInitialValue() {
207 part = new AlphabeticIDGeneratorPart(" ");
208 fail("Should have thrown IllegalArgumentException here");
209 } catch (IllegalArgumentException expected) {
210 // This Exception should be thrown, and thus the test should pass.
214 public void testIsValidIDDefaultSeries() {
216 part = new AlphabeticIDGeneratorPart();
218 assertTrue(part.isValidID("a"));
219 assertTrue(part.isValidID("z"));
221 assertFalse(part.isValidID("A"));
222 assertFalse(part.isValidID("123"));
226 public void testIsValidIDConstrainedLowerCaseSeries() {
228 part = new AlphabeticIDGeneratorPart("a", "f", "a");
230 assertTrue(part.isValidID("a"));
231 assertTrue(part.isValidID("b"));
232 assertTrue(part.isValidID("f"));
234 assertFalse(part.isValidID("g"));
235 assertFalse(part.isValidID("z"));
236 assertFalse(part.isValidID("A"));
237 assertFalse(part.isValidID("123"));
241 public void testIsValidIDConstrainedUppercaseSeries() {
243 part = new AlphabeticIDGeneratorPart("A", "F", "A");
245 assertTrue(part.isValidID("A"));
246 assertTrue(part.isValidID("B"));
247 assertTrue(part.isValidID("F"));
249 assertFalse(part.isValidID("G"));
250 assertFalse(part.isValidID("Z"));
251 assertFalse(part.isValidID("a"));
252 assertFalse(part.isValidID("123"));
256 // @TODO: Add more tests of boundary conditions, exceptions ...