Create some integration tests
This commit is contained in:
parent
5dbcaaaf40
commit
074b174d0f
@ -21,6 +21,7 @@ add_test_suites(
|
||||
convert_tests.c
|
||||
desugar_tests.c
|
||||
fsa_tests.c
|
||||
integration_tests.c
|
||||
min_heap_tests.c
|
||||
parse_tests.c
|
||||
)
|
||||
|
57
tests/integration_tests.c
Normal file
57
tests/integration_tests.c
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (c) Camden Dixie O'Brien
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
#include "compile.h"
|
||||
#include "testing.h"
|
||||
|
||||
static void test_foo_or_bar_regex(void)
|
||||
{
|
||||
fsa_t dfa;
|
||||
const char *regex = "foo|bar";
|
||||
const bool success = compile(regex, strlen(regex), &dfa);
|
||||
ASSERT_TRUE(success);
|
||||
ASSERT_ACCEPTS(&dfa, "foo");
|
||||
ASSERT_ACCEPTS(&dfa, "bar");
|
||||
ASSERT_REJECTS(&dfa, "baz");
|
||||
fsa_free(&dfa);
|
||||
}
|
||||
|
||||
static void test_even_number_of_Is_regex(void)
|
||||
{
|
||||
fsa_t dfa;
|
||||
const char *regex = "(II)*";
|
||||
const bool success = compile(regex, strlen(regex), &dfa);
|
||||
ASSERT_TRUE(success);
|
||||
ASSERT_ACCEPTS(&dfa, "");
|
||||
ASSERT_ACCEPTS(&dfa, "II");
|
||||
ASSERT_ACCEPTS(&dfa, "IIII");
|
||||
ASSERT_ACCEPTS(&dfa, "IIIIIIIIII");
|
||||
ASSERT_REJECTS(&dfa, "III");
|
||||
ASSERT_REJECTS(&dfa, "IIIII");
|
||||
ASSERT_REJECTS(&dfa, "IIIIIIIII");
|
||||
fsa_free(&dfa);
|
||||
}
|
||||
|
||||
static void test_arbitrary_regex_1(void)
|
||||
{
|
||||
fsa_t dfa;
|
||||
const char *regex = "(abc!?)*|dd+";
|
||||
const bool success = compile(regex, strlen(regex), &dfa);
|
||||
ASSERT_TRUE(success);
|
||||
ASSERT_ACCEPTS(&dfa, "abc!abcabc");
|
||||
ASSERT_ACCEPTS(&dfa, "dddddddd");
|
||||
ASSERT_REJECTS(&dfa, "d");
|
||||
ASSERT_REJECTS(&dfa, "abcd");
|
||||
fsa_free(&dfa);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
TESTING_BEGIN();
|
||||
test_foo_or_bar_regex();
|
||||
test_even_number_of_Is_regex();
|
||||
test_arbitrary_regex_1();
|
||||
return TESTING_END();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user