From 4294ec0ed06ee34920c9edaeebaeb8b65c720791 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Fri, 19 Jul 2024 01:29:42 +0200 Subject: First commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- libnormalform_nonempty.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 libnormalform_nonempty.c (limited to 'libnormalform_nonempty.c') diff --git a/libnormalform_nonempty.c b/libnormalform_nonempty.c new file mode 100644 index 0000000..a120bec --- /dev/null +++ b/libnormalform_nonempty.c @@ -0,0 +1,69 @@ +/* See LICENSE file for copyright and license details. */ +#include "common.h" +#ifndef TEST + + +extern inline LIBNORMALFORM_SENTENCE *(libnormalform_nonempty)(struct libnormalform_map *); + + +#else + + +int +main(void) +{ + TEST_BEGIN; + + struct libnormalform_map dom1, dom2; + struct libnormalform_mapping map[3]; + LIBNORMALFORM_SENTENCE *a, *b; + + dom1.mappings = map; + memset(map, 0, sizeof(map)); + + ASSUME(a = libnormalform_nonempty(&dom1)); + ASSERT(a->type == TYPE_ANY); + + ASSUME(b = libnormalform_nonempty(&dom2)); + ASSERT_NOTEQUAL(a, b); + libnormalform_free(b); + + ASSUME(b = libnormalform_nonempty(&dom1)); + ASSERT(b != a); + ASSERT_EQUAL(a, b); + libnormalform_free(b); + + ASSUME(b = libnormalform_empty(&dom1)); + ASSERT_INVEQUAL(a, b); + libnormalform_free(b); + + ASSUME(b = libnormalform_singleton(&dom1)); + ASSERT_NOTEQUAL(a, b); + ASSUME(b = libnormalform_not(b)); + ASSERT_NOTEQUAL(a, b); + libnormalform_free(b); + + ASSUME(b = libnormalform_not(libnormalform_nonempty(&dom1))); + ASSERT(b->type == TYPE_ALL); + ASSERT_INVEQUAL(a, b); + libnormalform_free(b); + + dom1.nmappings = 0; + ASSERT(libnormalform_evaluate(a) == 0); + + dom1.nmappings = 1; + ASSERT(libnormalform_evaluate(a) == 1); + + dom1.nmappings = 2; + ASSERT(libnormalform_evaluate(a) == 1); + + dom1.nmappings = 3; + ASSERT(libnormalform_evaluate(a) == 1); + + libnormalform_free(a); + + TEST_END; +} + + +#endif -- cgit v1.3.1