Edit

kc3-lang/libqrencode/tests/test_estimatebit.c

Branch :

  • Show log

    Commit

  • Author : Kentaro Fukuchi
    Date : 2020-08-28 18:38:00
    Hash : f8ceb0d2
    Message : All test programs are now TAP-ready.

  • tests/test_estimatebit.c
  • #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "common.h"
    #include "../qrinput.h"
    
    static QRinput *gstream;
    
    static void test_numbit(void)
    {
    	QRinput *stream;
    	char num[9]="01234567";
    	int bits;
    
    	testStart("Estimation of Numeric stream (8 digits)");
    	stream = QRinput_new();
    	QRinput_append(stream, QR_MODE_NUM, 8, (unsigned char *)num);
    	bits = QRinput_estimateBitStreamSize(stream, 0);
    	testEndExp(bits == 41);
    
    	QRinput_append(gstream, QR_MODE_NUM, 8, (unsigned char *)num);
    	QRinput_free(stream);
    }
    
    static void test_numbit2(void)
    {
    	QRinput *stream;
    	char num[17]="0123456789012345";
    	int bits;
    
    	testStart("Estimation of Numeric stream (16 digits)");
    	stream = QRinput_new();
    	QRinput_append(stream, QR_MODE_NUM, 16, (unsigned char *)num);
    	bits = QRinput_estimateBitStreamSize(stream, 0);
    	testEndExp(bits == 68);
    
    	QRinput_append(gstream, QR_MODE_NUM, 16, (unsigned char *)num);
    	QRinput_free(stream);
    }
    
    static void test_numbit3(void)
    {
    	QRinput *stream;
    	char *num;
    	int bits;
    
    	testStart("Estimation of Numeric stream (400 digits)");
    	stream = QRinput_new();
    	num = (char *)malloc(401);
    	memset(num, '1', 400);
    	num[400] = '\0';
    	QRinput_append(stream, QR_MODE_NUM, 400, (unsigned char *)num);
    	bits = QRinput_estimateBitStreamSize(stream, 0);
    	/* 4 + 10 + 133*10 + 4 = 1348 */
    	testEndExp(bits == 1348);
    
    	QRinput_append(gstream, QR_MODE_NUM, 400, (unsigned char *)num);
    	QRinput_free(stream);
    	free(num);
    }
    
    static void test_an(void)
    {
    	QRinput *stream;
    	char str[6]="AC-42";
    	int bits;
    
    	testStart("Estimation of Alphabet-Numeric stream (5 chars)");
    	stream = QRinput_new();
    	QRinput_append(stream, QR_MODE_AN, 5, (unsigned char *)str);
    	bits = QRinput_estimateBitStreamSize(stream, 0);
    	testEndExp(bits == 41);
    
    	QRinput_append(gstream, QR_MODE_AN, 5, (unsigned char *)str);
    	QRinput_free(stream);
    }
    
    static void test_8(void)
    {
    	QRinput *stream;
    	char str[9]="12345678";
    	int bits;
    
    	testStart("Estimation of 8 bit data stream (8 bytes)");
    	stream = QRinput_new();
    	QRinput_append(stream, QR_MODE_8, 8, (unsigned char *)str);
    	bits = QRinput_estimateBitStreamSize(stream, 0);
    	testEndExp(bits == 76);
    
    	QRinput_append(gstream, QR_MODE_8, 8, (unsigned char *)str);
    	QRinput_free(stream);
    }
    
    static void test_structure(void)
    {
    	QRinput *stream;
    	int bits;
    
    	testStart("Estimation of a structure-append header");
    	stream = QRinput_new();
    	QRinput_insertStructuredAppendHeader(stream, 10, 1, 0);
    	bits = QRinput_estimateBitStreamSize(stream, 1);
    	testEndExp(bits == 20);
    
    	QRinput_insertStructuredAppendHeader(gstream, 10, 1, 0);
    	QRinput_free(stream);
    }
    
    static void test_kanji(void)
    {
    	int res;
    
    	QRinput *stream;
    	unsigned char str[4]= {0x93, 0x5f,0xe4, 0xaa};
    	int bits;
    
    	testStart("Estimation of Kanji stream (2 chars)");
    	stream = QRinput_new();
    	res = QRinput_append(stream, QR_MODE_KANJI, 4, (unsigned char *)str);
    	if(res < 0) {
    		printf("Failed to add.\n");
    		testEnd(1);
    	} else {
    		bits = QRinput_estimateBitStreamSize(stream, 0);
    		testEndExp(bits == 38);
    		QRinput_append(gstream, QR_MODE_KANJI, 4, (unsigned char *)str);
    	}
    
    	QRinput_free(stream);
    }
    
    static void test_mix(void)
    {
    	int bits;
    
    	testStart("Estimation of Mixed stream");
    	bits = QRinput_estimateBitStreamSize(gstream, 0);
    	testEndExp(bits == (41 + 68 + 1348 + 41 + 76 + 38 + 20));
    	QRinput_free(gstream);
    }
    
    int main()
    {
    	gstream = QRinput_new();
    
    	int tests = 8;
    	testInit(tests);
    	test_numbit();
    	test_numbit2();
    	test_numbit3();
    	test_an();
    	test_8();
    	test_kanji();
    	test_structure();
    	test_mix();
    	testReport(tests);
    
    	return 0;
    }