Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201105173854-bc9fc8d8c4bc / internal / lsp / source / completion / printf_test.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/internal/lsp/source/completion/printf_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201105173854-bc9fc8d8c4bc/internal/lsp/source/completion/printf_test.go
new file mode 100644 (file)
index 0000000..19d295b
--- /dev/null
@@ -0,0 +1,72 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package completion
+
+import (
+       "fmt"
+       "testing"
+)
+
+func TestFormatOperandKind(t *testing.T) {
+       cases := []struct {
+               f    string
+               idx  int
+               kind objKind
+       }{
+               {"", 1, kindAny},
+               {"%", 1, kindAny},
+               {"%%%", 1, kindAny},
+               {"%[1", 1, kindAny},
+               {"%[?%s", 2, kindAny},
+               {"%[abc]v", 1, kindAny},
+
+               {"%v", 1, kindAny},
+               {"%T", 1, kindAny},
+               {"%t", 1, kindBool},
+               {"%d", 1, kindInt},
+               {"%c", 1, kindInt},
+               {"%o", 1, kindInt},
+               {"%O", 1, kindInt},
+               {"%U", 1, kindInt},
+               {"%e", 1, kindFloat | kindComplex},
+               {"%E", 1, kindFloat | kindComplex},
+               {"%f", 1, kindFloat | kindComplex},
+               {"%F", 1, kindFloat | kindComplex},
+               {"%g", 1, kindFloat | kindComplex},
+               {"%G", 1, kindFloat | kindComplex},
+               {"%b", 1, kindInt | kindFloat | kindComplex | kindBytes},
+               {"%q", 1, kindString | kindBytes | kindStringer | kindError},
+               {"%s", 1, kindString | kindBytes | kindStringer | kindError},
+               {"%x", 1, kindString | kindBytes | kindInt | kindFloat | kindComplex},
+               {"%X", 1, kindString | kindBytes | kindInt | kindFloat | kindComplex},
+               {"%p", 1, kindPtr | kindSlice},
+               {"%w", 1, kindError},
+
+               {"%1.2f", 1, kindFloat | kindComplex},
+               {"%*f", 1, kindInt},
+               {"%*f", 2, kindFloat | kindComplex},
+               {"%*.*f", 1, kindInt},
+               {"%*.*f", 2, kindInt},
+               {"%*.*f", 3, kindFloat | kindComplex},
+               {"%[3]*.[2]*[1]f", 1, kindFloat | kindComplex},
+               {"%[3]*.[2]*[1]f", 2, kindInt},
+               {"%[3]*.[2]*[1]f", 3, kindInt},
+
+               {"foo %% %d", 1, kindInt},
+               {"%#-12.34f", 1, kindFloat | kindComplex},
+               {"% d", 1, kindInt},
+
+               {"%s %[1]X %d", 1, kindString | kindBytes},
+               {"%s %[1]X %d", 2, kindInt},
+       }
+
+       for _, c := range cases {
+               t.Run(fmt.Sprintf("%q#%d", c.f, c.idx), func(t *testing.T) {
+                       if got := formatOperandKind(c.f, c.idx); got != c.kind {
+                               t.Errorf("expected %d (%[1]b), got %d (%[2]b)", c.kind, got)
+                       }
+               })
+       }
+}