>From b1ddf91bbbf58d1fc35dd2922353a3f8a7a098df Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 29 Mar 2023 00:25:50 +0200 Subject: [PATCH 4/7] xstring-desc: Add tests. * tests/test-xstring-desc.c: New file. * modules/xstring-desc-tests: New file. --- ChangeLog | 4 ++ modules/xstring-desc-tests | 12 ++++++ tests/test-xstring-desc.c | 84 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 modules/xstring-desc-tests create mode 100644 tests/test-xstring-desc.c diff --git a/ChangeLog b/ChangeLog index d0e75ebec7..31e5d5d7d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2023-03-28 Bruno Haible + xstring-desc: Add tests. + * tests/test-xstring-desc.c: New file. + * modules/xstring-desc-tests: New file. + xstring-desc: New module. * lib/xstring-desc.h: New file. * lib/xstring-desc.c: New file. diff --git a/modules/xstring-desc-tests b/modules/xstring-desc-tests new file mode 100644 index 0000000000..7113d54d96 --- /dev/null +++ b/modules/xstring-desc-tests @@ -0,0 +1,12 @@ +Files: +tests/test-xstring-desc.c +tests/macros.h + +Depends-on: + +configure.ac: + +Makefile.am: +TESTS += test-xstring-desc +check_PROGRAMS += test-xstring-desc +test_xstring_desc_LDADD = $(LDADD) @LIBINTL@ diff --git a/tests/test-xstring-desc.c b/tests/test-xstring-desc.c new file mode 100644 index 0000000000..127bb93440 --- /dev/null +++ b/tests/test-xstring-desc.c @@ -0,0 +1,84 @@ +/* Test of string descriptors. + Copyright (C) 2023 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2023. */ + +#include + +#include "xstring-desc.h" + +#include +#include + +#include "macros.h" + +int +main (void) +{ + string_desc_t s0 = string_desc_new_empty (); + string_desc_t s1 = string_desc_from_c ("Hello world!"); + string_desc_t s2 = string_desc_new_addr (21, "The\0quick\0brown\0\0fox"); + + /* Test xstring_desc_new. */ + string_desc_t s4 = xstring_desc_new (5); + string_desc_set_char_at (s4, 0, 'H'); + string_desc_set_char_at (s4, 4, 'o'); + string_desc_set_char_at (s4, 1, 'e'); + string_desc_fill (s4, 2, 4, 'l'); + ASSERT (string_desc_length (s4) == 5); + ASSERT (string_desc_startswith (s1, s4)); + + /* Test xstring_desc_new_filled. */ + string_desc_t s5 = xstring_desc_new_filled (5, 'l'); + string_desc_set_char_at (s5, 0, 'H'); + string_desc_set_char_at (s5, 4, 'o'); + string_desc_set_char_at (s5, 1, 'e'); + ASSERT (string_desc_length (s5) == 5); + ASSERT (string_desc_startswith (s1, s5)); + + /* Test xstring_desc_copy. */ + { + string_desc_t s6 = xstring_desc_copy (s0); + ASSERT (string_desc_is_empty (s6)); + string_desc_free (s6); + } + { + string_desc_t s6 = xstring_desc_copy (s2); + ASSERT (string_desc_equals (s6, s2)); + string_desc_free (s6); + } + + /* Test xstring_desc_concat. */ + { + string_desc_t s8 = + xstring_desc_concat (3, string_desc_new_addr (10, "The\0quick"), + string_desc_new_addr (7, "brown\0"), + string_desc_new_addr (4, "fox"), + string_desc_new_addr (7, "unused")); + ASSERT (string_desc_equals (s8, s2)); + string_desc_free (s8); + } + + /* Test xstring_desc_c. */ + { + char *ptr = xstring_desc_c (s2); + ASSERT (ptr != NULL); + ASSERT (memcmp (ptr, "The\0quick\0brown\0\0fox\0", 22) == 0); + free (ptr); + } + + return 0; +} -- 2.34.1