diff --git a/tests/convert_tests.c b/tests/convert_tests.c index 52386af..0410008 100644 --- a/tests/convert_tests.c +++ b/tests/convert_tests.c @@ -6,8 +6,6 @@ #include "convert.h" #include "testing.h" -#define ACCEPTS(dfa, s) fsa_accepts(dfa, s, strlen(s)) - static bool is_deterministic(const fsa_t *fsa) { for (int i = 0; i < fsa->count; ++i) { @@ -38,9 +36,9 @@ static void test_trivial_case(void) convert_to_dfa(&nfa, &dfa); ASSERT_TRUE(is_deterministic(&dfa)); - ASSERT_TRUE(ACCEPTS(&dfa, "a")); - ASSERT_FALSE(ACCEPTS(&dfa, "aa")); - ASSERT_FALSE(ACCEPTS(&dfa, "b")); + ASSERT_ACCEPTS(&dfa, "a"); + ASSERT_REJECTS(&dfa, "aa"); + ASSERT_REJECTS(&dfa, "b"); fsa_free(&nfa); fsa_free(&dfa); @@ -62,13 +60,13 @@ static void test_epsilon_move(void) convert_to_dfa(&nfa, &dfa); ASSERT_TRUE(is_deterministic(&dfa)); - ASSERT_TRUE(ACCEPTS(&dfa, "a")); - ASSERT_TRUE(ACCEPTS(&dfa, "b")); - ASSERT_FALSE(ACCEPTS(&dfa, "aa")); - ASSERT_FALSE(ACCEPTS(&dfa, "bb")); - ASSERT_FALSE(ACCEPTS(&dfa, "ab")); - ASSERT_FALSE(ACCEPTS(&dfa, "ba")); - ASSERT_FALSE(ACCEPTS(&dfa, "c")); + ASSERT_ACCEPTS(&dfa, "a"); + ASSERT_ACCEPTS(&dfa, "b"); + ASSERT_REJECTS(&dfa, "aa"); + ASSERT_REJECTS(&dfa, "bb"); + ASSERT_REJECTS(&dfa, "ab"); + ASSERT_REJECTS(&dfa, "ba"); + ASSERT_REJECTS(&dfa, "c"); fsa_free(&nfa); fsa_free(&dfa); @@ -92,13 +90,13 @@ static void test_branch(void) convert_to_dfa(&nfa, &dfa); ASSERT_TRUE(is_deterministic(&dfa)); - ASSERT_TRUE(ACCEPTS(&dfa, "aa")); - ASSERT_TRUE(ACCEPTS(&dfa, "ab")); - ASSERT_FALSE(ACCEPTS(&dfa, "a")); - ASSERT_FALSE(ACCEPTS(&dfa, "aaa")); - ASSERT_FALSE(ACCEPTS(&dfa, "abb")); - ASSERT_FALSE(ACCEPTS(&dfa, "c")); - ASSERT_FALSE(ACCEPTS(&dfa, "ac")); + ASSERT_ACCEPTS(&dfa, "aa"); + ASSERT_ACCEPTS(&dfa, "ab"); + ASSERT_REJECTS(&dfa, "a"); + ASSERT_REJECTS(&dfa, "aaa"); + ASSERT_REJECTS(&dfa, "abb"); + ASSERT_REJECTS(&dfa, "c"); + ASSERT_REJECTS(&dfa, "ac"); fsa_free(&nfa); fsa_free(&dfa); @@ -127,19 +125,19 @@ static void test_nfa_a(void) ASSERT_TRUE(is_deterministic(&dfa)); - ASSERT_TRUE(ACCEPTS(&dfa, "")); - ASSERT_TRUE(ACCEPTS(&dfa, "a")); - ASSERT_TRUE(ACCEPTS(&dfa, "b")); - ASSERT_TRUE(ACCEPTS(&dfa, "ab")); - ASSERT_TRUE(ACCEPTS(&dfa, "ba")); - ASSERT_TRUE(ACCEPTS(&dfa, "aaaab")); + ASSERT_ACCEPTS(&dfa, ""); + ASSERT_ACCEPTS(&dfa, "a"); + ASSERT_ACCEPTS(&dfa, "b"); + ASSERT_ACCEPTS(&dfa, "ab"); + ASSERT_ACCEPTS(&dfa, "ba"); + ASSERT_ACCEPTS(&dfa, "aaaab"); - ASSERT_FALSE(ACCEPTS(&dfa, "aaab")); - ASSERT_FALSE(ACCEPTS(&dfa, "aaaba")); - ASSERT_FALSE(ACCEPTS(&dfa, "aaabb")); - ASSERT_FALSE(ACCEPTS(&dfa, "aaaaab")); - ASSERT_FALSE(ACCEPTS(&dfa, "aaaaaba")); - ASSERT_FALSE(ACCEPTS(&dfa, "aaaaabb")); + ASSERT_REJECTS(&dfa, "aaab"); + ASSERT_REJECTS(&dfa, "aaaba"); + ASSERT_REJECTS(&dfa, "aaabb"); + ASSERT_REJECTS(&dfa, "aaaaab"); + ASSERT_REJECTS(&dfa, "aaaaaba"); + ASSERT_REJECTS(&dfa, "aaaaabb"); fsa_free(&nfa); fsa_free(&dfa); @@ -166,21 +164,21 @@ static void test_nfa_b(void) ASSERT_TRUE(is_deterministic(&dfa)); - ASSERT_TRUE(ACCEPTS(&dfa, "")); - ASSERT_TRUE(ACCEPTS(&dfa, "a")); - ASSERT_TRUE(ACCEPTS(&dfa, "aaaaaa")); - ASSERT_TRUE(ACCEPTS(&dfa, "b")); - ASSERT_TRUE(ACCEPTS(&dfa, "bbbbb")); - ASSERT_TRUE(ACCEPTS(&dfa, "aaaaaa")); - ASSERT_TRUE(ACCEPTS(&dfa, "aaaaabaa")); - ASSERT_TRUE(ACCEPTS(&dfa, "aaaaabaab")); + ASSERT_ACCEPTS(&dfa, ""); + ASSERT_ACCEPTS(&dfa, "a"); + ASSERT_ACCEPTS(&dfa, "aaaaaa"); + ASSERT_ACCEPTS(&dfa, "b"); + ASSERT_ACCEPTS(&dfa, "bbbbb"); + ASSERT_ACCEPTS(&dfa, "aaaaaa"); + ASSERT_ACCEPTS(&dfa, "aaaaabaa"); + ASSERT_ACCEPTS(&dfa, "aaaaabaab"); - ASSERT_FALSE(ACCEPTS(&dfa, "ba")); - ASSERT_FALSE(ACCEPTS(&dfa, "aba")); - ASSERT_FALSE(ACCEPTS(&dfa, "abab")); - ASSERT_FALSE(ACCEPTS(&dfa, "aaaaaba")); - ASSERT_FALSE(ACCEPTS(&dfa, "aaaaabaaa")); - ASSERT_FALSE(ACCEPTS(&dfa, "aaaaabbaabbaaa")); + ASSERT_REJECTS(&dfa, "ba"); + ASSERT_REJECTS(&dfa, "aba"); + ASSERT_REJECTS(&dfa, "abab"); + ASSERT_REJECTS(&dfa, "aaaaaba"); + ASSERT_REJECTS(&dfa, "aaaaabaaa"); + ASSERT_REJECTS(&dfa, "aaaaabbaabbaaa"); fsa_free(&nfa); fsa_free(&dfa); @@ -212,24 +210,24 @@ static void test_nfa_c(void) ASSERT_TRUE(is_deterministic(&dfa)); - ASSERT_TRUE(ACCEPTS(&dfa, "a")); - ASSERT_TRUE(ACCEPTS(&dfa, "aba")); - ASSERT_TRUE(ACCEPTS(&dfa, "aaba")); - ASSERT_TRUE(ACCEPTS(&dfa, "abaaba")); - ASSERT_TRUE(ACCEPTS(&dfa, "ba")); - ASSERT_TRUE(ACCEPTS(&dfa, "babba")); - ASSERT_TRUE(ACCEPTS(&dfa, "baaa")); - ASSERT_TRUE(ACCEPTS(&dfa, "baba")); - ASSERT_TRUE(ACCEPTS(&dfa, "babaa")); + ASSERT_ACCEPTS(&dfa, "a"); + ASSERT_ACCEPTS(&dfa, "aba"); + ASSERT_ACCEPTS(&dfa, "aaba"); + ASSERT_ACCEPTS(&dfa, "abaaba"); + ASSERT_ACCEPTS(&dfa, "ba"); + ASSERT_ACCEPTS(&dfa, "babba"); + ASSERT_ACCEPTS(&dfa, "baaa"); + ASSERT_ACCEPTS(&dfa, "baba"); + ASSERT_ACCEPTS(&dfa, "babaa"); - ASSERT_FALSE(ACCEPTS(&dfa, "")); - ASSERT_FALSE(ACCEPTS(&dfa, "ab")); - ASSERT_FALSE(ACCEPTS(&dfa, "aab")); - ASSERT_FALSE(ACCEPTS(&dfa, "abbab")); - ASSERT_FALSE(ACCEPTS(&dfa, "b")); - ASSERT_FALSE(ACCEPTS(&dfa, "bb")); - ASSERT_FALSE(ACCEPTS(&dfa, "baaabab")); - ASSERT_FALSE(ACCEPTS(&dfa, "aabababab")); + ASSERT_REJECTS(&dfa, ""); + ASSERT_REJECTS(&dfa, "ab"); + ASSERT_REJECTS(&dfa, "aab"); + ASSERT_REJECTS(&dfa, "abbab"); + ASSERT_REJECTS(&dfa, "b"); + ASSERT_REJECTS(&dfa, "bb"); + ASSERT_REJECTS(&dfa, "baaabab"); + ASSERT_REJECTS(&dfa, "aabababab"); fsa_free(&nfa); fsa_free(&dfa); diff --git a/tests/include/testing.h b/tests/include/testing.h index c319285..4196327 100644 --- a/tests/include/testing.h +++ b/tests/include/testing.h @@ -34,6 +34,9 @@ #define ASSERT_NOT_NULL(p) ASSERT_FALSE(NULL == (p)) #define ASSERT_MEM_EQ(p, q, n) ASSERT_FALSE(memcmp(p, q, n) != 0) +#define ASSERT_ACCEPTS(dfa, s) ASSERT_TRUE(fsa_accepts(dfa, s, strlen(s))) +#define ASSERT_REJECTS(dfa, s) ASSERT_FALSE(fsa_accepts(dfa, s, strlen(s))) + extern int fail_count; #endif