diff options
Diffstat (limited to '')
| -rw-r--r-- | libnormalform_nonempty.c | 69 |
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 |
