summaryrefslogtreecommitdiffhomepage
path: root/misc/tests/cregex_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'misc/tests/cregex_test.c')
-rw-r--r--misc/tests/cregex_test.c267
1 files changed, 121 insertions, 146 deletions
diff --git a/misc/tests/cregex_test.c b/misc/tests/cregex_test.c
index cd812aa2..8ac268f1 100644
--- a/misc/tests/cregex_test.c
+++ b/misc/tests/cregex_test.c
@@ -1,260 +1,235 @@
-#if 0
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <stc/csview.h>
-#include <stc/stctest.h>
+#define i_extern
#include <stc/cregex.h>
+#include <stc/csview.h>
+#include "ctest.h"
-#define START_TEST(f) void f(void)
-#define END_TEST
+#define M_START(m) ((m).str - inp)
+#define M_END(m) (M_START(m) + (m).size)
-#define M_START(re, m) ((m).str - (re).input)
-#define M_END(re, m) (M_START(re, m) + (m).size)
-START_TEST(compile_match_char)
+CTEST(cregex, compile_match_char)
{
+ const char* inp;
cregex re = cregex_from("äsdf", 0);
- EXPECT_EQ(re.error, 0);
+ ASSERT_EQ(re.error, 0);
csview match;
- EXPECT_TRUE(cregex_find("äsdf", &re, &match, 0));
- EXPECT_EQ(M_START(re, match), 0);
- EXPECT_EQ(M_END(re, match), 5); // ä is two bytes wide
+ ASSERT_EQ(cregex_find(&re, inp="äsdf", &match, CREG_M_FULLMATCH), CREG_OK);
+ ASSERT_EQ(M_START(match), 0);
+ ASSERT_EQ(M_END(match), 5); // ä is two bytes wide
- EXPECT_EQ(cregex_find("zäsdf", &re, &match, 0), 1);
- EXPECT_EQ(M_START(re, match), 1);
- EXPECT_EQ(M_END(re, match), 6);
+ ASSERT_EQ(cregex_find(&re, inp="zäsdf", &match, 0), CREG_OK);
+ ASSERT_EQ(M_START(match), 1);
+ ASSERT_EQ(M_END(match), 6);
cregex_drop(&re);
}
-END_TEST
-START_TEST(compile_match_anchors)
+CTEST(cregex, compile_match_anchors)
{
- cregex re = cregex_from("^äs.f$", 0);
- EXPECT_EQ(re.error, 0);
+ const char* inp;
+ cregex re = cregex_from(inp="^äs.f$", 0);
+ ASSERT_EQ(re.error, 0);
csview match;
- EXPECT_TRUE(cregex_find("äsdf", &re, &match, 0));
- EXPECT_EQ(M_START(re, match), 0);
- EXPECT_EQ(M_END(re, match), 5);
+ ASSERT_EQ(cregex_find(&re, inp="äsdf", &match, 0), CREG_OK);
+ ASSERT_EQ(M_START(match), 0);
+ ASSERT_EQ(M_END(match), 5);
- EXPECT_TRUE(cregex_is_match("äs♥f", &re));
- EXPECT_TRUE(cregex_is_match("äsöf", &re));
+ ASSERT_TRUE(cregex_is_match(&re, "äs♥f"));
+ ASSERT_TRUE(cregex_is_match(&re, "äsöf"));
- cregex_drop(re);
+ cregex_drop(&re);
}
-END_TEST
-START_TEST(compile_match_quantifiers)
+CTEST(cregex, compile_match_quantifiers1)
{
+ const char* inp;
c_AUTO (cregex, re) {
re = cregex_from("ä+", 0);
- EXPECT_EQ(re.error, 0);
+ ASSERT_EQ(re.error, 0);
csview match;
- EXPECT_EQ(cregex_find("ääb", &re, &match, 0), 1);
- EXPECT_EQ(M_START(re, match), 0);
- EXPECT_EQ(M_END(re, match), 4);
+ ASSERT_EQ(cregex_find(&re, inp="ääb", &match, 0), CREG_OK);
+ ASSERT_EQ(M_START(match), 0);
+ ASSERT_EQ(M_END(match), 4);
- EXPECT_EQ(cregex_find("bäbb", &re, &match, 0), 1);
- EXPECT_EQ(M_START(re, match), 1);
- EXPECT_EQ(M_END(re, match), 3);
+ ASSERT_EQ(cregex_find(&re, inp="bäbb", &match, 0), CREG_OK);
+ ASSERT_EQ(M_START(match), 1);
+ ASSERT_EQ(M_END(match), 3);
- EXPECT_FALSE(cregex_find("bbb", &re, &match, 0));
+ ASSERT_EQ(cregex_find(&re, "bbb", &match, 0), CREG_NOMATCH);
}
+}
+
+CTEST(cregex, compile_match_quantifiers2)
+{
+ const char* inp;
c_AUTO (cregex, re) {
re = cregex_from("bä*", 0);
- EXPECT_EQ(re.error, 0);
+ ASSERT_EQ(re.error, 0);
csview match;
- EXPECT_EQ(cregex_find("bääb", &re, &match, 0), 1);
- EXPECT_EQ(M_START(re, match), 0);
- EXPECT_EQ(M_END(re, match), 5);
+ ASSERT_EQ(cregex_find(&re, inp="bääb", &match, 0), CREG_OK);
+ ASSERT_EQ(M_START(match), 0);
+ ASSERT_EQ(M_END(match), 5);
- EXPECT_EQ(cregex_find("bäbb", &re, &match, 0), 1);
- EXPECT_EQ(M_START(re, match), 0);
- EXPECT_EQ(M_END(re, match), 3);
+ ASSERT_EQ(cregex_find(&re, inp="bäbb", &match, 0), CREG_OK);
+ ASSERT_EQ(M_START(match), 0);
+ ASSERT_EQ(M_END(match), 3);
- EXPECT_EQ(cregex_find("bbb", &re, &match, 0), 1);
- EXPECT_EQ(M_START(re, match), 0);
- EXPECT_EQ(M_END(re, match), 1);
+ ASSERT_EQ(cregex_find(&re, inp="bbb", &match, 0), CREG_OK);
+ ASSERT_EQ(M_START(match), 0);
+ ASSERT_EQ(M_END(match), 1);
}
}
-END_TEST
-START_TEST(compile_match_escaped_chars)
+CTEST(cregex, compile_match_escaped_chars)
{
cregex re = cregex_from("\\n\\r\\t\\{", 0);
- EXPECT_EQ(re.error, 0);
+ ASSERT_EQ(re.error, 0);
csview match;
- EXPECT_EQ(cregex_find("\n\r\t{", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("\n\r\t", &re, &match, 0), 0);
+ ASSERT_EQ(cregex_find(&re, "\n\r\t{", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "\n\r\t", &match, 0), CREG_NOMATCH);
cregex_drop(&re);
}
-END_TEST
-START_TEST(compile_match_class_simple)
+CTEST(cregex, compile_match_class_simple)
{
c_AUTO (cregex, re1, re2, re3)
{
re1 = cregex_from("\\s", 0);
- EXPECT_EQ(re1.error, 0);
+ ASSERT_EQ(re1.error, 0);
re2 = cregex_from("\\w", 0);
- EXPECT_EQ(re2.error, 0);
+ ASSERT_EQ(re2.error, 0);
re3 = cregex_from("\\D", 0);
- EXPECT_EQ(re3.error, 0);
+ ASSERT_EQ(re3.error, 0);
csview match;
- EXPECT_EQ(cregex_find(" ", &re1, &match, 0), 1);
- EXPECT_EQ(cregex_find("\r", &re1, &match, 0), 1);
- EXPECT_EQ(cregex_find("\n", &re1, &match, 0), 1);
+ ASSERT_EQ(cregex_find(&re1, " " , &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re1, "\r", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re1, "\n", &match, 0), CREG_OK);
- EXPECT_EQ(cregex_find("a", &re2, &match, 0), 1);
- EXPECT_EQ(cregex_find("0", &re2, &match, 0), 1);
- EXPECT_EQ(cregex_find("_", &re2, &match, 0), 1);
+ ASSERT_EQ(cregex_find(&re2, "a", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re2, "0", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re2, "_", &match, 0), CREG_OK);
- EXPECT_EQ( cregex_find("k", &re3, &match, 0), 1);
- EXPECT_EQ(cregex_find("0", &re3, &match, 0), 0);
+ ASSERT_EQ(cregex_find(&re3, "k", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re3, "0", &match, 0), CREG_NOMATCH);
}
}
-END_TEST
-START_TEST(compile_match_or)
+CTEST(cregex, compile_match_or)
{
c_AUTO (cregex, re, re2)
{
re = cregex_from("as|df", 0);
- EXPECT_EQ(re.error, 0);
+ ASSERT_EQ(re.error, 0);
- csview match;
- EXPECT_EQ(cregex_find("as", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("df", &re, &match, 0), 1);
+ csview match[4];
+ ASSERT_EQ(cregex_find(&re, "as", match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "df", match, 0), CREG_OK);
re2 = cregex_from("(as|df)", 0);
- EXPECT_EQ(re2.error, 0);
+ ASSERT_EQ(re2.error, 0);
- EXPECT_EQ(cregex_find(&re2, "as", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find(&re2, "df", &re, &match, 0), 1);
+ ASSERT_EQ(cregex_find(&re2, "as", match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re2, "df", match, 0), CREG_OK);
}
}
-END_TEST
-START_TEST(compile_match_class_complex_0)
+CTEST(cregex, compile_match_class_complex_0)
{
cregex re = cregex_from("[asdf]", 0);
- EXPECT_EQ(re.error, 0);
+ ASSERT_EQ(re.error, 0);
csview match;
- EXPECT_EQ(cregex_find("a", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("s", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("d", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("f", &re, &match, 0), 1);
+ ASSERT_EQ(cregex_find(&re, "a", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "s", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "d", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "f", &match, 0), CREG_OK);
cregex_drop(&re);
}
-END_TEST
-START_TEST(compile_match_class_complex_1)
+CTEST(cregex, compile_match_class_complex_1)
{
cregex re = cregex_from("[a-zä0-9öA-Z]", 0);
- EXPECT_EQ(re.error, 0);
+ ASSERT_EQ(re.error, 0);
csview match;
- EXPECT_EQ(cregex_find("a", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("5", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("A", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("ä", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("ö", &re, &match, 0), 1);
+ ASSERT_EQ(cregex_find(&re, "a", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "5", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "A", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "ä", &match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "ö", &match, 0), CREG_OK);
cregex_drop(&re);
}
-END_TEST
-START_TEST(compile_match_cap)
+CTEST(cregex, compile_match_cap)
{
cregex re = cregex_from("(abc)d", 0);
- EXPECT_EQ(re.error, 0);
+ ASSERT_EQ(re.error, 0);
- csview match;
- EXPECT_EQ(cregex_find("abcd", &re, &match, 0)), 1;
- EXPECT_EQ(cregex_find("llljabcdkk", &re, &match, 0), 1);
- EXPECT_EQ(cregex_find("abc", &re, &match, 0), 0);
+ csview match[4];
+ ASSERT_EQ(cregex_find(&re, "abcd", match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "llljabcdkk", match, 0), CREG_OK);
+ ASSERT_EQ(cregex_find(&re, "abc", match, 0), CREG_NOMATCH);
cregex_drop(&re);
}
-END_TEST
-START_TEST(search_all)
+CTEST(cregex, search_all)
{
+ const char* inp;
c_AUTO (cregex, re)
{
re = cregex_from("ab", 0);
csview m = {0};
int res;
-
- res = cregex_find("ab,ab,ab", &m, CREG_M_NEXT);
- EXPECT_TRUE(res==1 && M_START(re, m) == 0);
- res = cregex_find("ab,ab,ab", &m, CREG_M_NEXT);
- EXPECT_TRUE(res==1 && M_START(re, m) == 3);
- res = cregex_find("ab,ab,ab", &m, CREG_M_NEXT);
- EXPECT_TRUE(res==1 && M_START(re, m) == 6);
- res = cregex_find("ab,ab,ab", &m, CREG_M_NEXT);
- EXPECT_NE(res, 1);
+ ASSERT_EQ(re.error, CREG_OK);
+ inp="ab,ab,ab";
+ res = cregex_find(&re, inp, &m, CREG_M_NEXT);
+ ASSERT_EQ(M_START(m), 0);
+ res = cregex_find(&re, inp, &m, CREG_M_NEXT);
+ ASSERT_EQ(res, CREG_OK);
+ ASSERT_EQ(M_START(m), 3);
+ res = cregex_find(&re, inp, &m, CREG_M_NEXT);
+ ASSERT_EQ(M_START(m), 6);
+ res = cregex_find(&re, inp, &m, CREG_M_NEXT);
+ ASSERT_NE(res, CREG_OK);
}
}
-END_TEST
-START_TEST(captures_len)
+CTEST(cregex, captures_len)
{
c_AUTO (cregex, re) {
cregex re = cregex_from("(ab(cd))(ef)", 0);
- EXPECT_EQ(cregex_captures(&re), 3);
+ ASSERT_EQ(cregex_captures(&re), 4);
}
}
-END_TEST
-START_TEST(captures_cap)
+CTEST(cregex, captures_cap)
{
+ const char* inp;
c_AUTO (cregex, re) {
re = cregex_from("(ab)((cd)+)", 0);
- EXPECT_EQ(cregex_captures(&re), 3);
+ ASSERT_EQ(cregex_captures(&re), 4);
csview cap[5];
- EXPECT_EQ(cregex_find("xxabcdcde", &re, cap, 0), 1);
- EXPECT_TRUE(csview_equals(cap.match[0], c_SV("abcdcd")));
- /*
- EXPECT_EQ(cap0.end, 8);
- EXPECT_EQ(cap1.start, 2);
- EXPECT_EQ(cap1.end, 4);
- EXPECT_EQ(cap2.start, 4);
- EXPECT_EQ(cap2.end, 8);
- */
- EXPECT_FALSE(cregex_is_match("abcdcde", &re));
- EXPECT_TRUE(cregex_is_match("abcdcdcd", &re));
+ ASSERT_EQ(cregex_find(&re, inp="xxabcdcde", cap, 0), CREG_OK);
+ ASSERT_TRUE(csview_equals(cap[0], "abcdcd"));
+
+ ASSERT_EQ(M_END(cap[0]), 8);
+ ASSERT_EQ(M_START(cap[1]), 2);
+ ASSERT_EQ(M_END(cap[1]), 4);
+ ASSERT_EQ(M_START(cap[2]), 4);
+ ASSERT_EQ(M_END(cap[2]), 8);
+
+ ASSERT_TRUE(cregex_is_match(&re, "abcdcde"));
+ ASSERT_TRUE(cregex_is_match(&re, "abcdcdcd"));
}
}
-END_TEST
-
-
-int main()
-{
- RUN_TEST(compile_match_char);
- RUN_TEST(compile_match_anchors);
- RUN_TEST(compile_match_quantifiers);
- RUN_TEST(compile_match_escaped_chars);
- RUN_TEST(compile_match_class_simple);
- RUN_TEST(compile_match_class_complex_0);
- RUN_TEST(compile_match_class_complex_1);
- RUN_TEST(compile_match_cap);
- RUN_TEST(search_all);
- RUN_TEST(captures_len);
- RUN_TEST(captures_cap);
- RUN_TEST(compile_match_or);
- return REPORT_TESTS();
-}
-#endif
-