diff options
Diffstat (limited to 'genqrcode/tests/test_split_urls.c')
| -rw-r--r-- | genqrcode/tests/test_split_urls.c | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/genqrcode/tests/test_split_urls.c b/genqrcode/tests/test_split_urls.c new file mode 100644 index 0000000000..f1967ec0bd --- /dev/null +++ b/genqrcode/tests/test_split_urls.c @@ -0,0 +1,92 @@ +#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; +} |
