github.com/cilium/ebpf@v0.15.1-0.20240517100537-8079b37aa138/internal/sysenc/layout_test.go (about)

     1  package sysenc
     2  
     3  import (
     4  	"fmt"
     5  	"reflect"
     6  	"testing"
     7  
     8  	"github.com/go-quicktest/qt"
     9  )
    10  
    11  func TestHasUnexportedFields(t *testing.T) {
    12  	for _, test := range []struct {
    13  		value  any
    14  		result bool
    15  	}{
    16  		{struct{ A any }{}, false},
    17  		{(*struct{ A any })(nil), false},
    18  		{([]struct{ A any })(nil), false},
    19  		{[1]struct{ A any }{}, false},
    20  		{struct{ _ any }{}, false},
    21  		{struct{ _ struct{ a any } }{}, true},
    22  		{(*struct{ _ any })(nil), false},
    23  		{([]struct{ _ any })(nil), false},
    24  		{[1]struct{ _ any }{}, false},
    25  		{struct{ a any }{}, true},
    26  		{(*struct{ a any })(nil), true},
    27  		{([]struct{ a any })(nil), true},
    28  		{[1]struct{ a any }{}, true},
    29  		{(*struct{ A []struct{ a any } })(nil), true},
    30  		{(*struct{ A [1]struct{ a any } })(nil), true},
    31  	} {
    32  		t.Run(fmt.Sprintf("%T", test.value), func(t *testing.T) {
    33  			have := hasUnexportedFields(reflect.TypeOf(test.value))
    34  			qt.Assert(t, qt.Equals(have, test.result))
    35  		})
    36  	}
    37  }