// 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 | kindMap | kindFunc | kindInterface},
		{"%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)
			}
		})
	}
}
