6 #include "../qrinput.h"
9 #include "../bitstream.h"
11 static int inputTest(QRinput_List *list, const char *fmt, ...)
25 size = va_arg(ap, int);
26 if(list->size != size) {
48 if(list->mode != mode) {
65 int inputSize(QRinput *input)
70 bstream = QRinput_mergeBitStream(input);
71 size = BitStream_size(bstream);
72 BitStream_free(bstream);
77 void test_split1(void)
82 testStart("Split test: null string");
83 input = QRinput_new2(0, QR_ECLEVEL_L);
84 Split_splitStringToQRinput("", input, QR_MODE_8, 0);
85 stream = QRinput_mergeBitStream(input);
86 testEndExp(BitStream_size(stream) == 0);
88 BitStream_free(stream);
91 void test_split2(void)
97 testStart("Split test: single typed strings (num)");
98 input = QRinput_new2(0, QR_ECLEVEL_L);
99 Split_splitStringToQRinput("0123", input, QR_MODE_8, 0);
101 if(inputTest(list, "n", 4)) {
108 testStart("Split test: single typed strings (num2)");
109 input = QRinput_new2(0, QR_ECLEVEL_L);
110 Split_splitStringToQRinput("12345678901234567890", input, QR_MODE_KANJI, 0);
112 if(inputTest(list, "n", 20)) {
119 void test_split3(void)
125 testStart("Split test: single typed strings (an)");
126 input = QRinput_new2(0, QR_ECLEVEL_L);
127 Split_splitStringToQRinput("ab:-E", input, QR_MODE_8, 0);
129 if(inputTest(list, "a", 5)) {
137 testStart("Split test: num + an");
138 input = QRinput_new2(0, QR_ECLEVEL_L);
139 Split_splitStringToQRinput("0123abcde", input, QR_MODE_KANJI, 0);
141 if(inputTest(list, "a", 9)) {
148 testStart("Split test: an + num + an");
149 input = QRinput_new2(0, QR_ECLEVEL_L);
150 Split_splitStringToQRinput("Ab345fg", input, QR_MODE_KANJI, 0);
152 if(inputTest(list, "a", 7)) {
159 void test_split4(void)
164 #define CHUNKA "ABCDEFGHIJK"
165 #define CHUNKB "123456"
166 #define CHUNKC "1234567"
168 testStart("Split test: an and num entries");
169 input = QRinput_new2(0, QR_ECLEVEL_L);
170 Split_splitStringToQRinput(CHUNKA/**/CHUNKB, input, QR_MODE_8, 0);
172 QRinput_append(i1, QR_MODE_AN, 17, (unsigned char *)CHUNKA/**/CHUNKB);
174 QRinput_append(i2, QR_MODE_AN, 11, (unsigned char *)CHUNKA);
175 QRinput_append(i2, QR_MODE_NUM, 6, (unsigned char *)CHUNKB);
177 size = inputSize(input);
180 testEndExp(size == ((s1 < s2)?s1:s2));
185 testStart("Split test: num and an entries");
186 input = QRinput_new2(0, QR_ECLEVEL_L);
187 Split_splitStringToQRinput(CHUNKB/**/CHUNKA, input, QR_MODE_8, 0);
189 QRinput_append(i1, QR_MODE_AN, 17, (unsigned char *)CHUNKB/**/CHUNKA);
191 QRinput_append(i2, QR_MODE_NUM, 6, (unsigned char *)CHUNKB);
192 QRinput_append(i2, QR_MODE_AN, 11, (unsigned char *)CHUNKA);
194 size = inputSize(input);
197 testEndExp(size == ((s1 < s2)?s1:s2));
202 testStart("Split test: num and an entries (should be splitted)");
203 input = QRinput_new2(0, QR_ECLEVEL_L);
204 Split_splitStringToQRinput(CHUNKC/**/CHUNKA, input, QR_MODE_8, 0);
206 QRinput_append(i1, QR_MODE_AN, 18, (unsigned char *)CHUNKC/**/CHUNKA);
208 QRinput_append(i2, QR_MODE_NUM, 7, (unsigned char *)CHUNKC);
209 QRinput_append(i2, QR_MODE_AN, 11, (unsigned char *)CHUNKA);
211 size = inputSize(input);
214 testEndExp(size == ((s1 < s2)?s1:s2));
220 void test_split5(void)
226 testStart("Split test: bit, an, bit, num");
227 input = QRinput_new2(0, QR_ECLEVEL_L);
228 Split_splitStringToQRinput("\x82\xd9""abcdeabcdea\x82\xb0""123456", input, QR_MODE_8, 0);
230 if(inputTest(list, "8a8n", 2, 11, 2, 6)) {
237 void test_split6(void)
243 testStart("Split test: kanji, an, kanji, num");
244 input = QRinput_new2(0, QR_ECLEVEL_L);
245 Split_splitStringToQRinput("\x82\xd9""abcdeabcdea\x82\xb0""123456", input, QR_MODE_KANJI, 0);
247 if(inputTest(list, "kakn", 2, 11, 2, 6)) {
255 void test_split7(void)
261 testStart("Split test: an and num as bits");
262 input = QRinput_new2(0, QR_ECLEVEL_L);
263 Split_splitStringToQRinput("\x82\xd9""abcde\x82\xb0""12345", input, QR_MODE_8, 0);
265 if(inputTest(list, "8n", 9, 5)) {
272 void test_split8(void)
278 testStart("Split test: terminated with a half of kanji code");
279 input = QRinput_new2(0, QR_ECLEVEL_L);
280 Split_splitStringToQRinput("\x82\xd9""abcdefgh\x82", input, QR_MODE_KANJI, 0);
282 if(inputTest(list, "ka8", 2, 8, 1)) {
289 void test_split3c(void)
295 testStart("Split test: single typed strings (an, case-sensitive)");
296 input = QRinput_new2(0, QR_ECLEVEL_L);
297 Split_splitStringToQRinput("ab:-E", input, QR_MODE_8, 1);
299 if(inputTest(list, "8", 5)) {
306 testStart("Split test: num + an");
307 input = QRinput_new2(0, QR_ECLEVEL_L);
308 Split_splitStringToQRinput("0123abcde", input, QR_MODE_KANJI, 1);
310 if(inputTest(list, "n8", 4, 5)) {
317 testStart("Split test: an + num + an");
318 input = QRinput_new2(0, QR_ECLEVEL_L);
319 Split_splitStringToQRinput("Ab345fg", input, QR_MODE_KANJI, 1);
321 if(inputTest(list, "8", 7)) {
329 void test_toupper(void)
335 testStart("Split test: check dupAndToUpper (lower->upper)");
336 input = QRinput_new2(0, QR_ECLEVEL_L);
337 Split_splitStringToQRinput("abcde", input, QR_MODE_8, 0);
339 if(inputTest(list, "a", 5)) {
342 if(strncmp((char *)list->data, "ABCDE", list->size)) {
349 testStart("Split test: check dupAndToUpper (kanji)");
350 input = QRinput_new2(0, QR_ECLEVEL_L);
351 Split_splitStringToQRinput("\x83n\x83q\x83t\x83w\x83z", input, QR_MODE_KANJI, 0);
353 if(inputTest(list, "k", 10)) {
357 if(strncmp((char *)list->data, "\x83n\x83q\x83t\x83w\x83z", list->size)) {
364 testStart("Split test: check dupAndToUpper (8bit)");
365 input = QRinput_new2(0, QR_ECLEVEL_L);
366 Split_splitStringToQRinput("\x83n\x83q\x83t\x83w\x83z", input, QR_MODE_8, 0);
368 if(inputTest(list, "8", 10)) {
372 if(strncmp((char *)list->data, "\x83N\x83Q\x83T\x83W\x83Z", list->size)) {
379 void test_splitNum8(void)
385 testStart("Split test: num and 8bit to 8bit");
386 input = QRinput_new2(0, QR_ECLEVEL_L);
387 Split_splitStringToQRinput("1abcdefg", input, QR_MODE_8, 1);
389 if(inputTest(list, "8", 8)) {
391 printQRinputInfo(input);
397 int main(int argc, char **argv)