aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFrank Lichtenheld2023-05-17 10:44:22 +0200
committerGert Doering2023-05-17 18:50:54 +0200
commiteecf9e9d70955018225e47d96d57da72511c48a0 (patch)
treeb1d2869d2a64ab55d427ac34f289249caaa0823a /tests
parentd623aa6c29545a7f00daaa73d87818a9c5b1e942 (diff)
downloadopenvpn-eecf9e9d70955018225e47d96d57da72511c48a0.zip
openvpn-eecf9e9d70955018225e47d96d57da72511c48a0.tar.gz
test_buffer: add tests for buf_catrunc and its caller format_hex_ex
Just some very basic tests. v2: - fix off-by-one Change-Id: I73fc893136387d1da05f4aea98cb37b02d6c3230 Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com> Acked-by: Gert Doering <gert@greenie.muc.de> Message-Id: <20230517084422.70547-2-frank@lichtenheld.com> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg26680.html Signed-off-by: Gert Doering <gert@greenie.muc.de>
Diffstat (limited to 'tests')
-rw-r--r--tests/unit_tests/openvpn/test_buffer.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/unit_tests/openvpn/test_buffer.c b/tests/unit_tests/openvpn/test_buffer.c
index 9e3b1d2..bff5056 100644
--- a/tests/unit_tests/openvpn/test_buffer.c
+++ b/tests/unit_tests/openvpn/test_buffer.c
@@ -56,6 +56,66 @@ test_buffer_strprefix(void **state)
assert_int_equal(BLEN(buf), strlen(str)); \
assert_memory_equal(BPTR(buf), str, BLEN(buf));
+static void
+test_buffer_printf_catrunc(void **state)
+{
+ struct gc_arena gc = gc_new();
+ struct buffer buf = alloc_buf_gc(16, &gc);
+
+ buf_printf(&buf, "%d", 123);
+ buf_printf(&buf, "%s", "some text, too long to fit");
+ assert_buf_equals_str(&buf, "123some text, t");
+
+ buf_catrunc(&buf, "...");
+ assert_buf_equals_str(&buf, "123some text...");
+
+ buf_catrunc(&buf, "some other text, much too long to fit");
+ assert_buf_equals_str(&buf, "123some text...");
+
+ buf_catrunc(&buf, "something else"); /* exactly right */
+ assert_buf_equals_str(&buf, "1something else");
+
+ buf_catrunc(&buf, "something other"); /* 1 byte too long */
+ assert_buf_equals_str(&buf, "1something else");
+
+ gc_free(&gc);
+}
+
+static void
+test_buffer_format_hex_ex(void **state)
+{
+ const int input_size = 10;
+ const uint8_t input[] = {
+ 0x01, 0x00, 0xff, 0x10, 0xff, 0x00, 0xf0, 0x0f, 0x09, 0x0a
+ };
+ char *output;
+ struct gc_arena gc = gc_new();
+
+ int maxoutput = 0;
+ unsigned int blocksize = 5;
+ char *separator = " ";
+ output = format_hex_ex(input, input_size, maxoutput, blocksize, separator, &gc);
+ assert_string_equal(output, "0100ff10ff 00f00f090a");
+
+ maxoutput = 14;
+ output = format_hex_ex(input, input_size, maxoutput, blocksize, separator, &gc);
+ assert_string_equal(output, "0100[more...]");
+
+ maxoutput = 11;
+ output = format_hex_ex(input, input_size, maxoutput, blocksize, separator, &gc);
+ assert_string_equal(output, "0[more...]");
+
+ maxoutput = 10;
+ output = format_hex_ex(input, input_size, maxoutput, blocksize, separator, &gc);
+ assert_string_equal(output, "0100ff10f");
+
+ maxoutput = 9;
+ output = format_hex_ex(input, input_size, maxoutput, blocksize, separator, &gc);
+ assert_string_equal(output, "0100ff10");
+
+ gc_free(&gc);
+}
+
struct test_buffer_list_aggregate_ctx {
struct buffer_list *empty;
struct buffer_list *one_two_three;
@@ -267,6 +327,8 @@ main(void)
{
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_buffer_strprefix),
+ cmocka_unit_test(test_buffer_printf_catrunc),
+ cmocka_unit_test(test_buffer_format_hex_ex),
cmocka_unit_test_setup_teardown(test_buffer_list_aggregate_separator_empty,
test_buffer_list_setup,
test_buffer_list_teardown),