Home | History | Annotate | Download | only in obj
      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 obj
      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 		{Addr{}, 32, 48},
     26 		{LSym{}, 56, 104},
     27 		{Prog{}, 132, 200},
     28 	}
     29 
     30 	for _, tt := range tests {
     31 		want := tt._32bit
     32 		if _64bit {
     33 			want = tt._64bit
     34 		}
     35 		got := reflect.TypeOf(tt.val).Size()
     36 		if want != got {
     37 			t.Errorf("unsafe.Sizeof(%T) = %d, want %d", tt.val, got, want)
     38 		}
     39 	}
     40 }
     41