github.com/diamondburned/arikawa/v2@v2.1.0/bot/extras/infer/infer_test.go (about) 1 package infer 2 3 import ( 4 "testing" 5 6 "github.com/diamondburned/arikawa/v2/discord" 7 ) 8 9 type hasID struct { 10 ChannelID discord.ChannelID 11 } 12 13 type embedsID struct { 14 *hasID 15 *embedsID 16 } 17 18 type hasChannelInName struct { 19 ID discord.ChannelID 20 } 21 22 func TestReflectChannelID(t *testing.T) { 23 var s = &hasID{ 24 ChannelID: 69420, 25 } 26 27 t.Run("hasID", func(t *testing.T) { 28 if id := ChannelID(s); id != 69420 { 29 t.Fatal("unexpected channelID:", id) 30 } 31 }) 32 33 t.Run("embedsID", func(t *testing.T) { 34 var e = &embedsID{ 35 hasID: s, 36 } 37 38 if id := ChannelID(e); id != 69420 { 39 t.Fatal("unexpected channelID:", id) 40 } 41 }) 42 43 t.Run("hasChannelInName", func(t *testing.T) { 44 var s = &hasChannelInName{ 45 ID: 69420, 46 } 47 48 if id := ChannelID(s); id != 69420 { 49 t.Fatal("unexpected channelID:", id) 50 } 51 }) 52 } 53 54 func BenchmarkReflectChannelID_1Level(b *testing.B) { 55 var s = &hasID{ 56 ChannelID: 69420, 57 } 58 59 for i := 0; i < b.N; i++ { 60 if id := ChannelID(s); id != s.ChannelID { 61 b.Fatal("Unexpected ChannelID:", id) 62 } 63 } 64 } 65 66 func BenchmarkReflectChannelID_5Level(b *testing.B) { 67 var s = &embedsID{ 68 nil, 69 &embedsID{ 70 nil, 71 &embedsID{ 72 nil, 73 &embedsID{ 74 hasID: &hasID{ 75 ChannelID: 69420, 76 }, 77 }, 78 }, 79 }, 80 } 81 82 for i := 0; i < b.N; i++ { 83 if id := ChannelID(s); id != 69420 { 84 b.Fatal("Unexpected ChannelID:", id) 85 } 86 } 87 }