1package types
2
3import (
4	"reflect"
5	"testing"
6)
7
8func TestScanFully(t *testing.T) {
9	for _, tt := range []struct {
10		val  string
11		verb byte
12		res  interface{}
13		ok   bool
14	}{
15		{"a", 'v', int(0), false},
16		{"0x", 'v', int(0), true},
17		{"0x", 'd', int(0), false},
18	} {
19		d := reflect.New(reflect.TypeOf(tt.res)).Interface()
20		err := ScanFully(d, tt.val, tt.verb)
21		switch {
22		case tt.ok && err != nil:
23			t.Errorf("ScanFully(%T, %q, '%c'): want ok, got error %v",
24				d, tt.val, tt.verb, err)
25		case !tt.ok && err == nil:
26			t.Errorf("ScanFully(%T, %q, '%c'): want error, got %v",
27				d, tt.val, tt.verb, elem(d))
28		case tt.ok && err == nil && !reflect.DeepEqual(tt.res, elem(d)):
29			t.Errorf("ScanFully(%T, %q, '%c'): want %v, got %v",
30				d, tt.val, tt.verb, tt.res, elem(d))
31		default:
32			t.Logf("ScanFully(%T, %q, '%c') = %v; *ptr==%v",
33				d, tt.val, tt.verb, err, elem(d))
34		}
35	}
36}
37