aboutsummaryrefslogtreecommitdiffstats
path: root/libnormalform_nonempty.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2024-07-19 01:29:42 +0200
committerMattias Andrée <maandree@kth.se>2024-07-19 01:29:42 +0200
commit4294ec0ed06ee34920c9edaeebaeb8b65c720791 (patch)
treee0cded59452597c04fb38f403745a384675cb5f9 /libnormalform_nonempty.c
downloadlibnormalform-4294ec0ed06ee34920c9edaeebaeb8b65c720791.tar.gz
libnormalform-4294ec0ed06ee34920c9edaeebaeb8b65c720791.tar.bz2
libnormalform-4294ec0ed06ee34920c9edaeebaeb8b65c720791.tar.xz
First commit
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'libnormalform_nonempty.c')
-rw-r--r--libnormalform_nonempty.c69
1 files changed, 69 insertions, 0 deletions
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