| package types |
| |
| import ( |
| "reflect" |
| "testing" |
| ) |
| |
| func TestScanFully(t *testing.T) { |
| for _, tt := range []struct { |
| val string |
| verb byte |
| res interface{} |
| ok bool |
| }{ |
| {"a", 'v', int(0), false}, |
| {"0x", 'v', int(0), true}, |
| {"0x", 'd', int(0), false}, |
| } { |
| d := reflect.New(reflect.TypeOf(tt.res)).Interface() |
| err := ScanFully(d, tt.val, tt.verb) |
| switch { |
| case tt.ok && err != nil: |
| t.Errorf("ScanFully(%T, %q, '%c'): want ok, got error %v", |
| d, tt.val, tt.verb, err) |
| case !tt.ok && err == nil: |
| t.Errorf("ScanFully(%T, %q, '%c'): want error, got %v", |
| d, tt.val, tt.verb, elem(d)) |
| case tt.ok && err == nil && !reflect.DeepEqual(tt.res, elem(d)): |
| t.Errorf("ScanFully(%T, %q, '%c'): want %v, got %v", |
| d, tt.val, tt.verb, tt.res, elem(d)) |
| default: |
| t.Logf("ScanFully(%T, %q, '%c') = %v; *ptr==%v", |
| d, tt.val, tt.verb, err, elem(d)) |
| } |
| } |
| } |