]> Cypherpunks.ru repositories - gostls13.git/blob - src/runtime/sizeof_test.go
[dev.link] all: merge branch 'master' into dev.link
[gostls13.git] / src / runtime / sizeof_test.go
1 // Copyright 2018 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 package runtime_test
6
7 import (
8         "reflect"
9         "runtime"
10         "testing"
11         "unsafe"
12 )
13
14 // Assert that the size of important structures do not change unexpectedly.
15
16 func TestSizeof(t *testing.T) {
17         const _64bit = unsafe.Sizeof(uintptr(0)) == 8
18
19         var tests = []struct {
20                 val    interface{} // type as a value
21                 _32bit uintptr     // size on 32bit platforms
22                 _64bit uintptr     // size on 64bit platforms
23         }{
24                 {runtime.G{}, 216, 376}, // g, but exported for testing
25         }
26
27         for _, tt := range tests {
28                 want := tt._32bit
29                 if _64bit {
30                         want = tt._64bit
31                 }
32                 got := reflect.TypeOf(tt.val).Size()
33                 if want != got {
34                         t.Errorf("unsafe.Sizeof(%T) = %d, want %d", tt.val, got, want)
35                 }
36         }
37 }