diff options
author | Bruno Haible <bruno@clisp.org> | 2023-03-29 00:25:50 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2023-03-29 00:25:50 +0200 |
commit | b1ddf91bbbf58d1fc35dd2922353a3f8a7a098df (patch) | |
tree | 4f021c3722dd9e1c59d060c57b218141d89a4965 | |
parent | 40168fbbadc0bde07de8c27612f88640e4cf74e8 (diff) | |
download | gnulib-b1ddf91bbbf58d1fc35dd2922353a3f8a7a098df.tar.gz |
xstring-desc: Add tests.
* tests/test-xstring-desc.c: New file.
* modules/xstring-desc-tests: New file.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | modules/xstring-desc-tests | 12 | ||||
-rw-r--r-- | tests/test-xstring-desc.c | 84 |
3 files changed, 100 insertions, 0 deletions
@@ -1,5 +1,9 @@ 2023-03-28 Bruno Haible <bruno@clisp.org> + 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 <https://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2023. */ + +#include <config.h> + +#include "xstring-desc.h" + +#include <stdlib.h> +#include <string.h> + +#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; +} |