github.com/epfl-dcsl/gotee@v0.0.0-20200909122901-014b35f5e5e9/src/cmd/compile/internal/gc/sizeof_test.go (about) 1 // Copyright 2016 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 // +build !nacl 6 7 package gc 8 9 import ( 10 "reflect" 11 "testing" 12 "unsafe" 13 ) 14 15 // Assert that the size of important structures do not change unexpectedly. 16 17 func TestSizeof(t *testing.T) { 18 const _64bit = unsafe.Sizeof(uintptr(0)) == 8 19 20 var tests = []struct { 21 val interface{} // type as a value 22 _32bit uintptr // size on 32bit platforms 23 _64bit uintptr // size on 64bit platforms 24 }{ 25 {Func{}, 132, 232}, 26 {Name{}, 36, 56}, 27 {Param{}, 28, 56}, 28 {Node{}, 76, 128}, 29 } 30 31 for _, tt := range tests { 32 want := tt._32bit 33 if _64bit { 34 want = tt._64bit 35 } 36 got := reflect.TypeOf(tt.val).Size() 37 if want != got { 38 t.Errorf("unsafe.Sizeof(%T) = %d, want %d", tt.val, got, want) 39 } 40 } 41 }