6f1a1a274e
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
93 lines
1.9 KiB
C
93 lines
1.9 KiB
C
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
#include "common.h"
|
|
#include "../qrinput.h"
|
|
#include "../qrencode_inner.h"
|
|
#include "../split.h"
|
|
#include "decoder.h"
|
|
|
|
#include "URI_testset.inc"
|
|
|
|
#if 0
|
|
static void encodeURLandPrint(char *url) {
|
|
QRinput *input;
|
|
BitStream *bstream;
|
|
|
|
input = QRinput_new2(0, QR_ECLEVEL_L);
|
|
Split_splitStringToQRinput(url, input, QR_MODE_8, 1);
|
|
bstream = BitStream_new();
|
|
QRinput_mergeBitStream(input, bstream);
|
|
|
|
printf("{%zu,\"%s\"},\n", BitStream_size(bstream), url);
|
|
|
|
QRinput_free(input);
|
|
BitStream_free(bstream);
|
|
}
|
|
|
|
static void print_currentBitLength() {
|
|
struct TestSet *ts = testset;
|
|
|
|
puts("struct TestSet {\n\tint expected_length;\n\tchar *url;\n};");
|
|
puts("\nstruct TestSet testset[] = {");
|
|
|
|
while(ts->url != NULL) {
|
|
encodeURLandPrint(ts->url);
|
|
ts++;
|
|
}
|
|
|
|
puts("{0,NULL}\n};");
|
|
}
|
|
#endif
|
|
|
|
static int encodeURLandCompare(char *url, size_t expected_length) {
|
|
QRinput *input;
|
|
BitStream *bstream;
|
|
int ret = 0;
|
|
|
|
input = QRinput_new2(0, QR_ECLEVEL_L);
|
|
Split_splitStringToQRinput(url, input, QR_MODE_8, 1);
|
|
bstream = BitStream_new();
|
|
QRinput_mergeBitStream(input, bstream);
|
|
|
|
size_t length = BitStream_size(bstream);
|
|
if(length > expected_length) {
|
|
printf("The length of the encode stream is longer than expected: %zu over %zu\n", length, expected_length);
|
|
printQRinput(input);
|
|
|
|
ret = 1;
|
|
} else if(length < expected_length) {
|
|
printf("The length of the encode stream is shorter than expected: %zu under %zu\n", length, expected_length);
|
|
printQRinput(input);
|
|
|
|
ret = 1;
|
|
}
|
|
|
|
QRinput_free(input);
|
|
BitStream_free(bstream);
|
|
|
|
return ret;
|
|
}
|
|
|
|
static void test_bitstream_length() {
|
|
struct TestSet *ts = testset;
|
|
int err = 0;
|
|
|
|
testStart("Split_URL test: compare bitstream length");
|
|
while(ts->url != NULL) {
|
|
err += encodeURLandCompare(ts->url, ts->expected_length);
|
|
ts++;
|
|
}
|
|
testEnd(err);
|
|
}
|
|
|
|
int main()
|
|
{
|
|
int tests = 1;
|
|
testInit(tests);
|
|
test_bitstream_length();
|
|
testReport(tests);
|
|
|
|
return 0;
|
|
}
|