KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > krysalis > barcode > impl > UPCETest


1 /*
2  * $Id$
3  * ============================================================================
4  * The Krysalis Patchy Software License, Version 1.1_01
5  * Copyright (c) 2002-2003 Nicola Ken Barozzi. All rights reserved.
6  *
7  * This Licence is compatible with the BSD licence as described and
8  * approved by http://www.opensource.org/, and is based on the
9  * Apache Software Licence Version 1.1.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  *
15  * 1. Redistributions of source code must retain the above copyright
16  * notice, this list of conditions and the following disclaimer.
17  *
18  * 2. Redistributions in binary form must reproduce the above copyright
19  * notice, this list of conditions and the following disclaimer in
20  * the documentation and/or other materials provided with the
21  * distribution.
22  *
23  * 3. The end-user documentation included with the redistribution,
24  * if any, must include the following acknowledgment:
25  * "This product includes software developed for project
26  * Krysalis (http://www.krysalis.org/)."
27  * Alternately, this acknowledgment may appear in the software itself,
28  * if and wherever such third-party acknowledgments normally appear.
29  *
30  * 4. The names "Krysalis" and "Nicola Ken Barozzi" and
31  * "Krysalis Barcode" must not be used to endorse or promote products
32  * derived from this software without prior written permission. For
33  * written permission, please contact nicolaken@krysalis.org.
34  *
35  * 5. Products derived from this software may not be called "Krysalis",
36  * "Krysalis Barcode", nor may "Krysalis" appear in their name,
37  * without prior written permission of Nicola Ken Barozzi.
38  *
39  * 6. This software may contain voluntary contributions made by many
40  * individuals, who decided to donate the code to this project in
41  * respect of this licence, and was originally created by
42  * Jeremias Maerki <jeremias@maerki.org>.
43  *
44  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
45  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
46  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
47  * DISCLAIMED. IN NO EVENT SHALL THE KRYSALIS PROJECT OR
48  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
49  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
50  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
51  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
52  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
53  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
54  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
55  * SUCH DAMAGE.
56  * ====================================================================
57  */

58 package org.krysalis.barcode.impl;
59
60 import org.krysalis.barcode.ChecksumMode;
61
62 import junit.framework.TestCase;
63
64 /**
65  * Test class for the UPC-E implementation.
66  *
67  * @author Jeremias Maerki
68  */

69 public class UPCETest extends TestCase {
70
71     public UPCETest(String JavaDoc name) {
72         super(name);
73     }
74
75     public void testIllegalArguments() throws Exception JavaDoc {
76         try {
77             UPCE impl = new UPCE();
78             impl.generateBarcode(null, null);
79             fail("Expected an NPE");
80         } catch (NullPointerException JavaDoc npe) {
81             assertNotNull("Error message is empty", npe.getMessage());
82         }
83
84         //Test invalid characters in message
85
try {
86             UPCELogicImpl logic = new UPCELogicImpl(ChecksumMode.CP_AUTO);
87             logic.generateBarcodeLogic(new NullClassicBarcodeLogicHandler(), "1232");
88             fail("Expected an exception complaining about illegal characters");
89         } catch (IllegalArgumentException JavaDoc iae) {
90             //must fail
91
}
92         
93         //Test less than 12 characters
94
try {
95             UPCELogicImpl logic = new UPCELogicImpl(ChecksumMode.CP_AUTO);
96             logic.generateBarcodeLogic(new NullClassicBarcodeLogicHandler(), "123");
97             fail("Expected an exception complaining about invalid message length");
98         } catch (IllegalArgumentException JavaDoc iae) {
99             //must fail
100
}
101         
102         //Test more than 12 characters
103
try {
104             UPCELogicImpl logic = new UPCELogicImpl(ChecksumMode.CP_AUTO);
105             logic.generateBarcodeLogic(new NullClassicBarcodeLogicHandler(),
106                     "123456789012344567890");
107             fail("Expected an exception complaining about invalid message length");
108         } catch (IllegalArgumentException JavaDoc iae) {
109             //must fail
110
}
111     }
112
113     private static final String JavaDoc[][] COMPACTION_TESTS = {
114         {"01278907", "012000007897"},
115         {"01278916", "012100007896"},
116         {"01278925", "012200007895"},
117         {"01238935", "012300000895"},
118         {"01248934", "012400000894"},
119         {"01258933", "012500000893"},
120         {"01268932", "012600000892"},
121         {"01278931", "012700000891"},
122         {"01288930", "012800000890"},
123         {"01298939", "012900000899"},
124         {"01291944", "012910000094"},
125         {"01291155", "012911000055"},
126         {"01291162", "012911000062"},
127         {"01291179", "012911000079"},
128         {"01291186", "012911000086"},
129         {"00102546", "001020000056"},
130         {"01234133", "012300000413"}};
131
132     public void testMessageCompaction() throws Exception JavaDoc {
133         for (int i = 0; i < COMPACTION_TESTS.length; i++) {
134             assertEquals(
135                 COMPACTION_TESTS[i][1] + " must be compacted to "
136                     + COMPACTION_TESTS[i][0],
137                 COMPACTION_TESTS[i][0],
138                 UPCELogicImpl.compactMessage(COMPACTION_TESTS[i][1]));
139             String JavaDoc nocheck = COMPACTION_TESTS[i][1].substring(0, 11);
140             assertEquals(
141                 nocheck + " must be compacted to "
142                     + COMPACTION_TESTS[i][0],
143                 COMPACTION_TESTS[i][0],
144                 UPCELogicImpl.compactMessage(nocheck));
145         }
146         final String JavaDoc noUPCE = "01234567890";
147         assertNull(UPCELogicImpl.compactMessage(noUPCE));
148         assertNull(UPCELogicImpl.compactMessage(noUPCE + UPCEANLogicImpl.calcChecksum(noUPCE)));
149         try {
150             UPCELogicImpl.compactMessage("ajsgf");
151             fail("Invalid messages must fail");
152         } catch (IllegalArgumentException JavaDoc iae) {
153             //must fail
154
}
155         try {
156             UPCELogicImpl.compactMessage("0000000000000000000000000");
157             fail("Invalid messages must fail");
158         } catch (IllegalArgumentException JavaDoc iae) {
159             //must fail
160
}
161     }
162     
163     public void testMessageExpansion() throws Exception JavaDoc {
164         for (int i = 0; i < COMPACTION_TESTS.length; i++) {
165             assertEquals(
166                 COMPACTION_TESTS[i][0] + " must be expanded to "
167                     + COMPACTION_TESTS[i][1],
168                 COMPACTION_TESTS[i][1],
169                 UPCELogicImpl.expandMessage(COMPACTION_TESTS[i][0]));
170             String JavaDoc nocheck = COMPACTION_TESTS[i][0].substring(0, 7);
171             assertEquals(
172                 nocheck + " must be expanded to "
173                     + COMPACTION_TESTS[i][1],
174                 COMPACTION_TESTS[i][1],
175                 UPCELogicImpl.expandMessage(nocheck));
176         }
177     }
178
179     public void testLogic() throws Exception JavaDoc {
180         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
181         UPCELogicImpl logic;
182         String JavaDoc expected;
183         
184         logic = new UPCELogicImpl(ChecksumMode.CP_AUTO);
185         logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "0425261");
186         expected = "<BC>"
187             + "<SBG:upc-ean-guard:null>B1W1B1</SBG>"
188             + "<SBG:upc-ean-lead:0>"
189             + "</SBG>"
190             + "<SBG:upc-ean-group:425261>"
191                 + "<SBG:msg-char:4>W2B3W1B1</SBG>"
192                 + "<SBG:msg-char:2>W2B1W2B2</SBG>"
193                 + "<SBG:msg-char:5>W1B3W2B1</SBG>"
194                 + "<SBG:msg-char:2>W2B2W1B2</SBG>"
195                 + "<SBG:msg-char:6>W1B1W1B4</SBG>"
196                 + "<SBG:msg-char:1>W2B2W2B1</SBG>"
197             + "</SBG>"
198             + "<SBG:upc-ean-check:4>"
199             + "</SBG>"
200             + "<SBG:upc-ean-guard:null>W1B1W1B1W1B1</SBG>"
201             + "</BC>";
202         //System.out.println(expected);
203
//System.out.println(sb.toString());
204
assertEquals(expected, sb.toString());
205
206         //The same but with check mode
207
sb.setLength(0);
208         logic = new UPCELogicImpl(ChecksumMode.CP_CHECK);
209         logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "04252614");
210         //System.out.println(expected);
211
//System.out.println(sb.toString());
212
assertEquals(expected, sb.toString());
213         
214         //The same but with UPC-A message
215
sb.setLength(0);
216         logic = new UPCELogicImpl(ChecksumMode.CP_AUTO);
217         logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "042100005264");
218         //System.out.println(expected);
219
//System.out.println(sb.toString());
220
assertEquals(expected, sb.toString());
221         
222         //The same but with UPC-A message without checksum
223
sb.setLength(0);
224         logic = new UPCELogicImpl(ChecksumMode.CP_AUTO);
225         logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "04210000526");
226         //System.out.println(expected);
227
//System.out.println(sb.toString());
228
assertEquals(expected, sb.toString());
229         
230     }
231
232 }
Popular Tags