diff options
| author | Eyal Posener <[email protected]> | 2017-05-15 22:44:19 +0300 |
|---|---|---|
| committer | Eyal Posener <[email protected]> | 2017-05-15 22:50:05 +0300 |
| commit | ff8cd4ed39884bc6774087809e1593f36c4b90e3 (patch) | |
| tree | 78a5fbc1810cfd44497c9c2c0ad9036452dfaef0 /gocomplete/tests_test.go | |
| parent | e00c0546bc15809f7ba7c4e7a17b6be3aac56ccf (diff) | |
gocomplete: run only runnable go files
when typing 'go run', the completion will complete only go files
which are in main package and have a main function.
Diffstat (limited to 'gocomplete/tests_test.go')
| -rw-r--r-- | gocomplete/tests_test.go | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/gocomplete/tests_test.go b/gocomplete/tests_test.go new file mode 100644 index 0000000..4eb2308 --- /dev/null +++ b/gocomplete/tests_test.go @@ -0,0 +1,84 @@ +package main + +import ( + "testing" + + "github.com/posener/complete" +) + +func TestPredictions(t *testing.T) { + t.Parallel() + + tests := []struct { + name string + predictor complete.Predictor + last string + completion []string + }{ + { + name: "predict tests ok", + predictor: predictTest, + completion: []string{"TestPredictions", "Example"}, + }, + { + name: "predict tests not found", + predictor: predictTest, + last: "X", + }, + { + name: "predict benchmark ok", + predictor: predictBenchmark, + completion: []string{"BenchmarkFake"}, + }, + { + name: "predict benchmarks not found", + predictor: predictBenchmark, + last: "X", + }, + { + name: "predict packages ok", + predictor: complete.PredictFunc(predictPackages), + completion: []string{"./"}, + }, + { + name: "predict packages not found", + predictor: complete.PredictFunc(predictPackages), + last: "X", + }, + { + name: "predict runnable ok", + predictor: complete.PredictFunc(predictRunnableFiles), + completion: []string{"./complete.go"}, + }, + { + name: "predict runnable not found", + predictor: complete.PredictFunc(predictRunnableFiles), + last: "X", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := complete.Args{Last: tt.last} + got := tt.predictor.Predict(a) + if want := tt.completion; !equal(got, want) { + t.Errorf("Failed %s: completion = %q, want %q", t.Name(), got, want) + } + }) + } +} + +func BenchmarkFake(b *testing.B) {} +func Example() {} + +func equal(s1, s2 []string) bool { + if len(s1) != len(s2) { + return false + } + for i := range s1 { + if s1[i] != s2[i] { + return false + } + } + return true +} |
