Home | History | Annotate | Download | only in test
      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 }
     65