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  }