github.com/miolini/go@v0.0.0-20160405192216-fca68c8cb408/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 {Flow{}, 52, 88}, 26 {Func{}, 96, 168}, 27 {Name{}, 52, 80}, 28 {Node{}, 92, 144}, 29 {Sym{}, 60, 112}, 30 {Type{}, 116, 184}, 31 } 32 33 for _, tt := range tests { 34 want := tt._32bit 35 if _64bit { 36 want = tt._64bit 37 } 38 got := reflect.TypeOf(tt.val).Size() 39 if want != got { 40 t.Errorf("unsafe.Sizeof(%T) = %d, want %d", tt.val, got, want) 41 } 42 } 43 }