⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_qrinput.c

📁 二维码QR的linux平台下的编码源代码
💻 C
字号:
#include <stdio.h>#include <string.h>#include "common.h"#include "../qrinput.h"#include "../qrencode_inner.h"#include "../split.h"void test_encodeKanji(void){	QRinput *stream;	unsigned char str[4]= {0x93, 0x5f,0xe4, 0xaa};	char correct[] = "10000000001001101100111111101010101010";	BitStream *bstream;	testStart("Encoding kanji stream.");	stream = QRinput_new();	QRinput_append(stream, QR_MODE_KANJI, 4, (unsigned char *)str);	bstream = QRinput_mergeBitStream(stream);	printf("%s\n", correct);	printf("%s\n", bstream->data);	testEnd(strcmp(correct, bstream->data));	QRinput_free(stream);	BitStream_free(bstream);}void test_encode8(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);	printf("%s\n", correct);	printf("%s\n", bstream->data);	testEnd(strcmp(correct, bstream->data));	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);	printf("%s\n", correct);	printf("%s\n", bstream->data);	testEnd(strcmp(correct, bstream->data));	QRinput_free(stream);	BitStream_free(bstream);}void test_encodeAn2(void){	QRinput *stream;	char str[] = "!,;$%";	int ret;	testStart("Encoding INVALID alphabet-numeric stream.");	stream = QRinput_new();	ret = QRinput_append(stream, QR_MODE_AN, 5, (unsigned char *)str);	testEnd(!ret);	QRinput_free(stream);}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);	printf("%s\n", correct);	printf("%s\n", bstream->data);	testEnd(strcmp(correct, bstream->data));	QRinput_free(stream);	BitStream_free(bstream);}void test_encodeNumericPadded(void){	QRinput *stream;	char num[9] = "01234567";	char correct[] = "000100000010000000001100010101100110000110000000";	BitStream *bstream;	int flag;	testStart("Encoding numeric stream. (8 digits)(padded)");	stream = QRinput_new();	QRinput_append(stream, QR_MODE_NUM, 8, (unsigned char *)num);	bstream = QRinput_getBitStream(stream);	flag = strncmp(correct, bstream->data, 48);	if(strlen(bstream->data) != 19 * 8)		flag |= 0x80;	testEnd(flag);	QRinput_free(stream);	BitStream_free(bstream);}void test_encodeNumericPadded2(void){	QRinput *stream;	char num[8] = "0123456";	char correct[] = "000100000001110000001100010101100101100000000000";	BitStream *bstream;	int flag;	testStart("Encoding numeric stream. (7 digits)(padded)");	stream = QRinput_new();	QRinput_append(stream, QR_MODE_NUM, 7, (unsigned char *)num);	bstream = QRinput_getBitStream(stream);	flag = strncmp(correct, bstream->data, 48);	if(strlen(bstream->data) != 19 * 8)		flag |= 0x80;	testEnd(flag);	QRinput_free(stream);	BitStream_free(bstream);}void test_encodeNumeric2(void){	QRinput *stream;	char num[] = "0123456789012345";	char correct[] = "00010000010000000000110001010110011010100110111000010100111010100101";	BitStream *bstream;	testStart("Encoding numeric stream. (16 digits)");	stream = QRinput_new();	QRinput_append(stream, QR_MODE_NUM, 16, (unsigned char *)num);	bstream = QRinput_mergeBitStream(stream);	printf("%s\n", correct);	printf("%s\n", bstream->data);	testEnd(strcmp(correct, bstream->data));	QRinput_free(stream);	BitStream_free(bstream);}void test_encodeNumeric3(void){	QRinput *stream;	char num[9] = "0123456";	char correct[] = "0001""0000000111""0000001100""0101011001""0110";	BitStream *bstream;	testStart("Encoding numeric stream. (7 digits)");	stream = QRinput_new();	QRinput_append(stream, QR_MODE_NUM, 7, (unsigned char *)num);	bstream = QRinput_mergeBitStream(stream);	printf("%s\n", correct);	printf("%s\n", bstream->data);	testEnd(strcmp(correct, bstream->data));	QRinput_free(stream);	BitStream_free(bstream);}void test_encodeTooLong(void){	QRinput *stream;	unsigned char *data;	BitStream *bstream;	data = (unsigned char *)malloc(7089);	memset(data, 'a', 7089);	testStart("Encoding long string. (7089 bytes)");	stream = QRinput_new();	QRinput_append(stream, QR_MODE_AN, 7089, data);	bstream = QRinput_mergeBitStream(stream);	testEndExp(bstream == NULL);	QRinput_free(stream);	if(bstream != NULL) {		BitStream_free(bstream);	}	free(data);}void test_encodeAnNum(void){	QRinput *input;	BitStream *bstream;	testStart("Bit length check of alpha-numeric stream. (11 + 12)");	input = QRinput_new();	QRinput_append(input, QR_MODE_AN, 11, (unsigned char *)"abcdefghijk");	QRinput_append(input, QR_MODE_NUM, 12, (unsigned char *)"123456789012");	bstream = QRinput_mergeBitStream(input);	testEndExp(strlen(bstream->data) == 128);	QRinput_free(input);	BitStream_free(bstream);	testStart("Bit length check of alphabet stream. (23)");	input = QRinput_new();	QRinput_append(input, QR_MODE_AN, 23, (unsigned char *)"abcdefghijk123456789012");	bstream = QRinput_mergeBitStream(input);	testEndExp(strlen(bstream->data) == 140);	QRinput_free(input);	BitStream_free(bstream);}int main(int argc, char **argv){	test_encodeNumeric();	test_encodeNumeric2();	test_encodeNumeric3();	test_encode8();	test_encodeTooLong();	test_encodeAn();	test_encodeAn2();	test_encodeKanji();	test_encodeNumericPadded();	test_encodeNumericPadded2();	test_encodeAnNum();	report();	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -