summaryrefslogtreecommitdiff
path: root/gocomplete/tests_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'gocomplete/tests_test.go')
-rw-r--r--gocomplete/tests_test.go84
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
+}