summaryrefslogtreecommitdiff
path: root/predict_test.go
diff options
context:
space:
mode:
authorEyal Posener <[email protected]>2019-11-14 06:51:44 +0200
committerEyal Posener <[email protected]>2019-11-18 01:05:47 +0200
commit8724aaf18312e54750540a9578e00d61b1c545d8 (patch)
treed3e736b4fb279975bbcc017ae1bad53e454c5773 /predict_test.go
parent05b68ffc813dd10c420993cb1cf927b346c057b8 (diff)
V2
Diffstat (limited to 'predict_test.go')
-rw-r--r--predict_test.go271
1 files changed, 0 insertions, 271 deletions
diff --git a/predict_test.go b/predict_test.go
deleted file mode 100644
index c376207..0000000
--- a/predict_test.go
+++ /dev/null
@@ -1,271 +0,0 @@
-package complete
-
-import (
- "fmt"
- "os"
- "sort"
- "strings"
- "testing"
-)
-
-func TestPredicate(t *testing.T) {
- t.Parallel()
- initTests()
-
- tests := []struct {
- name string
- p Predictor
- argList []string
- want []string
- }{
- {
- name: "set",
- p: PredictSet("a", "b", "c"),
- want: []string{"a", "b", "c"},
- },
- {
- name: "set/empty",
- p: PredictSet(),
- want: []string{},
- },
- {
- name: "anything",
- p: PredictAnything,
- want: []string{},
- },
- {
- name: "or: word with nil",
- p: PredictOr(PredictSet("a"), nil),
- want: []string{"a"},
- },
- {
- name: "or: nil with word",
- p: PredictOr(nil, PredictSet("a")),
- want: []string{"a"},
- },
- {
- name: "or: nil with nil",
- p: PredictOr(PredictNothing, PredictNothing),
- want: []string{},
- },
- {
- name: "or: word with word with word",
- p: PredictOr(PredictSet("a"), PredictSet("b"), PredictSet("c")),
- want: []string{"a", "b", "c"},
- },
- {
- name: "files/txt",
- p: PredictFiles("*.txt"),
- want: []string{"./", "dir/", "outer/", "a.txt", "b.txt", "c.txt", ".dot.txt"},
- },
- {
- name: "files/txt",
- p: PredictFiles("*.txt"),
- argList: []string{"./dir/"},
- want: []string{"./dir/"},
- },
- {
- name: "complete files inside dir if it is the only match",
- p: PredictFiles("foo"),
- argList: []string{"./dir/", "./d"},
- want: []string{"./dir/", "./dir/foo"},
- },
- {
- name: "complete files inside dir when argList includes file name",
- p: PredictFiles("*"),
- argList: []string{"./dir/f", "./dir/foo"},
- want: []string{"./dir/foo"},
- },
- {
- name: "files/md",
- p: PredictFiles("*.md"),
- argList: []string{""},
- want: []string{"./", "dir/", "outer/", "readme.md"},
- },
- {
- name: "files/md with ./ prefix",
- p: PredictFiles("*.md"),
- argList: []string{".", "./"},
- want: []string{"./", "./dir/", "./outer/", "./readme.md"},
- },
- {
- name: "dirs",
- p: PredictDirs("*"),
- argList: []string{"di", "dir", "dir/"},
- want: []string{"dir/"},
- },
- {
- name: "dirs with ./ prefix",
- p: PredictDirs("*"),
- argList: []string{"./di", "./dir", "./dir/"},
- want: []string{"./dir/"},
- },
- {
- name: "predict anything in dir",
- p: PredictFiles("*"),
- argList: []string{"dir", "dir/", "di"},
- want: []string{"dir/", "dir/foo", "dir/bar"},
- },
- {
- name: "predict anything in dir with ./ prefix",
- p: PredictFiles("*"),
- argList: []string{"./dir", "./dir/", "./di"},
- want: []string{"./dir/", "./dir/foo", "./dir/bar"},
- },
- {
- name: "root directories",
- p: PredictDirs("*"),
- argList: []string{""},
- want: []string{"./", "dir/", "outer/"},
- },
- {
- name: "root directories with ./ prefix",
- p: PredictDirs("*"),
- argList: []string{".", "./"},
- want: []string{"./", "./dir/", "./outer/"},
- },
- {
- name: "nested directories",
- p: PredictDirs("*.md"),
- argList: []string{"ou", "outer", "outer/"},
- want: []string{"outer/", "outer/inner/"},
- },
- {
- name: "nested directories with ./ prefix",
- p: PredictDirs("*.md"),
- argList: []string{"./ou", "./outer", "./outer/"},
- want: []string{"./outer/", "./outer/inner/"},
- },
- {
- name: "nested inner directory",
- p: PredictFiles("*.md"),
- argList: []string{"outer/i"},
- want: []string{"outer/inner/", "outer/inner/readme.md"},
- },
- }
-
- for _, tt := range tests {
-
- // no args in argList, means an empty argument
- if len(tt.argList) == 0 {
- tt.argList = append(tt.argList, "")
- }
-
- for _, arg := range tt.argList {
- t.Run(tt.name+"/arg="+arg, func(t *testing.T) {
-
- matches := tt.p.Predict(newArgs(arg))
-
- sort.Strings(matches)
- sort.Strings(tt.want)
-
- got := strings.Join(matches, ",")
- want := strings.Join(tt.want, ",")
-
- if got != want {
- t.Errorf("failed %s\ngot = %s\nwant: %s", t.Name(), got, want)
- }
- })
- }
- }
-}
-
-func TestMatchFile(t *testing.T) {
- t.Parallel()
-
- // Change to tests directory for testing completion of
- // files and directories
- err := os.Chdir("../tests")
- if err != nil {
- panic(err)
- }
-
- type matcherTest struct {
- prefix string
- want bool
- }
-
- tests := []struct {
- long string
- tests []matcherTest
- }{
- {
- long: "file.txt",
- tests: []matcherTest{
- {prefix: "", want: true},
- {prefix: "f", want: true},
- {prefix: "./f", want: true},
- {prefix: "./.", want: false},
- {prefix: "file.", want: true},
- {prefix: "./file.", want: true},
- {prefix: "file.txt", want: true},
- {prefix: "./file.txt", want: true},
- {prefix: "other.txt", want: false},
- {prefix: "/other.txt", want: false},
- {prefix: "/file.txt", want: false},
- {prefix: "/fil", want: false},
- {prefix: "/file.txt2", want: false},
- {prefix: "/.", want: false},
- },
- },
- {
- long: "./file.txt",
- tests: []matcherTest{
- {prefix: "", want: true},
- {prefix: "f", want: true},
- {prefix: "./f", want: true},
- {prefix: "./.", want: false},
- {prefix: "file.", want: true},
- {prefix: "./file.", want: true},
- {prefix: "file.txt", want: true},
- {prefix: "./file.txt", want: true},
- {prefix: "other.txt", want: false},
- {prefix: "/other.txt", want: false},
- {prefix: "/file.txt", want: false},
- {prefix: "/fil", want: false},
- {prefix: "/file.txt2", want: false},
- {prefix: "/.", want: false},
- },
- },
- {
- long: "/file.txt",
- tests: []matcherTest{
- {prefix: "", want: true},
- {prefix: "f", want: false},
- {prefix: "./f", want: false},
- {prefix: "./.", want: false},
- {prefix: "file.", want: false},
- {prefix: "./file.", want: false},
- {prefix: "file.txt", want: false},
- {prefix: "./file.txt", want: false},
- {prefix: "other.txt", want: false},
- {prefix: "/other.txt", want: false},
- {prefix: "/file.txt", want: true},
- {prefix: "/fil", want: true},
- {prefix: "/file.txt2", want: false},
- {prefix: "/.", want: false},
- },
- },
- {
- long: "./",
- tests: []matcherTest{
- {prefix: "", want: true},
- {prefix: ".", want: true},
- {prefix: "./", want: true},
- {prefix: "./.", want: false},
- },
- },
- }
-
- for _, tt := range tests {
- for _, ttt := range tt.tests {
- name := fmt.Sprintf("long=%q&prefix=%q", tt.long, ttt.prefix)
- t.Run(name, func(t *testing.T) {
- got := matchFile(tt.long, ttt.prefix)
- if got != ttt.want {
- t.Errorf("Failed %s: got = %t, want: %t", name, got, ttt.want)
- }
- })
- }
- }
-}