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