| // Copyright 2023 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 reflect_test | |
| import ( | |
| "reflect" | |
| "testing" | |
| ) | |
| func TestTypeFor(t *testing.T) { | |
| type ( | |
| mystring string | |
| myiface interface{} | |
| ) | |
| testcases := []struct { | |
| wantFrom any | |
| got reflect.Type | |
| }{ | |
| {new(int), reflect.TypeFor[int]()}, | |
| {new(int64), reflect.TypeFor[int64]()}, | |
| {new(string), reflect.TypeFor[string]()}, | |
| {new(mystring), reflect.TypeFor[mystring]()}, | |
| {new(any), reflect.TypeFor[any]()}, | |
| {new(myiface), reflect.TypeFor[myiface]()}, | |
| } | |
| for _, tc := range testcases { | |
| want := reflect.ValueOf(tc.wantFrom).Elem().Type() | |
| if want != tc.got { | |
| t.Errorf("unexpected reflect.Type: got %v; want %v", tc.got, want) | |
| } | |
| } | |
| } |