1 58 package org.krysalis.barcode.impl; 59 60 import org.krysalis.barcode.ChecksumMode; 61 62 import junit.framework.TestCase; 63 64 69 public class UPCETest extends TestCase { 70 71 public UPCETest(String name) { 72 super(name); 73 } 74 75 public void testIllegalArguments() throws Exception { 76 try { 77 UPCE impl = new UPCE(); 78 impl.generateBarcode(null, null); 79 fail("Expected an NPE"); 80 } catch (NullPointerException npe) { 81 assertNotNull("Error message is empty", npe.getMessage()); 82 } 83 84 try { 86 UPCELogicImpl logic = new UPCELogicImpl(ChecksumMode.CP_AUTO); 87 logic.generateBarcodeLogic(new NullClassicBarcodeLogicHandler(), "123èöö2"); 88 fail("Expected an exception complaining about illegal characters"); 89 } catch (IllegalArgumentException iae) { 90 } 92 93 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 iae) { 99 } 101 102 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 iae) { 109 } 111 } 112 113 private static final String [][] 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 { 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 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 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 iae) { 153 } 155 try { 156 UPCELogicImpl.compactMessage("0000000000000000000000000"); 157 fail("Invalid messages must fail"); 158 } catch (IllegalArgumentException iae) { 159 } 161 } 162 163 public void testMessageExpansion() throws Exception { 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 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 { 180 StringBuffer sb = new StringBuffer (); 181 UPCELogicImpl logic; 182 String 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 assertEquals(expected, sb.toString()); 205 206 sb.setLength(0); 208 logic = new UPCELogicImpl(ChecksumMode.CP_CHECK); 209 logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "04252614"); 210 assertEquals(expected, sb.toString()); 213 214 sb.setLength(0); 216 logic = new UPCELogicImpl(ChecksumMode.CP_AUTO); 217 logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "042100005264"); 218 assertEquals(expected, sb.toString()); 221 222 sb.setLength(0); 224 logic = new UPCELogicImpl(ChecksumMode.CP_AUTO); 225 logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "04210000526"); 226 assertEquals(expected, sb.toString()); 229 230 } 231 232 } | Popular Tags |