void test_oddBitCalcMQR(void) { /* test issue #25 (odd bits calculation bug) */ /* test pattern contributed by vlad417 */ TestString tests[] = { {"46194", 1, QR_ECLEVEL_L, QR_MODE_8, 1}, {"WBA5Y47YPQQ", 3, QR_ECLEVEL_L, QR_MODE_8, 1} }; QRcode *qrcode; QRdata *qrdata; int i; testStart("Odd bits calculation bug checking (MQR)."); for(i=0; i<_countof(tests); i++) { qrcode = QRcode_encodeStringMQR(tests[i].str, tests[i].version, tests[i].level, tests[i].hint, tests[i].casesensitive); assert_nonnull(qrcode, "Failed to encode: %s\n", tests[i].str); if(qrcode == NULL) continue; qrdata = QRcode_decodeMQR(qrcode); assert_nonnull(qrdata, "Failed to decode.\n"); assert_zero(strcmp((char *)qrdata->data, tests[i].str), "Decoded data (%s) mismatched (%s)\n", (char *)qrdata->data, tests[i].str); if(qrdata != NULL) QRdata_free(qrdata); QRcode_free(qrcode); } testFinish(); }
void test_mqrencode(void) { char *str = "MICROQR"; char pattern[] = { "#######_#_#_#_#" "#_____#_#__####" "#_###_#_#_####_" "#_###_#_#__##_#" "#_###_#___#__##" "#_____#____#_#_" "#######__##_#_#" "_________#__#__" "#___#__####_#_#" "_#######_#_##_#" "##___#_#____#__" "_##_#_####____#" "#__###___#__##_" "_###_#_###_#_#_" "##____####_###_" }; QRcode qrcode; QRdata *qrdata; unsigned char *frame; int i; testStart("Encoding test (MQR)."); qrcode.width = 15; qrcode.version = 3; frame = MQRspec_newFrame(qrcode.version); for(i=0; i<225; i++) { frame[i] ^= (pattern[i] == '#')?1:0; } qrcode.data = frame; qrdata = QRcode_decodeMQR(&qrcode); assert_equal(qrdata->version, 3, "Format info decoder returns wrong version number: %d (%d expected)\n", qrdata->version, 3); assert_equal(qrdata->level, 1, "Format info decoder returns wrong level: %d (%d expected)\n", qrdata->level, 1); assert_zero(strcmp((char *)qrdata->data, str), "Decoded data (%s) mismatched (%s)\n", (char *)qrdata->data, str); QRdata_free(qrdata); free(frame); testFinish(); }
void test_decodeShortMQR(void) { char str[]="55"; QRcode *qrcode; QRdata *qrdata; int i; testStart("Test code words (MQR)."); for(i=0; i<8; i++) { qrcode = QRcode_encodeStringMQR(str, MQRformat[i].version, MQRformat[i].level, QR_MODE_8, 1); qrdata = QRcode_decodeMQR(qrcode); assert_nonnull(qrdata, "Failed to decode.\n"); assert_zero(strcmp((char *)qrdata->data, str), "Decoded data (%s) mismatched (%s)\n", (char *)qrdata->data, str); if(qrdata != NULL) QRdata_free(qrdata); if(qrcode != NULL) QRcode_free(qrcode); } testFinish(); }