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 Code39Test extends TestCase { 70 71 public Code39Test(String name) { 72 super(name); 73 } 74 75 public void testChecksum() throws Exception { 76 assertEquals('L', Code39LogicImpl.calcChecksum("12345ABCDEZ/")); 77 assertEquals('L', Code39LogicImpl.calcChecksum("12345abcdez/")); 78 assertEquals('M', Code39LogicImpl.calcChecksum("494140")); 79 assertEquals('P', Code39LogicImpl.calcChecksum("415339")); 80 } 81 82 public void testIllegalArguments() throws Exception { 83 try { 84 Code39 impl = new Code39(); 85 impl.generateBarcode(null, null); 86 fail("Expected an NPE"); 87 } catch (NullPointerException npe) { 88 assertNotNull("Error message is empty", npe.getMessage()); 89 } 90 } 91 92 public void testLogic() throws Exception { 93 StringBuffer sb = new StringBuffer (); 94 Code39LogicImpl logic; 95 String expected; 96 97 try { 98 logic = new Code39LogicImpl(ChecksumMode.CP_AUTO); 99 logic.generateBarcodeLogic(new NullClassicBarcodeLogicHandler(), "123èöö2"); 100 fail("Expected an exception complaining about illegal characters"); 101 } catch (IllegalArgumentException iae) { 102 } 104 105 logic = new Code39LogicImpl(ChecksumMode.CP_AUTO); 106 logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "123ABC"); 107 expected = "<BC>" 108 + "<SBG:start-char:*>" 109 + "<SBG:msg-char:*>B1W2B1W1B2W1B2W1B1</SBG>" 110 + "</SBG>" 111 + "W-1" 112 + "<SBG:msg-char:1>B2W1B1W2B1W1B1W1B2</SBG>" 113 + "W-1" 114 + "<SBG:msg-char:2>B1W1B2W2B1W1B1W1B2</SBG>" 115 + "W-1" 116 + "<SBG:msg-char:3>B2W1B2W2B1W1B1W1B1</SBG>" 117 + "W-1" 118 + "<SBG:msg-char:A>B2W1B1W1B1W2B1W1B2</SBG>" 119 + "W-1" 120 + "<SBG:msg-char:B>B1W1B2W1B1W2B1W1B2</SBG>" 121 + "W-1" 122 + "<SBG:msg-char:C>B2W1B2W1B1W2B1W1B1</SBG>" 123 + "W-1" 124 + "<SBG:stop-char:*>" 125 + "<SBG:msg-char:*>B1W2B1W1B2W1B2W1B1</SBG>" 126 + "</SBG>" 127 + "</BC>"; 128 assertEquals(expected, sb.toString()); 131 132 133 sb.setLength(0); 134 logic = new Code39LogicImpl(ChecksumMode.CP_ADD); 135 logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "123"); 136 expected = "<BC>" 137 + "<SBG:start-char:*>" 138 + "<SBG:msg-char:*>B1W2B1W1B2W1B2W1B1</SBG>" 139 + "</SBG>" 140 + "W-1" 141 + "<SBG:msg-char:1>B2W1B1W2B1W1B1W1B2</SBG>" 142 + "W-1" 143 + "<SBG:msg-char:2>B1W1B2W2B1W1B1W1B2</SBG>" 144 + "W-1" 145 + "<SBG:msg-char:3>B2W1B2W2B1W1B1W1B1</SBG>" 146 + "W-1" 147 + "<SBG:msg-char:6>B1W1B2W2B2W1B1W1B1</SBG>" 148 + "W-1" 149 + "<SBG:stop-char:*>" 150 + "<SBG:msg-char:*>B1W2B1W1B2W1B2W1B1</SBG>" 151 + "</SBG>" 152 + "</BC>"; 153 assertEquals(expected, sb.toString()); 156 157 158 sb.setLength(0); 159 logic = new Code39LogicImpl(ChecksumMode.CP_CHECK); 160 logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "1236"); 161 expected = "<BC>" 162 + "<SBG:start-char:*>" 163 + "<SBG:msg-char:*>B1W2B1W1B2W1B2W1B1</SBG>" 164 + "</SBG>" 165 + "W-1" 166 + "<SBG:msg-char:1>B2W1B1W2B1W1B1W1B2</SBG>" 167 + "W-1" 168 + "<SBG:msg-char:2>B1W1B2W2B1W1B1W1B2</SBG>" 169 + "W-1" 170 + "<SBG:msg-char:3>B2W1B2W2B1W1B1W1B1</SBG>" 171 + "W-1" 172 + "<SBG:msg-char:6>B1W1B2W2B2W1B1W1B1</SBG>" 173 + "W-1" 174 + "<SBG:stop-char:*>" 175 + "<SBG:msg-char:*>B1W2B1W1B2W1B2W1B1</SBG>" 176 + "</SBG>" 177 + "</BC>"; 178 assertEquals(expected, sb.toString()); 181 182 183 sb.setLength(0); 184 logic = new Code39LogicImpl(ChecksumMode.CP_CHECK); 185 try { 186 logic.generateBarcodeLogic(new MockClassicBarcodeLogicHandler(sb), "123F"); 187 fail("Expected logic implementation to fail because wrong checksum is supplied"); 188 } catch (IllegalArgumentException iae) { 189 } 191 } 192 193 } | Popular Tags |