]> Savannah Git Hosting - gnulib.git/commitdiff
dynarray: Add tests.
authorBruno Haible <bruno@clisp.org>
Sat, 6 Mar 2021 23:41:44 +0000 (00:41 +0100)
committerBruno Haible <bruno@clisp.org>
Sat, 6 Mar 2021 23:41:44 +0000 (00:41 +0100)
* tests/test-dynarray.c: New file.
* modules/dynarray-tests: New file.

ChangeLog
modules/dynarray-tests [new file with mode: 0644]
tests/test-dynarray.c [new file with mode: 0644]

index 8a86d1c2aa3e85b528ca8a12667e6df70646103c..5a100d76f1795447cc5799f409548f3e077535e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2021-03-06  Bruno Haible  <bruno@clisp.org>
 
+       dynarray: Add tests.
+       * tests/test-dynarray.c: New file.
+       * modules/dynarray-tests: New file.
+
        dynarray: Make the module usable on its own.
        * lib/dynarray.h: Document the exported API. Comments taken from
        lib/malloc/dynarray-skeleton.c and lib/malloc/dynarray.h.
diff --git a/modules/dynarray-tests b/modules/dynarray-tests
new file mode 100644 (file)
index 0000000..2791b9c
--- /dev/null
@@ -0,0 +1,11 @@
+Files:
+tests/test-dynarray.c
+tests/macros.h
+
+Depends-on:
+
+configure.ac:
+
+Makefile.am:
+TESTS += test-dynarray
+check_PROGRAMS += test-dynarray
diff --git a/tests/test-dynarray.c b/tests/test-dynarray.c
new file mode 100644 (file)
index 0000000..4308148
--- /dev/null
@@ -0,0 +1,53 @@
+/* Test of type-safe arrays that grow dynamically.
+   Copyright (C) 2021 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 2, 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>, 2021.  */
+
+#include <config.h>
+
+#define DYNARRAY_STRUCT int_sequence
+#define DYNARRAY_ELEMENT int
+#define DYNARRAY_PREFIX intseq_
+#include "dynarray.h"
+
+#include "macros.h"
+
+#define N 100000
+
+static int
+value_at (int i)
+{
+  return (i % 13) + ((i * i) % 251);
+}
+
+int
+main ()
+{
+  struct int_sequence s;
+  int i;
+
+  intseq_init (&s);
+  for (i = 0; i < N; i++)
+    intseq_add (&s, value_at (i));
+  for (i = N - 1; i >= N / 2; i--)
+    {
+      ASSERT (* intseq_at (&s, i) == value_at (i));
+      intseq_remove_last (&s);
+    }
+  intseq_free (&s);
+
+  return 0;
+}