summaryrefslogtreecommitdiff
path: root/predict_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'predict_test.go')
-rw-r--r--predict_test.go114
1 files changed, 65 insertions, 49 deletions
diff --git a/predict_test.go b/predict_test.go
index ebe8aa1..b2840c0 100644
--- a/predict_test.go
+++ b/predict_test.go
@@ -11,10 +11,10 @@ func TestPredicate(t *testing.T) {
initTests()
tests := []struct {
- name string
- p Predictor
- arg string
- want []string
+ name string
+ p Predictor
+ argList []string
+ want []string
}{
{
name: "set",
@@ -22,10 +22,10 @@ func TestPredicate(t *testing.T) {
want: []string{"a", "b", "c"},
},
{
- name: "set with does",
- p: PredictSet("./..", "./x"),
- arg: "./.",
- want: []string{"./.."},
+ name: "set with does",
+ p: PredictSet("./..", "./x"),
+ argList: []string{"./.", "./.."},
+ want: []string{"./.."},
},
{
name: "set/empty",
@@ -60,70 +60,86 @@ func TestPredicate(t *testing.T) {
{
name: "files/txt",
p: PredictFiles("*.txt"),
- want: []string{"./", "./dir/", "./a.txt", "./b.txt", "./c.txt", "./.dot.txt"},
+ want: []string{"./", "./dir/", "./outer/", "./a.txt", "./b.txt", "./c.txt", "./.dot.txt"},
},
{
- name: "files/txt",
- p: PredictFiles("*.txt"),
- arg: "./dir/",
- want: []string{"./dir/"},
+ 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: "files/x",
- p: PredictFiles("x"),
- arg: "./dir/",
- want: []string{"./dir/", "./dir/x"},
+ name: "complete files inside dir when argList includes file name",
+ p: PredictFiles("*"),
+ argList: []string{"./dir/f", "./dir/foo"},
+ want: []string{"./dir/foo"},
},
{
- name: "files/*",
- p: PredictFiles("x*"),
- arg: "./dir/",
- want: []string{"./dir/", "./dir/x"},
+ name: "files/md",
+ p: PredictFiles("*.md"),
+ argList: []string{"", ".", "./"},
+ want: []string{"./", "./dir/", "./outer/", "./readme.md"},
},
{
- name: "files/md",
- p: PredictFiles("*.md"),
- want: []string{"./", "./dir/", "./readme.md"},
+ name: "dirs",
+ p: PredictDirs("*"),
+ argList: []string{"./dir/", "./di", "di", "dir", "dir/"},
+ want: []string{"./dir/"},
},
{
- name: "dirs",
- p: PredictDirs("*"),
- arg: "./dir/",
- want: []string{"./dir/"},
+ name: "predict anything in dir",
+ p: PredictFiles("*"),
+ argList: []string{"./dir", "dir", "./dir/", "./di"},
+ want: []string{"./dir/", "./dir/foo", "./dir/bar"},
},
{
- name: "dirs and files",
- p: PredictFiles("*"),
- arg: "./dir",
- want: []string{"./dir/", "./dir/x"},
+ name: "root directories",
+ p: PredictDirs("*"),
+ argList: []string{"", ".", "./"},
+ want: []string{"./", "./dir/", "./outer/"},
},
{
- name: "dirs",
- p: PredictDirs("*"),
- want: []string{"./", "./dir/"},
+ name: "nested directories",
+ p: PredictDirs("*.md"),
+ argList: []string{"ou", "./ou", "./outer", "./outer/"},
+ want: []string{"./outer/", "./outer/inner/"},
},
{
- name: "subdir",
- p: PredictFiles("*"),
- arg: "./dir/",
- want: []string{"./dir/", "./dir/x"},
+ name: "nested inner directory",
+ p: PredictFiles("*.md"),
+ argList: []string{"outer/i"},
+ want: []string{"./outer/inner/", "./outer/inner/readme.md"},
},
}
for _, tt := range tests {
- t.Run(tt.name+"?arg='"+tt.arg+"'", func(t *testing.T) {
- matches := tt.p.Predict(newArgs(strings.Split(tt.arg, " ")))
+ // 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(strings.Split(arg, " ")))
- sort.Strings(matches)
- sort.Strings(tt.want)
+ sort.Strings(matches)
+ sort.Strings(tt.want)
- got := strings.Join(matches, ",")
- want := strings.Join(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)
- }
- })
+ if got != want {
+ t.Errorf("failed %s\ngot = %s\nwant: %s", t.Name(), got, want)
+ }
+ })
+ }
}
}