forked from DavidGamba/dgtools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
grepp_test.go
59 lines (55 loc) · 1.74 KB
/
grepp_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package main
import (
l "github.com/DavidGamba/dgtools/grepp/logging"
"io/ioutil"
"os"
"testing"
)
func TestMain(m *testing.M) {
// l.LogInit(os.Stderr, os.Stderr, os.Stdout, os.Stderr, os.Stderr)
l.LogInit(ioutil.Discard, ioutil.Discard, os.Stdout, os.Stderr, os.Stderr)
os.Exit(m.Run())
}
func TestCheckPatternInFile(t *testing.T) {
bufferSize = 2048
cases := []struct {
file string
pattern string
ignoreCase bool
result bool
}{
{"test_tree/A/b/C/d/E", "loreM", true, true},
{"test_tree/A/b/C/d/E", "loreM", false, false},
{"test_tree/A/b/C/d/E", "test", false, false},
{"test_tree/A/b/C/d/E", "test", true, false},
}
for _, c := range cases {
r, _ := checkPatternInFile(c.file, c.pattern, c.ignoreCase)
if r != c.result {
t.Errorf("checkPatternInFile(%q, %q, %v) == (%v), want (%v)",
c.file, c.pattern, c.ignoreCase, r, c.result)
}
}
}
func TestGetRegex(t *testing.T) {
cases := []struct {
pattern string
ignoreCase bool
line string
before string
match string
after string
}{
{"pattern", true, "before pattern after", "before ", "pattern", " after"},
{"(pattern)+", true, "before patternpattern after", "before ", "patternpattern", " after"},
{"(pattern)(capture)(groups)", true, "before patterncapturegroups after", "before ", "patterncapturegroups", " after"},
}
for _, c := range cases {
re, reEnd := getRegex(c.pattern, c.ignoreCase)
match := re.FindAllStringSubmatch(c.line, -1)
remainder := reEnd.FindStringSubmatch(c.line)
if match[0][1] != c.before || match[0][2] != c.match || remainder[len(remainder)-1] != c.after {
t.Errorf("TestGetRegex: expected %q, %q, %q | result match: %q, remainder: %q", c.before, c.match, c.after, match, remainder)
}
}
}