Added more test cases (1 failing)
This commit is contained in:
		
							
								
								
									
										57
									
								
								re_test.go
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								re_test.go
									
									
									
									
									
								
							| @@ -1,6 +1,7 @@ | |||||||
| package main | package main | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"fmt" | ||||||
| 	"slices" | 	"slices" | ||||||
| 	"testing" | 	"testing" | ||||||
| ) | ) | ||||||
| @@ -185,6 +186,56 @@ var reTests = []struct { | |||||||
| 	{`a.*b`, nil, "acc\nccb", []Group{}}, | 	{`a.*b`, nil, "acc\nccb", []Group{}}, | ||||||
| 	{`a.{4,5}b`, nil, "acc\nccb", []Group{}}, | 	{`a.{4,5}b`, nil, "acc\nccb", []Group{}}, | ||||||
| 	{`a.b`, nil, "a\rb", []Group{{0, 3}}}, | 	{`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 | 	// Todo - add numeric range tests | ||||||
| } | } | ||||||
| @@ -223,7 +274,7 @@ func TestFindAllMatches(t *testing.T) { | |||||||
| 			regComp, err := Compile(test.re, test.flags...) | 			regComp, err := Compile(test.re, test.flags...) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				if test.result != nil { | 				if test.result != nil { | ||||||
| 					panic(err) | 					panic(fmt.Errorf("Test Error: %v", err)) | ||||||
| 				} | 				} | ||||||
| 			} else { | 			} else { | ||||||
| 				matchIndices := FindAllMatches(regComp, test.str) | 				matchIndices := FindAllMatches(regComp, test.str) | ||||||
| @@ -242,7 +293,7 @@ func TestFindAllMatches(t *testing.T) { | |||||||
| func TestFindString(t *testing.T) { | func TestFindString(t *testing.T) { | ||||||
| 	for _, test := range reTests { | 	for _, test := range reTests { | ||||||
| 		t.Run(test.re+"	"+test.str, func(t *testing.T) { | 		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 err != nil { | ||||||
| 				if test.result != nil { | 				if test.result != nil { | ||||||
| 					panic(err) | 					panic(err) | ||||||
| @@ -267,7 +318,7 @@ func TestFindString(t *testing.T) { | |||||||
| func TestFindAllGroups(t *testing.T) { | func TestFindAllGroups(t *testing.T) { | ||||||
| 	for _, test := range groupTests { | 	for _, test := range groupTests { | ||||||
| 		t.Run(test.re+"	"+test.str, func(t *testing.T) { | 		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 err != nil { | ||||||
| 				if test.result != nil { | 				if test.result != nil { | ||||||
| 					panic(err) | 					panic(err) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user