summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Staessens <[email protected]>2016-03-08 08:37:35 +0100
committerDimitri Staessens <[email protected]>2016-03-08 09:25:16 +0100
commitf94912a3ea1025c689a5336a1fdc807baa8fa36f (patch)
tree48e568772f688582f5bfd9fd664c511f0ed9981a
parentaf8db503f46049fabaa793905f35bf0a2867744b (diff)
downloadouroboros-f94912a3ea1025c689a5336a1fdc807baa8fa36f.tar.gz
ouroboros-f94912a3ea1025c689a5336a1fdc807baa8fa36f.zip
tests: added test for the du_buff structure
tests/du_buff.c: tests the du_buff_t structure by creating different size du_buff_t's and filling it with different size sdu's at different locations in the du_buff_t tests/CMakefile.txt: added du_buff test lib/du_buff.c: fixed unsafe #define adding brackets
-rw-r--r--src/lib/du_buff.c2
-rw-r--r--src/lib/tests/CMakeLists.txt1
-rw-r--r--src/lib/tests/du_buff.c57
3 files changed, 59 insertions, 1 deletions
diff --git a/src/lib/du_buff.c b/src/lib/du_buff.c
index d88d7ac4..bd1a092d 100644
--- a/src/lib/du_buff.c
+++ b/src/lib/du_buff.c
@@ -29,7 +29,7 @@
#define OUROBOROS_PREFIX "du_buff"
#ifndef DU_BUFF_BLOCKSIZE
-#define DU_BUFF_BLOCKSIZE 1 << 16
+#define DU_BUFF_BLOCKSIZE (1 << 16)
#endif
#include "ouroboros/logs.h"
diff --git a/src/lib/tests/CMakeLists.txt b/src/lib/tests/CMakeLists.txt
index 2b02768b..5725acc7 100644
--- a/src/lib/tests/CMakeLists.txt
+++ b/src/lib/tests/CMakeLists.txt
@@ -4,6 +4,7 @@ get_filename_component(src_folder "${tmp}" NAME)
create_test_sourcelist(${src_folder}_tests test_suite.c
# Add new tests here
linked_list.c
+ du_buff.c
)
add_executable(${src_folder}_test EXCLUDE_FROM_ALL ${${src_folder}_tests})
diff --git a/src/lib/tests/du_buff.c b/src/lib/tests/du_buff.c
new file mode 100644
index 00000000..e0ae2595
--- /dev/null
+++ b/src/lib/tests/du_buff.c
@@ -0,0 +1,57 @@
+/*
+ * Ouroboros - Copyright (C) 2016
+ *
+ * Test of the du_buff
+ *
+ * Dimitri Staessens <[email protected]>
+ *
+ * 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 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, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "../du_buff.c"
+
+#define TEST_BUFF_SIZE 16 * DU_BUFF_BLOCKSIZE
+#define MAX(a,b) a > b ? a : b
+
+int du_buff(int argc, char ** argv)
+{
+ int i, j, k;
+ int i_inc, j_inc, k_inc;
+
+ uint8_t bits[TEST_BUFF_SIZE];
+
+ for (i = 0; i < TEST_BUFF_SIZE; i++)
+ bits[i] = 170;
+
+ i_inc = MAX(1, DU_BUFF_BLOCKSIZE / 4);
+ j_inc = MAX(1, DU_BUFF_BLOCKSIZE / 8);
+ k_inc = MAX(1, DU_BUFF_BLOCKSIZE / 16);
+
+ for (i = DU_BUFF_BLOCKSIZE / 4; i <= TEST_BUFF_SIZE; i += i_inc) {
+ for (j = 0; j < i; j += j_inc) {
+ for (k = 0; k < i - j; k += k_inc) {
+ du_buff_t * dub = du_buff_create(i);
+ if (dub == NULL)
+ return -1;
+
+ if (du_buff_init(dub, k, bits, j) < 0)
+ return -1;
+
+ du_buff_destroy (dub);
+ }
+ }
+ }
+ return 0; /* tests succeeded */
+}