github.com/twelsh-aw/go/src@v0.0.0-20230516233729-a56fe86a7c81/runtime/sizeof_test.go (about) 1 // Copyright 2018 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package runtime_test 6 7 import ( 8 "reflect" 9 "runtime" 10 "testing" 11 "unsafe" 12 ) 13 14 // Assert that the size of important structures do not change unexpectedly. 15 16 func TestSizeof(t *testing.T) { 17 const _64bit = unsafe.Sizeof(uintptr(0)) == 8 18 19 var tests = []struct { 20 val any // type as a value 21 _32bit uintptr // size on 32bit platforms 22 _64bit uintptr // size on 64bit platforms 23 }{ 24 {runtime.G{}, 248, 400}, // g, but exported for testing 25 {runtime.Sudog{}, 56, 88}, // sudog, but exported for testing 26 } 27 28 for _, tt := range tests { 29 want := tt._32bit 30 if _64bit { 31 want = tt._64bit 32 } 33 got := reflect.TypeOf(tt.val).Size() 34 if want != got { 35 t.Errorf("unsafe.Sizeof(%T) = %d, want %d", tt.val, got, want) 36 } 37 } 38 }