]> Cypherpunks.ru repositories - gostls13.git/blob - test/func.go
- fixed a few tests and added 3 incorrectly succeeding tests
[gostls13.git] / test / func.go
1 // $G $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
8 package main
9
10 func assertequal(is, shouldbe int, msg string) {
11         if is != shouldbe {
12                 print "assertion fail", msg, "\n";
13                 panic 1;
14         }
15 }
16
17 func f1() {
18 }
19
20 func f2(a int) {
21 }
22
23 func f3(a, b int) int {
24         return a+b;
25 }
26
27 func f4(a, b int, c float) int {
28         return (a+b)/2 + int(c);
29 }
30
31 func f5(a int) int {
32         return 5;
33 }
34
35 func f6(a int) (r int) {
36         return 6;
37 }
38
39 func f7(a int) (x int, y float) {
40         return 7, 7.0;
41 }
42
43
44 func f8(a int) (x int, y float) {
45         return 8, 8.0;
46 }
47
48 type T struct {
49         x, y int;
50 }
51
52 func (t *T) m10(a int, b float) int {
53         return (t.x+a) * (t.y+int(b));
54 }
55
56
57 //BUG func f9(a int) (i int, f float) {  // multiple returns not ready yet
58 // BUG funny return value
59 //      var i float = 9;
60 //      var f float = 9.0;
61 //      return i, f;
62 // return
63 // }
64
65
66 func main() {
67         f1();
68         f2(1);
69         r3 := f3(1, 2);
70         assertequal(r3, 3, "3");
71         r4 := f4(0, 2, 3.0);
72         assertequal(r4, 4, "4");
73         r5 := f5(1);
74         assertequal(r5, 5, "5");
75         r6 := f6(1);
76         assertequal(r6, 6, "6");
77         var r7 int;
78         var s7 float;
79         //BUG r7, s7 = f7(1);
80         //BUG assertequal(r7, 7, "r7");
81         //BUG assertequal(int(s7), 7, "s7");
82         var r8 int;
83         var s8 float;
84         //BUG r8, s8 = f8(1);
85         //BUG assertequal(r8, 8, "r8");
86         //BUG assertequal(int(s8), 8, "s8");
87         var r9 int;
88         var s9 float;
89         //BUG r9, s9 = f9(1);
90         //BUG assertequal(r9, 9, "r9");
91         //BUG assertequal(int(s9), 9, "s9");
92         var t *T = new(T);
93         t.x = 1;
94         t.y = 2;
95         r10 := t.m10(1, 3.0);
96         assertequal(r10, 10, "10");
97 }