Home | History | Annotate | Download | only in gc
      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 }
     42