]> Cypherpunks.ru repositories - gostls13.git/blob - test/initialize.go
test: commentary for [h-m]*.go
[gostls13.git] / test / initialize.go
1 // run
2
3 // Copyright 2009 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
6
7 // Test initialization of package-level variables.
8
9 package main
10
11 import "fmt"
12 import "reflect"
13
14 type S struct {
15         A, B, C, X, Y, Z int
16 }
17
18 type T struct {
19         S
20 }
21
22 var a1 = S { 0, 0, 0, 1, 2, 3 }
23 var b1 = S { X: 1, Z: 3, Y: 2 }
24
25 var a2 = S { 0, 0, 0, 0, 0, 0, }
26 var b2 = S { }
27
28 var a3 = T { S { 1, 2, 3, 0, 0, 0, } }
29 var b3 = T { S: S{ A: 1, B: 2, C: 3 } }
30
31 var a4 = &[16]byte { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, }
32 var b4 = &[16]byte { 4: 1, 1, 1, 1, 12: 1, 1, }
33
34 var a5 = &[16]byte { 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, }
35 var b5 = &[16]byte { 1, 4: 1, 1, 1, 1, 12: 1, 1, }
36
37 var a6 = &[16]byte { 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, }
38 var b6 = &[...]byte { 1, 4: 1, 1, 1, 1, 12: 1, 1, 0, 0,}
39
40 type Same struct {
41         a, b interface{}
42 }
43
44 var same = []Same {
45         Same{ a1, b1 },
46         Same{ a2, b2 },
47         Same{ a3, b3 },
48         Same{ a4, b4 },
49         Same{ a5, b5 },
50         Same{ a6, b6 },
51 }
52
53 func main() {
54         ok := true
55         for _, s := range same {
56                 if !reflect.DeepEqual(s.a, s.b) {
57                         ok = false
58                         fmt.Printf("not same: %v and %v\n", s.a, s.b)
59                 }
60         }
61         if !ok {
62                 fmt.Println("BUG: test/initialize")
63         }
64 }