void test_encodeNumericPadded2(void) { QRinput *stream; char num[8] = "0123456"; char *correct; char *correctHead = "000100000001110000001100010101100101100000000000"; BitStream *bstream; int flag, i; testStart("Encoding numeric stream. (7 digits)(padded)"); stream = QRinput_new(); QRinput_append(stream, QR_MODE_NUM, 7, (unsigned char *)num); bstream = QRinput_getBitStream(stream); correct = (char *)malloc(19 * 8 + 1); correct[0] = '\0'; strcat(correct, correctHead); for(i=0; i<13; i++) { strcat(correct, (i&1)?"00010001":"11101100"); } flag = cmpBin(correct, bstream); testEnd(flag); free(correct); QRinput_free(stream); BitStream_free(bstream); }
void test_appendBytes(void) { BitStream *bstream; unsigned char data[8]; char correct[] = "10001010111111111111111100010010001101000101011001111000"; testStart("Append Bytes"); bstream = BitStream_new(); data[0] = 0x8a; BitStream_appendBytes(bstream, 1, data); assert_zero(ncmpBin(correct, bstream, 8), "Internal data is incorrect."); data[0] = 0xff; data[1] = 0xff; BitStream_appendBytes(bstream, 2, data); assert_zero(ncmpBin(correct, bstream, 24), "Internal data is incorrect.\n"); data[0] = 0x12; data[1] = 0x34; data[2] = 0x56; data[3] = 0x78; BitStream_appendBytes(bstream, 4, data); assert_zero(cmpBin(correct, bstream), "Internal data is incorrect.\n"); testFinish(); BitStream_free(bstream); }
int encodeAndCheckBStream(int mqr, int version, QRecLevel level, QRencodeMode mode, char *data, char *correct) { QRinput *input; BitStream *bstream; int ret; if(mqr) { input = QRinput_newMQR(version, level); } else { input = QRinput_new2(version, level); } QRinput_append(input, mode, strlen(data), (unsigned char *)data); bstream = BitStream_new(); QRinput_getBitStream(input, bstream); ret = cmpBin(correct, bstream); if(ret) { printf("result : "); printBstream(bstream); printf("correct: %s\n", correct); } QRinput_free(input); BitStream_free(bstream); return ret; }
void test_append(void) { BitStream *bs1, *bs2; char c1[] = "00"; char c2[] = "0011"; char c3[] = "01111111111111111"; char c4[] = "001101111111111111111"; char c5[] = "0011011111111111111111111111111111"; int ret; testStart("Append two BitStreams"); bs1 = BitStream_new(); bs2 = BitStream_new(); ret = BitStream_appendNum(bs1, 1, 0); ret = BitStream_appendNum(bs2, 1, 0); ret = BitStream_append(bs1, bs2); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c1, bs1), "Internal data is incorrect."); ret = BitStream_appendNum(bs1, 2, 3); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c2, bs1), "Internal data is incorrect."); ret = BitStream_appendNum(bs2, 16, 65535); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c3, bs2), "Internal data is incorrect."); ret = BitStream_append(bs1, bs2); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c4, bs1), "Internal data is incorrect."); ret = BitStream_appendNum(bs1, 13, 16383); assert_zero(ret, "Failed to append."); assert_zero(cmpBin(c5, bs1), "Internal data is incorrect."); testFinish(); BitStream_free(bs1); BitStream_free(bs2); }
void test_bytes(void) { BitStream *bstream; unsigned char data[1] = {0x3a}; char correct[] = "00111010"; testStart("New from bytes"); bstream = BitStream_new(); BitStream_appendBytes(bstream, 1, data); testEnd(cmpBin(correct, bstream)); BitStream_free(bstream); }
void test_num(void) { BitStream *bstream; unsigned int data = 0x13579bdf; char correct[] = "0010011010101111001101111011111"; testStart("New from num"); bstream = BitStream_new(); BitStream_appendNum(bstream, 31, data); testEnd(cmpBin(correct, bstream)); BitStream_free(bstream); }
void test_newWithBits(void) { BitStream *bstream; unsigned char data[4] = {0, 1, 0, 1}; testStart("New with bits"); bstream = BitStream_newWithBits(4, data); assert_equal(bstream->length, 4, "Internal bit length is incorrect.\n"); assert_equal(bstream->datasize, 4, "Internal buffer size is incorrect.\n"); assert_zero(cmpBin("0101", bstream), "Internal data is incorrect.\n"); testFinish(); }
void test_encodeNumeric(void) { QRinput *stream; char num[9] = "01234567"; char correct[] = "00010000001000000000110001010110011000011"; BitStream *bstream; testStart("Encoding numeric stream. (8 digits)"); stream = QRinput_new(); QRinput_append(stream, QR_MODE_NUM, 8, (unsigned char *)num); bstream = QRinput_mergeBitStream(stream); testEnd(cmpBin(correct, bstream)); QRinput_free(stream); BitStream_free(bstream); }
void test_encodeAn(void) { QRinput *stream; char str[] = "AC-42"; char correct[] = "00100000001010011100111011100111001000010"; BitStream *bstream; testStart("Encoding alphabet-numeric stream."); stream = QRinput_new(); QRinput_append(stream, QR_MODE_AN, 5, (unsigned char *)str); bstream = QRinput_mergeBitStream(stream); testEnd(cmpBin(correct, bstream)); QRinput_free(stream); BitStream_free(bstream); }
void test_encodeKanji(void) { QRinput *stream; unsigned char str[4]= {0x93, 0x5f,0xe4, 0xaa}; unsigned char *buf; char correct[] = "10000000001001101100111111101010101010"; BitStream *bstream; testStart("Encoding kanji stream."); buf = (unsigned char *)malloc(4); memcpy(buf, str, 4); stream = QRinput_new(); QRinput_append(stream, QR_MODE_KANJI, 4, buf); bstream = QRinput_mergeBitStream(stream); testEnd(cmpBin(correct, bstream)); QRinput_free(stream); BitStream_free(bstream); free(buf); }
void test_insertStructuredAppendHeader(void) { QRinput *stream; char correct[] = "0011000011111010010101000000000101000001"; BitStream *bstream; int ret; testStart("Insert a structured-append header"); stream = QRinput_new(); QRinput_append(stream, QR_MODE_8, 1, (unsigned char *)"A"); ret = QRinput_insertStructuredAppendHeader(stream, 16, 1, 0xa5); assert_zero(ret, "QRinput_insertStructuredAppendHeader() returns nonzero.\n"); bstream = QRinput_mergeBitStream(stream); assert_nonnull(bstream->data, "Bstream->data is null."); assert_zero(cmpBin(correct, bstream), "bitstream is wrong."); testFinish(); QRinput_free(stream); BitStream_free(bstream); }
void test_appendNum(void) { BitStream *bstream; char correct[] = "10001010 11111111 11111111 00010010001101000101011001111000"; testStart("Append Num"); bstream = BitStream_new(); BitStream_appendNum(bstream, 8, 0x0000008a); assert_zero(ncmpBin(correct, bstream, 8), "Internal data is incorrect.\n"); BitStream_appendNum(bstream, 16, 0x0000ffff); assert_zero(ncmpBin(correct, bstream, 24), "Internal data is incorrect.\n"); BitStream_appendNum(bstream, 32, 0x12345678); assert_zero(cmpBin(correct, bstream), "Internal data is incorrect.\n"); testFinish(); BitStream_free(bstream); }
int mergeAndCheckBStream(int mqr, QRencodeMode mode, char *data, char *correct) { QRinput *input; BitStream *bstream; int ret; if(mqr) { input = QRinput_newMQR(1, QR_ECLEVEL_L); } else { input = QRinput_new(); } QRinput_append(input, mode, strlen(data), (unsigned char *)data); bstream = BitStream_new(); QRinput_mergeBitStream(input, bstream); ret = cmpBin(correct, bstream); QRinput_free(input); BitStream_free(bstream); return ret; }