From 423fcc9b5425019c617b2b6f034275de4efc8ab0 Mon Sep 17 00:00:00 2001 From: Aadhavan Srinivasan Date: Fri, 24 Jan 2025 14:58:18 -0500 Subject: [PATCH] Added more test cases (1 failing) --- re_test.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/re_test.go b/re_test.go index 6cb59bf..bf45008 100644 --- a/re_test.go +++ b/re_test.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "slices" "testing" ) @@ -185,6 +186,56 @@ var reTests = []struct { {`a.*b`, nil, "acc\nccb", []Group{}}, {`a.{4,5}b`, nil, "acc\nccb", []Group{}}, {`a.b`, nil, "a\rb", []Group{{0, 3}}}, + {`a.b`, []ReFlag{RE_MULTILINE}, "a\nb", []Group{{0, 3}}}, + {`a.*b`, []ReFlag{RE_MULTILINE}, "acc\nccb", []Group{{0, 7}}}, + {`a.{4,5}b`, []ReFlag{RE_MULTILINE}, "acc\nccb", []Group{{0, 7}}}, + + {`)`, nil, ``, nil}, + {`^$`, nil, ``, []Group{{0, 0}}}, + {`abc`, nil, `abc`, []Group{{0, 3}}}, + {`abc`, nil, `xbc`, []Group{}}, + {`abc`, nil, `axc`, []Group{}}, + {`abc`, nil, `abx`, []Group{}}, + {`abc`, nil, `xabcy`, []Group{{1, 4}}}, + {`abc`, nil, `ababc`, []Group{{2, 5}}}, + {`ab*c`, nil, `abc`, []Group{{0, 3}}}, + {`ab*bc`, nil, `abc`, []Group{{0, 3}}}, + {`ab*bc`, nil, `abbc`, []Group{{0, 4}}}, + {`ab*bc`, nil, `abbbbc`, []Group{{0, 6}}}, + {`ab+bc`, nil, `abbc`, []Group{{0, 4}}}, + {`ab+bc`, nil, `abc`, []Group{}}, + {`ab+bc`, nil, `abq`, []Group{}}, + {`ab+bc`, nil, `abbbbc`, []Group{{0, 6}}}, + {`ab?bc`, nil, `abbc`, []Group{{0, 4}}}, + {`ab?bc`, nil, `abc`, []Group{{0, 3}}}, + {`ab?bc`, nil, `abbbbc`, []Group{}}, + {`ab?c`, nil, `abc`, []Group{{0, 3}}}, + {`^abc$`, nil, `abc`, []Group{{0, 3}}}, + {`^abc$`, nil, `abcc`, []Group{}}, + {`^abc`, nil, `abcc`, []Group{{0, 3}}}, + {`^abc$`, nil, `aabc`, []Group{}}, + {`abc$`, nil, `aabc`, []Group{{1, 4}}}, + {`^`, nil, `abc`, []Group{{0, 0}}}, + {`$`, nil, `abc`, []Group{{3, 3}}}, + {`a.c`, nil, `abc`, []Group{{0, 3}}}, + {`a.c`, nil, `axc`, []Group{{0, 3}}}, + {`a.*c`, nil, `axyzc`, []Group{{0, 5}}}, + {`a.*c`, nil, `axyzd`, []Group{}}, + {`a[bc]d`, nil, `abc`, []Group{}}, + {`a[bc]d`, nil, `abd`, []Group{{0, 3}}}, + {`a[b-d]e`, nil, `abd`, []Group{}}, + {`a[b-d]e`, nil, `ace`, []Group{{0, 3}}}, + {`a[b-d]`, nil, `aac`, []Group{{1, 3}}}, + {`a[-b]`, nil, `a-`, []Group{{0, 2}}}, // If a character class has a hyphen without a start or end character, it is treated as a literal hyphen + {`a[\-b]`, nil, `a-`, []Group{{0, 2}}}, + {`a[b-]`, nil, `a-`, []Group{{0, 2}}}, // If a character class has a hyphen without a start or end character, it is treated as a literal hyphen + + {`a[]b`, nil, `-`, nil}, + {`a[`, nil, `-`, nil}, + {`a\`, nil, `-`, nil}, + {`abc)`, nil, `-`, nil}, + {`(abc`, nil, `-`, nil}, + {`a]`, nil, `a]`, []Group{{0, 2}}}, // Todo - add numeric range tests } @@ -223,7 +274,7 @@ func TestFindAllMatches(t *testing.T) { regComp, err := Compile(test.re, test.flags...) if err != nil { if test.result != nil { - panic(err) + panic(fmt.Errorf("Test Error: %v", err)) } } else { matchIndices := FindAllMatches(regComp, test.str) @@ -242,7 +293,7 @@ func TestFindAllMatches(t *testing.T) { func TestFindString(t *testing.T) { for _, test := range reTests { t.Run(test.re+" "+test.str, func(t *testing.T) { - regComp, err := Compile(test.re) + regComp, err := Compile(test.re, test.flags...) if err != nil { if test.result != nil { panic(err) @@ -267,7 +318,7 @@ func TestFindString(t *testing.T) { func TestFindAllGroups(t *testing.T) { for _, test := range groupTests { t.Run(test.re+" "+test.str, func(t *testing.T) { - regComp, err := Compile(test.re) + regComp, err := Compile(test.re, test.flags...) if err != nil { if test.result != nil { panic(err)