46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
#include <assert.h>
|
|
#include <ksr/regex.h>
|
|
#include <ksr/string.h>
|
|
|
|
int main(void)
|
|
{
|
|
// try a simple regex and check that it matches properly.
|
|
ksregex *reg1 = ksregex_new_nogroup("^[0-9]+$", 0);
|
|
assert(ksregex_matches(reg1, "12") == true);
|
|
assert(reg1->matches == NULL);
|
|
|
|
// try a more complex regex with matches groups.
|
|
ksregex *reg2 = ksregex_new("^([0-9])([a-z])$", 3, REG_ICASE);
|
|
assert(ksregex_matches(reg2, "1a"));
|
|
assert(!ksregex_matches(reg2, "H8"));
|
|
assert(!ksregex_matches(reg2, "4MM"));
|
|
assert(!ksregex_matches(reg2, "4_"));
|
|
assert(ksregex_matches(reg2, "3F"));
|
|
|
|
// check that groups have been extracted properly.
|
|
assert(str_equals("3F", reg2->matches[0]));
|
|
assert(str_equals("3", reg2->matches[1]));
|
|
assert(str_equals("F", reg2->matches[2]));
|
|
|
|
// check that groups are properly extracted even in more complex cases.
|
|
ksregex *reg3 = ksregex_new("^([0-9]+)([a-z]?)$", 3, 0);
|
|
assert(ksregex_matches(reg3, "123545"));
|
|
assert(str_equals("123545", reg3->matches[0]));
|
|
assert(str_equals("123545", reg3->matches[1]));
|
|
assert(str_equals("", reg3->matches[2]));
|
|
|
|
// check that matches are empty when matching fail.
|
|
assert(!ksregex_matches(reg3, "123bA"));
|
|
assert(reg3->matches == NULL);
|
|
|
|
// try to create an invalid regex.
|
|
assert(ksregex_new_nogroup("^(123$", 0) == NULL);
|
|
|
|
// try to free instantiated regex.
|
|
ksregex_free(reg1);
|
|
ksregex_free(reg2);
|
|
ksregex_free(reg3);
|
|
|
|
return 0;
|
|
}
|