Create some integration tests
This commit is contained in:
parent
5dbcaaaf40
commit
074b174d0f
@ -21,6 +21,7 @@ add_test_suites(
|
|||||||
convert_tests.c
|
convert_tests.c
|
||||||
desugar_tests.c
|
desugar_tests.c
|
||||||
fsa_tests.c
|
fsa_tests.c
|
||||||
|
integration_tests.c
|
||||||
min_heap_tests.c
|
min_heap_tests.c
|
||||||
parse_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