diff options
| author | Anders Betts <anders.betts@gmail.com> | 2026-09-22 09:04:27 +0200 |
|---|---|---|
| committer | Anders Betts <anders.betts@gmail.com> | 2026-09-22 09:04:27 +0200 |
| commit | 227d0422da0062410c85529bc999d7e509d9de78 (patch) | |
| tree | 23102d1fb049b610ec154e7c136e3d92d941bd6d /tests/invoice_check.c | |
| parent | 8ceb1340a9030bb1030be61003dc65b444732b9e (diff) | |
| download | bokf-227d0422da0062410c85529bc999d7e509d9de78.tar.gz bokf-227d0422da0062410c85529bc999d7e509d9de78.zip | |
documents: org name in the invoice and payslip headers, document_header_colorv0.1.63
Diffstat (limited to 'tests/invoice_check.c')
| -rw-r--r-- | tests/invoice_check.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/invoice_check.c b/tests/invoice_check.c index 01b5ca3..e61a41d 100644 --- a/tests/invoice_check.c +++ b/tests/invoice_check.c @@ -129,6 +129,19 @@ static int contains(const unsigned char *data, size_t len, const char *needle) return 0; } +static int count_of(const unsigned char *data, size_t len, const char *needle) +{ + size_t n = strlen(needle); + int count = 0; + + if (!n) + return 0; + for (size_t i = 0; i + n <= len; i++) + if (memcmp(data + i, needle, n) == 0) + count++; + return count; +} + static void test_render(const char *path) { struct invoice_doc d; @@ -147,6 +160,8 @@ static void test_render(const char *path) if (data) { check(memcmp(data, "%PDF-1.4", 8) == 0, "render header"); check(contains(data, len, "Testleverant"), "render seller text"); + check(count_of(data, len, "Testleverant") == 2, + "render seller name in header and footer"); check(contains(data, len, "Testkund AB"), "render customer text"); check(contains(data, len, "Summa att betala SEK"), "render summary"); check(contains(data, len, "Test Person"), "render our ref"); @@ -166,6 +181,45 @@ static void test_render(const char *path) free(data); { + unsigned char *colored = NULL; + size_t colored_len = 0; + + d.header_color = "#ff0000"; + check(invoice_render_pdf(&d, &colored, &colored_len) == 0, + "render custom colour returns 0"); + if (colored) + check(contains(colored, colored_len, "1 0 0 rg"), + "render custom header colour"); + free(colored); + + colored = NULL; + d.header_color = "not-a-colour"; + check(invoice_render_pdf(&d, &colored, &colored_len) == 0, + "render invalid colour returns 0"); + if (colored) + check(!contains(colored, colored_len, "1 0 0 rg"), + "render invalid colour falls back"); + free(colored); + d.header_color = NULL; + } + { + static char long_name[240]; + unsigned char *long_pdf = NULL; + size_t long_len = 0; + + memset(long_name, 'A', sizeof long_name - 1); + long_name[sizeof long_name - 1] = '\0'; + d.seller.name = long_name; + check(invoice_render_pdf(&d, &long_pdf, &long_len) == 0, + "render long name returns 0"); + if (long_pdf) + check(contains(long_pdf, long_len, "..."), + "render long name is truncated"); + free(long_pdf); + d.seller.name = "Testleverantör AB"; + } + + { unsigned char *bad = NULL; size_t n = 0; |
