This wraps up a good enough for now set of unit tests for f_compare.
build_sources_program test-compare-.c test-compare-dynamic.c test-compare-dynamic_string.c
build_sources_program test-compare-dynamic_partial.c test-compare-dynamic_partial_dynamic.c test-compare-dynamic_partial_string.c
build_sources_program test-compare-dynamic_partial_trim.c test-compare-dynamic_partial_trim_dynamic.c test-compare-dynamic_partial_trim_string.c
+build_sources_program test-compare-dynamic_partial_except.c test-compare-dynamic_partial_except_dynamic.c test-compare-dynamic_partial_except_string.c
+build_sources_program test-compare-dynamic_partial_except_trim.c test-compare-dynamic_partial_except_trim_dynamic.c test-compare-dynamic_partial_except_trim_string.c
+build_sources_program test-compare-except.c test-compare-dynamic_except.c test-compare-dynamic_except_string.c
build_sources_program test-compare-trim.c test-compare-dynamic_trim.c test-compare-dynamic_trim_string.c
+build_sources_program test-compare-except_trim.c test-compare-dynamic_except_trim.c test-compare-dynamic_except_trim_string.c
build_sources_program test-compare.c
-build_sources_program test-compare-except.c
build_script no
build_shared yes
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_except.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_except__works(void **state) {
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ };
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+ };
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+
+ for (; i < 64; ++i) {
+
+ const f_status_t status = f_compare_dynamic_except(string_1s[i], string_2s[i], excepts_1, excepts_2);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (i = 0; i < 64; ++i) {
+
+ const f_status_t status = f_compare_dynamic_except(string_2s[i], string_1s[i], excepts_2, excepts_1);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_except_h
+#define _TEST__F_compare_dynamic_except_h
+
+// f_compare_dynamic_except() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_except()
+ */
+extern void test__f_compare_dynamic_except__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_except_h
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_except_string.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_except_string__works(void **state) {
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ };
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+ };
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+
+ for (; i < 64; ++i) {
+
+ const f_status_t status = f_compare_dynamic_except_string(string_1s[i].string, string_2s[i], string_1s[i].used, excepts_1, excepts_2);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (i = 0; i < 64; ++i) {
+
+ const f_status_t status = f_compare_dynamic_except_string(string_2s[i].string, string_1s[i], string_2s[i].used, excepts_2, excepts_1);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_except_string_h
+#define _TEST__F_compare_dynamic_except_string_h
+
+// f_compare_dynamic_except_string() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_except_string()
+ */
+extern void test__f_compare_dynamic_except_string__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_except_string_h
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_except_trim.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_except_trim__works(void **state) {
+
+ // A necessary work-around to to have "\01" with the "\0" being separate from the "1".
+ f_char_t null_before_one_1[] = {
+ 'S', 'K', 'I', 'P', '\0', '1'
+ };
+
+ f_char_t null_before_one_2[] = {
+ 'S', 'K', 'I', 'P', '\0', '1', ' ', '\0', '\t'
+ };
+
+ f_char_t null_before_one_3[] = {
+ 'S', 'K', 'I', 'P', '\0', ' ', '\0', '1'
+ };
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP ", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\t", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\0", 0, 5),
+ macro_f_string_static_t_initialize("SKIP ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \t ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0\t", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0\0\t", 0, 7),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP 1", 0, 6),
+ macro_f_string_static_t_initialize("SKIP\t1", 0, 6),
+ macro_f_string_static_t_initialize(null_before_one_1, 0, 6),
+ macro_f_string_static_t_initialize("SKIP 1 ", 0, 9),
+ macro_f_string_static_t_initialize("SKIP 1\t ", 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_2, 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_3, 0, 8),
+ macro_f_string_static_t_initialize("SKIP1\0\0\t", 0, 8),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIP one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tone", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP one ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP one\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0one \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0one", 0, 10),
+ macro_f_string_static_t_initialize("SKIPone\0\0\t", 0, 10),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIP One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tOne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP One ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP One\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0One \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0One", 0, 10),
+ macro_f_string_static_t_initialize("SKIPOne\0\0\t", 0, 10),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP \0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\t\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \0ne ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP \0ne\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0\0ne \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0\0ne", 0, 10),
+ macro_f_string_static_t_initialize("SKIP\0ne\0\0\t", 0, 10),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIP o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\to\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP o\0ne ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP o\0ne\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0o\0ne", 0, 11),
+ macro_f_string_static_t_initialize("SKIPo\0ne\0\0\t", 0, 11),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIP one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\tone\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP one\0 ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP one\0\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0one\0 \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0one\0", 0, 11),
+ macro_f_string_static_t_initialize("SKIPone\0\0\0\t", 0, 11),
+ };
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+ };
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+
+ for (; i < 64; ++i) {
+
+ const f_status_t status = f_compare_dynamic_except_trim(string_1s[i], string_2s[i], excepts_1, excepts_2);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (i = 0; i < 64; ++i) {
+
+ const f_status_t status = f_compare_dynamic_except_trim(string_2s[i], string_1s[i], excepts_2, excepts_1);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_except_trim_h
+#define _TEST__F_compare_dynamic_except_trim_h
+
+// f_compare_dynamic_except_trim() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_except_trim()
+ */
+extern void test__f_compare_dynamic_except_trim__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_except_trim_h
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_except_trim_string.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_except_trim_string__works(void **state) {
+
+ // A necessary work-around to to have "\01" with the "\0" being separate from the "1".
+ f_char_t null_before_one_1[] = {
+ 'S', 'K', 'I', 'P', '\0', '1'
+ };
+
+ f_char_t null_before_one_2[] = {
+ 'S', 'K', 'I', 'P', '\0', '1', ' ', '\0', '\t'
+ };
+
+ f_char_t null_before_one_3[] = {
+ 'S', 'K', 'I', 'P', '\0', ' ', '\0', '1'
+ };
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP ", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\t", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\0", 0, 5),
+ macro_f_string_static_t_initialize("SKIP ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \t ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0\t", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0\0\t", 0, 7),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP 1", 0, 6),
+ macro_f_string_static_t_initialize("SKIP\t1", 0, 6),
+ macro_f_string_static_t_initialize(null_before_one_1, 0, 6),
+ macro_f_string_static_t_initialize("SKIP 1 ", 0, 9),
+ macro_f_string_static_t_initialize("SKIP 1\t ", 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_2, 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_3, 0, 8),
+ macro_f_string_static_t_initialize("SKIP1\0\0\t", 0, 8),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIP one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tone", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP one ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP one\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0one \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0one", 0, 10),
+ macro_f_string_static_t_initialize("SKIPone\0\0\t", 0, 10),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIP One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tOne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP One ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP One\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0One \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0One", 0, 10),
+ macro_f_string_static_t_initialize("SKIPOne\0\0\t", 0, 10),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP \0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\t\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \0ne ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP \0ne\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0\0ne \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0\0ne", 0, 10),
+ macro_f_string_static_t_initialize("SKIP\0ne\0\0\t", 0, 10),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIP o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\to\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP o\0ne ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP o\0ne\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0o\0ne", 0, 11),
+ macro_f_string_static_t_initialize("SKIPo\0ne\0\0\t", 0, 11),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIP one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\tone\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP one\0 ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP one\0\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0one\0 \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0one\0", 0, 11),
+ macro_f_string_static_t_initialize("SKIPone\0\0\0\t", 0, 11),
+ };
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+ };
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+
+ for (; i < 64; ++i) {
+
+ const f_status_t status = f_compare_dynamic_except_trim_string(string_1s[i].string, string_2s[i], string_1s[i].used, excepts_1, excepts_2);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (i = 0; i < 64; ++i) {
+
+ const f_status_t status = f_compare_dynamic_except_trim_string(string_2s[i].string, string_1s[i], string_2s[i].used, excepts_2, excepts_1);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_except_trim_string_h
+#define _TEST__F_compare_dynamic_except_trim_string_h
+
+// f_compare_dynamic_except_trim_string() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_except_trim_string()
+ */
+extern void test__f_compare_dynamic_except_trim_string__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_except_trim_string_h
macro_f_string_static_t_initialize("aaone\0", 0, 6),
};
- const f_string_range_t range_0 = macro_f_string_range_t_initialize(1, 0);
f_string_range_t range_1 = macro_f_string_range_t_initialize(3, 9);
f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
for (; i < 8; ++i) {
if (i % 8 == 0) {
- status = f_compare_dynamic_partial(string_1s[i], string_2s[i], range_0, range_0);
+ status = f_compare_dynamic_partial(string_1s[i], string_2s[i], f_string_range_empty_c, f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
- status = f_compare_dynamic_partial(string_1s[i], string_2s[i], range_0, range_2);
+ status = f_compare_dynamic_partial(string_1s[i], string_2s[i], f_string_range_empty_c, range_2);
}
assert_int_equal(status, expects[i]);
range_1.stop = string_1s[i].used - 4;
if (i % 8 == 0) {
- status = f_compare_dynamic_partial(string_1s[i], string_2s[i], range_1, range_0);
+ status = f_compare_dynamic_partial(string_1s[i], string_2s[i], range_1, f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
macro_f_string_static_t_initialize("aaone\0", 0, 6),
};
- const f_string_range_t range_0 = macro_f_string_range_t_initialize(1, 0);
f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
const f_status_t expects[] = {
for (; i < 8; ++i) {
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_dynamic(string_1s[i], string_2s[i], range_0);
+ status = f_compare_dynamic_partial_dynamic(string_1s[i], string_2s[i], f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
for (; i < 64; ++i) {
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_dynamic(string_1s[i], string_2s[i], range_0);
+ status = f_compare_dynamic_partial_dynamic(string_1s[i], string_2s[i], f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_partial_except.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_partial_except__works(void **state) {
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ };
+
+ f_string_range_t range_1 = macro_f_string_range_t_initialize(3, 9);
+ f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+ };
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+ f_status_t status = F_none;
+
+ // First eight are against empty strings for first argument.
+ for (; i < 8; ++i) {
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except(string_1s[i], string_2s[i], range_1, f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except(string_1s[i], string_2s[i], range_1, range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (; i < 64; ++i) {
+
+ range_1.stop = string_1s[i].used - 1;
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except(string_1s[i], string_2s[i], range_1, f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except(string_1s[i], string_2s[i], range_1, range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_partial_except_h
+#define _TEST__F_compare_dynamic_partial_except_h
+
+// f_compare_dynamic_partial_except() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_partial_except()
+ */
+extern void test__f_compare_dynamic_partial_except__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_partial_except_h
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_partial_except_dynamic.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_partial_except_dynamic__works(void **state) {
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ };
+
+ f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+ };
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+ f_status_t status = F_none;
+
+ // First eight are against empty strings for first argument.
+ for (; i < 8; ++i) {
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_dynamic(string_1s[i], string_2s[i], f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_dynamic(string_1s[i], string_2s[i], range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (; i < 64; ++i) {
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_dynamic(string_1s[i], string_2s[i], f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_dynamic(string_1s[i], string_2s[i], range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_partial_except_dynamic_h
+#define _TEST__F_compare_dynamic_partial_except_dynamic_h
+
+// f_compare_dynamic_partial_except_dynamic() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_partial_except_dynamic()
+ */
+extern void test__f_compare_dynamic_partial_except_dynamic__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_partial_except_dynamic_h
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_partial_except_string.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_partial_except_string__works(void **state) {
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+ macro_f_string_static_t_initialize("SKIP", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+ macro_f_string_static_t_initialize("SKIP1", 0, 5),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+ macro_f_string_static_t_initialize("SKIPone", 0, 7),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+ macro_f_string_static_t_initialize("SKIPOne", 0, 7),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0ne", 0, 7),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIPo\0ne", 0, 8),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ macro_f_string_static_t_initialize("SKIPone\0", 0, 8),
+ };
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+ };
+
+ f_string_range_t range_1 = macro_f_string_range_t_initialize(3, 9);
+ f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+ f_status_t status = F_none;
+
+ // First eight are against empty strings for first argument.
+ for (; i < 8; ++i) {
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_string(string_1s[i].string, string_2s[i], 0, f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_string(string_1s[i].string, string_2s[i], 0, range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (; i < 64; ++i) {
+
+ range_1.stop = string_1s[i].used - 1;
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_string(string_1s[i].string, string_2s[i], range_1.stop + 1, f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_string(string_1s[i].string, string_2s[i], range_1.stop + 1, range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_partial_except_string_h
+#define _TEST__F_compare_dynamic_partial_except_string_h
+
+// f_compare_dynamic_partial_except_string() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_partial_except_string()
+ */
+extern void test__f_compare_dynamic_partial_except_string__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_partial_except_string_h
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_partial_except_trim.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_partial_except_trim__works(void **state) {
+
+ // A necessary work-around to to have "\01" with the "\0" being separate from the "1".
+ f_char_t null_before_one_1[] = {
+ 'S', 'K', 'I', 'P', '\0', '1'
+ };
+
+ f_char_t null_before_one_2[] = {
+ 'S', 'K', 'I', 'P', '\0', '1', ' ', '\0', '\t'
+ };
+
+ f_char_t null_before_one_3[] = {
+ 'S', 'K', 'I', 'P', '\0', ' ', '\0', '1'
+ };
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP ", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\t", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\0", 0, 5),
+ macro_f_string_static_t_initialize("SKIP ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \t ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0\t", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0\0\t", 0, 7),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP 1", 0, 6),
+ macro_f_string_static_t_initialize("SKIP\t1", 0, 6),
+ macro_f_string_static_t_initialize(null_before_one_1, 0, 6),
+ macro_f_string_static_t_initialize("SKIP 1 ", 0, 9),
+ macro_f_string_static_t_initialize("SKIP 1\t ", 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_2, 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_3, 0, 8),
+ macro_f_string_static_t_initialize("SKIP1\0\0\t", 0, 8),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIP one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tone", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP one ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP one\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0one \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0one", 0, 10),
+ macro_f_string_static_t_initialize("SKIPone\0\0\t", 0, 10),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIP One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tOne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP One ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP One\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0One \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0One", 0, 10),
+ macro_f_string_static_t_initialize("SKIPOne\0\0\t", 0, 10),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP \0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\t\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \0ne ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP \0ne\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0\0ne \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0\0ne", 0, 10),
+ macro_f_string_static_t_initialize("SKIP\0ne\0\0\t", 0, 10),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIP o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\to\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP o\0ne ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP o\0ne\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0o\0ne", 0, 11),
+ macro_f_string_static_t_initialize("SKIPo\0ne\0\0\t", 0, 11),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIP one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\tone\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP one\0 ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP one\0\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0one\0 \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0one\0", 0, 11),
+ macro_f_string_static_t_initialize("SKIPone\0\0\0\t", 0, 11),
+ };
+
+ f_string_range_t range_1 = macro_f_string_range_t_initialize(3, 9);
+ f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+ };
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+ f_status_t status = F_none;
+
+ // First eight are against empty strings for first argument.
+ for (; i < 8; ++i) {
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_trim(string_1s[i], string_2s[i], range_1, f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_trim(string_1s[i], string_2s[i], range_1, range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (; i < 64; ++i) {
+
+ range_1.stop = string_1s[i].used - 1;
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_trim(string_1s[i], string_2s[i], range_1, f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_trim(string_1s[i], string_2s[i], range_1, range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_partial_except_trim_h
+#define _TEST__F_compare_dynamic_partial_except_trim_h
+
+// f_compare_dynamic_partial_except_trim() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_partial_except_trim()
+ */
+extern void test__f_compare_dynamic_partial_except_trim__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_partial_except_trim_h
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_partial_except_trim_dynamic.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_partial_except_trim_dynamic__works(void **state) {
+
+ // A necessary work-around to to have "\01" with the "\0" being separate from the "1".
+ f_char_t null_before_one_1[] = {
+ 'S', 'K', 'I', 'P', '\0', '1'
+ };
+
+ f_char_t null_before_one_2[] = {
+ 'S', 'K', 'I', 'P', '\0', '1', ' ', '\0', '\t'
+ };
+
+ f_char_t null_before_one_3[] = {
+ 'S', 'K', 'I', 'P', '\0', ' ', '\0', '1'
+ };
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP ", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\t", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\0", 0, 5),
+ macro_f_string_static_t_initialize("SKIP ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \t ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0\t", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0\0\t", 0, 7),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP 1", 0, 6),
+ macro_f_string_static_t_initialize("SKIP\t1", 0, 6),
+ macro_f_string_static_t_initialize(null_before_one_1, 0, 6),
+ macro_f_string_static_t_initialize("SKIP 1 ", 0, 9),
+ macro_f_string_static_t_initialize("SKIP 1\t ", 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_2, 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_3, 0, 8),
+ macro_f_string_static_t_initialize("SKIP1\0\0\t", 0, 8),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIP one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tone", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP one ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP one\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0one \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0one", 0, 10),
+ macro_f_string_static_t_initialize("SKIPone\0\0\t", 0, 10),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIP One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tOne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP One ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP One\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0One \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0One", 0, 10),
+ macro_f_string_static_t_initialize("SKIPOne\0\0\t", 0, 10),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP \0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\t\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \0ne ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP \0ne\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0\0ne \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0\0ne", 0, 10),
+ macro_f_string_static_t_initialize("SKIP\0ne\0\0\t", 0, 10),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIP o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\to\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP o\0ne ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP o\0ne\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0o\0ne", 0, 11),
+ macro_f_string_static_t_initialize("SKIPo\0ne\0\0\t", 0, 11),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIP one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\tone\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP one\0 ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP one\0\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0one\0 \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0one\0", 0, 11),
+ macro_f_string_static_t_initialize("SKIPone\0\0\0\t", 0, 11),
+ };
+
+ f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+ };
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+ f_status_t status = F_none;
+
+ // First eight are against empty strings for first argument.
+ for (; i < 8; ++i) {
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_trim_dynamic(string_1s[i], string_2s[i], f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_trim_dynamic(string_1s[i], string_2s[i], range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (; i < 64; ++i) {
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_trim_dynamic(string_1s[i], string_2s[i], f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_trim_dynamic(string_1s[i], string_2s[i], range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_partial_except_trim_dynamic_h
+#define _TEST__F_compare_dynamic_partial_except_trim_dynamic_h
+
+// f_compare_dynamic_partial_except_trim_dynamic() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_partial_except_trim_dynamic()
+ */
+extern void test__f_compare_dynamic_partial_except_trim_dynamic__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_partial_except_trim_dynamic_h
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-dynamic_partial_except_trim_string.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_dynamic_partial_except_trim_string__works(void **state) {
+
+ // A necessary work-around to to have "\01" with the "\0" being separate from the "1".
+ f_char_t null_before_one_1[] = {
+ 'S', 'K', 'I', 'P', '\0', '1'
+ };
+
+ f_char_t null_before_one_2[] = {
+ 'S', 'K', 'I', 'P', '\0', '1', ' ', '\0', '\t'
+ };
+
+ f_char_t null_before_one_3[] = {
+ 'S', 'K', 'I', 'P', '\0', ' ', '\0', '1'
+ };
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP ", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\t", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\0", 0, 5),
+ macro_f_string_static_t_initialize("SKIP ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \t ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0\t", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0\0\t", 0, 7),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP 1", 0, 6),
+ macro_f_string_static_t_initialize("SKIP\t1", 0, 6),
+ macro_f_string_static_t_initialize(null_before_one_1, 0, 6),
+ macro_f_string_static_t_initialize("SKIP 1 ", 0, 9),
+ macro_f_string_static_t_initialize("SKIP 1\t ", 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_2, 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_3, 0, 8),
+ macro_f_string_static_t_initialize("SKIP1\0\0\t", 0, 8),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIP one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tone", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP one ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP one\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0one \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0one", 0, 10),
+ macro_f_string_static_t_initialize("SKIPone\0\0\t", 0, 10),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIP One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tOne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP One ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP One\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0One \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0One", 0, 10),
+ macro_f_string_static_t_initialize("SKIPOne\0\0\t", 0, 10),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP \0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\t\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \0ne ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP \0ne\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0\0ne \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0\0ne", 0, 10),
+ macro_f_string_static_t_initialize("SKIP\0ne\0\0\t", 0, 10),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIP o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\to\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP o\0ne ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP o\0ne\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0o\0ne", 0, 11),
+ macro_f_string_static_t_initialize("SKIPo\0ne\0\0\t", 0, 11),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIP one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\tone\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP one\0 ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP one\0\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0one\0 \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0one\0", 0, 11),
+ macro_f_string_static_t_initialize("SKIPone\0\0\0\t", 0, 11),
+ };
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("aa", 0, 2),
+ macro_f_string_static_t_initialize("aa1", 0, 3),
+ macro_f_string_static_t_initialize("aaone", 0, 5),
+ macro_f_string_static_t_initialize("aaOne", 0, 5),
+ macro_f_string_static_t_initialize("aa\0ne", 0, 5),
+ macro_f_string_static_t_initialize("aao\0ne", 0, 6),
+ macro_f_string_static_t_initialize("aaone\0", 0, 6),
+ };
+
+ f_string_range_t range_1 = macro_f_string_range_t_initialize(3, 9);
+ f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+ f_status_t status = F_none;
+
+ // First eight are against empty strings for first argument.
+ for (; i < 8; ++i) {
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_trim_string(string_1s[i].string, string_2s[i], 0, f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_trim_string(string_1s[i].string, string_2s[i], 0, range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (; i < 64; ++i) {
+
+ range_1.stop = string_1s[i].used - 1;
+
+ if (i % 8 == 0) {
+ status = f_compare_dynamic_partial_except_trim_string(string_1s[i].string, string_2s[i], range_1.stop + 1, f_string_range_empty_c, excepts_1, excepts_2);
+ }
+ else {
+ range_2.stop = string_2s[i].used - 1;
+
+ status = f_compare_dynamic_partial_except_trim_string(string_1s[i].string, string_2s[i], range_1.stop + 1, range_2, excepts_1, excepts_2);
+ }
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_dynamic_partial_except_trim_string_h
+#define _TEST__F_compare_dynamic_partial_except_trim_string_h
+
+// f_compare_dynamic_partial_except_trim_string() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_dynamic_partial_except_trim_string()
+ */
+extern void test__f_compare_dynamic_partial_except_trim_string__works(void **state);
+
+#endif // _TEST__F_compare_dynamic_partial_except_trim_string_h
macro_f_string_static_t_initialize("aaone\0", 0, 6),
};
- const f_string_range_t range_0 = macro_f_string_range_t_initialize(1, 0);
f_string_range_t range_1 = macro_f_string_range_t_initialize(3, 9);
f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
for (; i < 8; ++i) {
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_string(string_1s[i].string, string_2s[i], 0, range_0);
+ status = f_compare_dynamic_partial_string(string_1s[i].string, string_2s[i], 0, f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
range_1.stop = string_1s[i].used - 1;
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_string(string_1s[i].string + range_1.start, string_2s[i], (range_1.stop - range_1.start) + 1, range_0);
+ status = f_compare_dynamic_partial_string(string_1s[i].string + range_1.start, string_2s[i], (range_1.stop - range_1.start) + 1, f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
void test__f_compare_dynamic_partial_trim__works(void **state) {
// A necessary work-around to to have "\01" with the "\0" being separate from the "1".
- f_char_t null_before_one[] = {
+ f_char_t null_before_one_1[] = {
'x', 'x', 'x', '\0', '1', 'y', 'y', 'y'
};
+ f_char_t null_before_one_2[] = {
+ 'x', 'x', 'x', '\0', '1', ' ', '\0', '\t', 'y', 'y', 'y'
+ };
+
+ f_char_t null_before_one_3[] = {
+ 'x', 'x', 'x', '\0', ' ', '\0', '1', 'y', 'y', 'y'
+ };
+
const f_string_static_t string_1s[] = {
// 1.
// 3.
macro_f_string_static_t_initialize("xxx 1yyy", 0, 8),
macro_f_string_static_t_initialize("xxx\t1yyy", 0, 8),
- macro_f_string_static_t_initialize(null_before_one, 0, 8),
+ macro_f_string_static_t_initialize(null_before_one_1, 0, 8),
macro_f_string_static_t_initialize("xxx 1 yyy", 0, 11),
macro_f_string_static_t_initialize("xxx 1\t yyy", 0, 11),
- macro_f_string_static_t_initialize("xxx\01 \0\tyyy", 0, 11),
- macro_f_string_static_t_initialize("xxx\0 \01yyy", 0, 10),
+ macro_f_string_static_t_initialize(null_before_one_2, 0, 11),
+ macro_f_string_static_t_initialize(null_before_one_3, 0, 10),
macro_f_string_static_t_initialize("xxx1\0\0\tyyy", 0, 10),
// 4.
macro_f_string_static_t_initialize("aaone\0", 0, 6),
};
- const f_string_range_t range_0 = macro_f_string_range_t_initialize(1, 0);
f_string_range_t range_1 = macro_f_string_range_t_initialize(3, 9);
f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
for (; i < 8; ++i) {
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_trim(string_1s[i], string_2s[i], range_0, range_0);
+ status = f_compare_dynamic_partial_trim(string_1s[i], string_2s[i], f_string_range_empty_c, f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
- status = f_compare_dynamic_partial_trim(string_1s[i], string_2s[i], range_0, range_2);
+ status = f_compare_dynamic_partial_trim(string_1s[i], string_2s[i], f_string_range_empty_c, range_2);
}
assert_int_equal(status, expects[i]);
range_1.stop = string_1s[i].used - 4;
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_trim(string_1s[i], string_2s[i], range_1, range_0);
+ status = f_compare_dynamic_partial_trim(string_1s[i], string_2s[i], range_1, f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
void test__f_compare_dynamic_partial_trim_dynamic__works(void **state) {
// A necessary work-around to to have "\01" with the "\0" being separate from the "1".
- f_char_t null_before_one[] = {
+ f_char_t null_before_one_1[] = {
'\0', '1'
};
+ f_char_t null_before_one_2[] = {
+ '\0', '1', ' ', '\0', '\t'
+ };
+
+ f_char_t null_before_one_3[] = {
+ '\0', ' ', '\0', '1'
+ };
+
const f_string_static_t string_1s[] = {
// 1.
// 3.
macro_f_string_static_t_initialize(" 1", 0, 2),
macro_f_string_static_t_initialize("\t1", 0, 2),
- macro_f_string_static_t_initialize(null_before_one, 0, 2),
+ macro_f_string_static_t_initialize(null_before_one_1, 0, 2),
macro_f_string_static_t_initialize(" 1 ", 0, 5),
macro_f_string_static_t_initialize(" 1\t ", 0, 5),
- macro_f_string_static_t_initialize("\01 \0\t", 0, 5),
- macro_f_string_static_t_initialize("\0 \01", 0, 4),
+ macro_f_string_static_t_initialize(null_before_one_2, 0, 5),
+ macro_f_string_static_t_initialize(null_before_one_3, 0, 4),
macro_f_string_static_t_initialize("1\0\0\t", 0, 4),
// 4.
macro_f_string_static_t_initialize("aaone\0", 0, 6),
};
- const f_string_range_t range_0 = macro_f_string_range_t_initialize(1, 0);
f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
const f_status_t expects[] = {
for (; i < 8; ++i) {
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_trim_dynamic(string_1s[i], string_2s[i], range_0);
+ status = f_compare_dynamic_partial_trim_dynamic(string_1s[i], string_2s[i], f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
for (; i < 64; ++i) {
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_trim_dynamic(string_1s[i], string_2s[i], range_0);
+ status = f_compare_dynamic_partial_trim_dynamic(string_1s[i], string_2s[i], f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
void test__f_compare_dynamic_partial_trim_string__works(void **state) {
// A necessary work-around to to have "\01" with the "\0" being separate from the "1".
- f_char_t null_before_one[] = {
+ f_char_t null_before_one_1[] = {
'x', 'x', 'x', '\0', '1'
};
+ f_char_t null_before_one_2[] = {
+ 'x', 'x', 'x', '\0', '1', ' ', '\0', '\t'
+ };
+
+ f_char_t null_before_one_3[] = {
+ 'x', 'x', 'x', '\0', ' ', '\0', '1'
+ };
+
const f_string_static_t string_1s[] = {
// 1.
// 3.
macro_f_string_static_t_initialize("xxx 1", 0, 5),
macro_f_string_static_t_initialize("xxx\t1", 0, 5),
- macro_f_string_static_t_initialize(null_before_one, 0, 5),
+ macro_f_string_static_t_initialize(null_before_one_1, 0, 5),
macro_f_string_static_t_initialize("xxx 1 ", 0, 8),
macro_f_string_static_t_initialize("xxx 1\t ", 0, 8),
- macro_f_string_static_t_initialize("xxx\01 \0\t", 0, 8),
- macro_f_string_static_t_initialize("xxx\0 \01", 0, 7),
+ macro_f_string_static_t_initialize(null_before_one_2, 0, 8),
+ macro_f_string_static_t_initialize(null_before_one_3, 0, 7),
macro_f_string_static_t_initialize("xxx1\0\0\t", 0, 7),
// 4.
macro_f_string_static_t_initialize("aaone\0", 0, 6),
};
- const f_string_range_t range_0 = macro_f_string_range_t_initialize(1, 0);
f_string_range_t range_1 = macro_f_string_range_t_initialize(3, 9);
f_string_range_t range_2 = macro_f_string_range_t_initialize(2, 0);
for (; i < 8; ++i) {
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_trim_string(string_1s[i].string, string_2s[i], 0, range_0);
+ status = f_compare_dynamic_partial_trim_string(string_1s[i].string, string_2s[i], 0, f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
range_1.stop = string_1s[i].used - 1;
if (i % 8 == 0) {
- status = f_compare_dynamic_partial_trim_string(string_1s[i].string + range_1.start, string_2s[i], (range_1.stop - range_1.start) + 1, range_0);
+ status = f_compare_dynamic_partial_trim_string(string_1s[i].string + range_1.start, string_2s[i], (range_1.stop - range_1.start) + 1, f_string_range_empty_c);
}
else {
range_2.stop = string_2s[i].used - 1;
};
const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
- for (uint8_t i = 0; i < 64; ++i) {
+ for (; i < 64; ++i) {
const f_status_t status = f_compare_except(string_1s[i].string, string_2s[i].string, string_1s[i].used, string_2s[i].used, excepts_1, excepts_2);
assert_int_equal(status, expects[i]);
} // for
- for (uint8_t i = 0; i < 64; ++i) {
+ for (i = 0; i < 64; ++i) {
const f_status_t status = f_compare_except(string_2s[i].string, string_1s[i].string, string_2s[i].used, string_1s[i].used, excepts_2, excepts_1);
#ifndef _TEST__F_compare_except_h
#define _TEST__F_compare_except_h
-// f_compare_() only returns memory failures.
+// f_compare_except() only returns memory failures.
/**
* Test that function works.
--- /dev/null
+#include "test-compare.h"
+#include "test-compare-except_trim.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void test__f_compare_except_trim__works(void **state) {
+
+ // A necessary work-around to to have "\01" with the "\0" being separate from the "1".
+ f_char_t null_before_one_1[] = {
+ 'S', 'K', 'I', 'P', '\0', '1'
+ };
+
+ f_char_t null_before_one_2[] = {
+ 'S', 'K', 'I', 'P', '\0', '1', ' ', '\0', '\t'
+ };
+
+ f_char_t null_before_one_3[] = {
+ 'S', 'K', 'I', 'P', '\0', ' ', '\0', '1'
+ };
+
+ const f_string_static_t string_1s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize(0, 0, 0),
+
+ // 2.
+ macro_f_string_static_t_initialize("SKIP ", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\t", 0, 5),
+ macro_f_string_static_t_initialize("SKIP\0", 0, 5),
+ macro_f_string_static_t_initialize("SKIP ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \t ", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0\t", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0 \0", 0, 7),
+ macro_f_string_static_t_initialize("SKIP\0\0\t", 0, 7),
+
+ // 3.
+ macro_f_string_static_t_initialize("SKIP 1", 0, 6),
+ macro_f_string_static_t_initialize("SKIP\t1", 0, 6),
+ macro_f_string_static_t_initialize(null_before_one_1, 0, 6),
+ macro_f_string_static_t_initialize("SKIP 1 ", 0, 9),
+ macro_f_string_static_t_initialize("SKIP 1\t ", 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_2, 0, 9),
+ macro_f_string_static_t_initialize(null_before_one_3, 0, 8),
+ macro_f_string_static_t_initialize("SKIP1\0\0\t", 0, 8),
+
+ // 4.
+ macro_f_string_static_t_initialize("SKIP one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tone", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0one", 0, 8),
+ macro_f_string_static_t_initialize("SKIP one ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP one\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0one \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0one", 0, 10),
+ macro_f_string_static_t_initialize("SKIPone\0\0\t", 0, 10),
+
+ // 5.
+ macro_f_string_static_t_initialize("SKIP One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\tOne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0One", 0, 8),
+ macro_f_string_static_t_initialize("SKIP One ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP One\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0One \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0One", 0, 10),
+ macro_f_string_static_t_initialize("SKIPOne\0\0\t", 0, 10),
+
+ // 6.
+ macro_f_string_static_t_initialize("SKIP \0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\t\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP\0\0ne", 0, 8),
+ macro_f_string_static_t_initialize("SKIP \0ne ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP \0ne\t ", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0\0ne \0\t", 0, 11),
+ macro_f_string_static_t_initialize("SKIP\0 \0\0ne", 0, 10),
+ macro_f_string_static_t_initialize("SKIP\0ne\0\0\t", 0, 10),
+
+ // 7.
+ macro_f_string_static_t_initialize("SKIP o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\to\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne", 0, 9),
+ macro_f_string_static_t_initialize("SKIP o\0ne ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP o\0ne\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0o\0ne \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0o\0ne", 0, 11),
+ macro_f_string_static_t_initialize("SKIPo\0ne\0\0\t", 0, 11),
+
+ // 8.
+ macro_f_string_static_t_initialize("SKIP one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\tone\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP\0one\0", 0, 9),
+ macro_f_string_static_t_initialize("SKIP one\0 ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP one\0\t ", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0one\0 \0\t", 0, 12),
+ macro_f_string_static_t_initialize("SKIP\0 \0one\0", 0, 11),
+ macro_f_string_static_t_initialize("SKIPone\0\0\0\t", 0, 11),
+ };
+
+ const f_string_static_t string_2s[] = {
+
+ // 1.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 2.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 3.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 4.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 5.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 6.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 7.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+
+ // 8.
+ macro_f_string_static_t_initialize(0, 0, 0),
+ macro_f_string_static_t_initialize("", 0, 0),
+ macro_f_string_static_t_initialize("1", 0, 1),
+ macro_f_string_static_t_initialize("one", 0, 3),
+ macro_f_string_static_t_initialize("One", 0, 3),
+ macro_f_string_static_t_initialize("\0ne", 0, 3),
+ macro_f_string_static_t_initialize("o\0ne", 0, 4),
+ macro_f_string_static_t_initialize("one\0", 0, 4),
+ };
+
+ const f_status_t expects[] = {
+
+ // 1.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 2.
+ F_equal_to,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 3.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 4.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 5.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 6.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+
+ // 7.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+
+ // 8.
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to_not,
+ F_equal_to_not,
+ F_equal_to,
+ F_equal_to,
+ };
+
+ f_array_length_t except_1[] = {
+ 0, 1, 2, 3,
+ };
+ const f_array_lengths_t excepts_1 = macro_f_array_lengths_t_initialize(except_1, 0, 4);
+ const f_array_lengths_t excepts_2 = f_array_lengths_t_initialize;
+ uint8_t i = 0;
+
+ for (; i < 64; ++i) {
+
+ const f_status_t status = f_compare_except_trim(string_1s[i].string, string_2s[i].string, string_1s[i].used, string_2s[i].used, excepts_1, excepts_2);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+
+ for (i = 0; i < 64; ++i) {
+
+ const f_status_t status = f_compare_except_trim(string_2s[i].string, string_1s[i].string, string_2s[i].used, string_1s[i].used, excepts_2, excepts_1);
+
+ assert_int_equal(status, expects[i]);
+ } // for
+}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 0
+ *
+ * Project: Compare
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Test the compare project.
+ */
+#ifndef _TEST__F_compare_except_trim_h
+#define _TEST__F_compare_except_trim_h
+
+// f_compare_except_trim() only returns memory failures.
+
+/**
+ * Test that function works.
+ *
+ * @see f_compare_except_trim()
+ */
+extern void test__f_compare_except_trim__works(void **state);
+
+#endif // _TEST__F_compare_except_trim_h
cmocka_unit_test(test__f_compare_dynamic__works),
cmocka_unit_test(test__f_compare_dynamic_partial__works),
cmocka_unit_test(test__f_compare_dynamic_partial_dynamic__works),
- //cmocka_unit_test(test__f_compare_dynamic_partial_except__works),
- //cmocka_unit_test(test__f_compare_dynamic_partial_except_dynamic__works),
- //cmocka_unit_test(test__f_compare_dynamic_partial_except_string__works),
- //cmocka_unit_test(test__f_compare_dynamic_partial_except_trim__works),
- //cmocka_unit_test(test__f_compare_dynamic_partial_except_trim_dynamic__works),
- //cmocka_unit_test(test__f_compare_dynamic_partial_except_trim_string__works),
+ cmocka_unit_test(test__f_compare_dynamic_partial_except__works),
+ cmocka_unit_test(test__f_compare_dynamic_partial_except_dynamic__works),
+ cmocka_unit_test(test__f_compare_dynamic_partial_except_string__works),
+ cmocka_unit_test(test__f_compare_dynamic_partial_except_trim__works),
+ cmocka_unit_test(test__f_compare_dynamic_partial_except_trim_dynamic__works),
+ cmocka_unit_test(test__f_compare_dynamic_partial_except_trim_string__works),
cmocka_unit_test(test__f_compare_dynamic_partial_string__works),
cmocka_unit_test(test__f_compare_dynamic_partial_trim__works),
cmocka_unit_test(test__f_compare_dynamic_partial_trim_dynamic__works),
cmocka_unit_test(test__f_compare_dynamic_trim_string__trims),
cmocka_unit_test(test__f_compare_dynamic_trim_string__something_misses_nothing),
cmocka_unit_test(test__f_compare_dynamic_trim_string__works),
- //cmocka_unit_test(test__f_compare_dynamic_except__works),
- //cmocka_unit_test(test__f_compare_dynamic_except_string__works),
- //cmocka_unit_test(test__f_compare_dynamic_except_trim__works),
+ cmocka_unit_test(test__f_compare_dynamic_except__works),
+ cmocka_unit_test(test__f_compare_dynamic_except_string__works),
+ cmocka_unit_test(test__f_compare_dynamic_except_trim__works),
+ cmocka_unit_test(test__f_compare_dynamic_except_trim_string__works),
cmocka_unit_test(test__f_compare_except__works),
- //cmocka_unit_test(test__f_compare_except_trim__works),
- //cmocka_unit_test(test__f_compare_except_trim_string__works),
+ cmocka_unit_test(test__f_compare_except_trim__works),
cmocka_unit_test(test__f_compare_trim__trims),
cmocka_unit_test(test__f_compare_trim__something_misses_nothing),
cmocka_unit_test(test__f_compare_trim__works),
// f_compare_dynamic_except() doesn't use parameter checking.
// f_compare_dynamic_except_string() doesn't use parameter checking.
// f_compare_dynamic_except_trim() doesn't use parameter checking.
+ // f_compare_dynamic_except_trim_string() doesn't use parameter checking.
// f_compare_except() doesn't use parameter checking.
// f_compare_except_trim() doesn't use parameter checking.
- // f_compare_except_trim_string() doesn't use parameter checking.
// f_compare_trim() doesn't use parameter checking.
#endif // _di_level_0_parameter_checking_
};
#include "test-compare-dynamic.h"
#include "test-compare-dynamic_partial.h"
#include "test-compare-dynamic_partial_dynamic.h"
-//#include "test-compare-dynamic_partial_except.h"
-//#include "test-compare-dynamic_partial_except_dynamic.h"
-//#include "test-compare-dynamic_partial_except_string.h"
-//#include "test-compare-dynamic_partial_except_trim.h"
-//#include "test-compare-dynamic_partial_except_trim_dynamic.h"
-//#include "test-compare-dynamic_partial_except_trim_string.h"
+#include "test-compare-dynamic_partial_except.h"
+#include "test-compare-dynamic_partial_except_dynamic.h"
+#include "test-compare-dynamic_partial_except_string.h"
+#include "test-compare-dynamic_partial_except_trim.h"
+#include "test-compare-dynamic_partial_except_trim_dynamic.h"
+#include "test-compare-dynamic_partial_except_trim_string.h"
#include "test-compare-dynamic_partial_string.h"
#include "test-compare-dynamic_partial_trim.h"
#include "test-compare-dynamic_partial_trim_dynamic.h"
#include "test-compare-dynamic_string.h"
#include "test-compare-dynamic_trim.h"
#include "test-compare-dynamic_trim_string.h"
-//#include "test-compare-dynamic_except.h"
-//#include "test-compare-dynamic_except_string.h"
-//#include "test-compare-dynamic_except_trim.h"
+#include "test-compare-dynamic_except.h"
+#include "test-compare-dynamic_except_string.h"
+#include "test-compare-dynamic_except_trim.h"
+#include "test-compare-dynamic_except_trim_string.h"
#include "test-compare-except.h"
-//#include "test-compare-except_trim.h"
-//#include "test-compare-except_trim_string.h"
+#include "test-compare-except_trim.h"
#include "test-compare-trim.h"
#ifdef __cplusplus