]> Cypherpunks.ru repositories - gostls13.git/blob - test/bigalg.go
fix "declared and not used" in tests;
[gostls13.git] / test / bigalg.go
1 // $G $D/$F.go && $L $F.$A && ./$A.out
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 package main
8
9 import (
10         "fmt";
11         "os";
12 )
13
14 type T struct {
15         a float64;
16         b int64;
17         c string;
18         d byte;
19 }
20
21 var a = []int{ 1, 2, 3 }
22 var NIL []int;
23
24 func arraycmptest() {
25         if NIL != nil {
26                 println("fail1:", NIL, "!= nil");
27         }
28         if nil != NIL {
29                 println("fail2: nil !=", NIL);
30         }
31         if a == nil || nil == a {
32                 println("fail3:", a, "== nil");
33         }
34 }
35
36 func SameArray(a, b []int) bool {
37         if len(a) != len(b) || cap(a) != cap(b) {
38                 return false;
39         }
40         if len(a) > 0 && &a[0] != &b[0] {
41                 return false;
42         }
43         return true;
44 }
45
46 var t = T{1.5, 123, "hello", 255}
47 var mt = make(map[int]T)
48 var ma = make(map[int][]int)
49
50 func maptest() {
51         mt[0] = t;
52         t1 := mt[0];
53         if t1.a != t.a || t1.b != t.b || t1.c != t.c || t1.d != t.d {
54                 println("fail: map val struct", t1.a, t1.b, t1.c, t1.d);
55         }
56
57         ma[1] = a;
58         a1 := ma[1];
59         if !SameArray(a, a1) {
60                 println("fail: map val array", a, a1);
61         }
62 }
63
64 var ct = make(chan T)
65 var ca = make(chan []int)
66
67 func send() {
68         ct <- t;
69         ca <- a;
70 }
71
72 func chantest() {
73         go send();
74
75         t1 := <-ct;
76         if t1.a != t.a || t1.b != t.b || t1.c != t.c || t1.d != t.d {
77                 println("fail: map val struct", t1.a, t1.b, t1.c, t1.d);
78         }
79
80         a1 := <-ca;
81         if !SameArray(a, a1) {
82                 println("fail: map val array", a, a1);
83         }
84 }
85
86 type E struct { }
87 var e E
88
89 func interfacetest() {
90         var i interface{};
91
92         i = a;
93         a1 := i.([]int);
94         if !SameArray(a, a1) {
95                 println("interface <-> []int", a, a1);
96         }
97         pa := new([]int);
98         *pa = a;
99         i = pa;
100         a1 = *i.(*[]int);
101         if !SameArray(a, a1) {
102                 println("interface <-> *[]int", a, a1);
103         }
104
105         i = t;
106         t1 := i.(T);
107         if t1.a != t.a || t1.b != t.b || t1.c != t.c || t1.d != t.d {
108                 println("interface <-> struct", t1.a, t1.b, t1.c, t1.d);
109         }
110
111         i = e;
112         e1 := i.(E);
113         // nothing to check; just verify it doesn't crash
114         _ = e1;
115 }
116
117 func main() {
118         arraycmptest();
119         maptest();
120         chantest();
121         interfacetest();
122 }