|  | // Copyright 2018 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | // +build !nacl | 
|  |  | 
|  | package runtime_test | 
|  |  | 
|  | import ( | 
|  | "reflect" | 
|  | "runtime" | 
|  | "testing" | 
|  | "unsafe" | 
|  | ) | 
|  |  | 
|  | // Assert that the size of important structures do not change unexpectedly. | 
|  |  | 
|  | func TestSizeof(t *testing.T) { | 
|  | const _64bit = unsafe.Sizeof(uintptr(0)) == 8 | 
|  |  | 
|  | var tests = []struct { | 
|  | val    interface{} // type as a value | 
|  | _32bit uintptr     // size on 32bit platforms | 
|  | _64bit uintptr     // size on 64bit platforms | 
|  | }{ | 
|  | {runtime.G{}, 216, 376}, // g, but exported for testing | 
|  | } | 
|  |  | 
|  | for _, tt := range tests { | 
|  | want := tt._32bit | 
|  | if _64bit { | 
|  | want = tt._64bit | 
|  | } | 
|  | got := reflect.TypeOf(tt.val).Size() | 
|  | if want != got { | 
|  | t.Errorf("unsafe.Sizeof(%T) = %d, want %d", tt.val, got, want) | 
|  | } | 
|  | } | 
|  | } |