]> Cypherpunks.ru repositories - gostls13.git/blob - src/runtime/sizeof_test.go
runtime, time: gofmt
[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                 {runtime.Sudog{}, 56, 88}, // sudog, but exported for testing
26         }
27
28         for _, tt := range tests {
29                 want := tt._32bit
30                 if _64bit {
31                         want = tt._64bit
32                 }
33                 got := reflect.TypeOf(tt.val).Size()
34                 if want != got {
35                         t.Errorf("unsafe.Sizeof(%T) = %d, want %d", tt.val, got, want)
36                 }
37         }
38 }