blob: 246cb56fd95c398ef2f973cee4599814dd19b1bb [file] [log] [blame]
Russ Coxd2cc9882012-02-16 23:50:37 -05001// run
Rob Pike126150d2008-06-06 13:28:03 -07002
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
Rob Pike83976e32012-02-19 14:28:53 +11007// Test simple functions.
Rob Pike126150d2008-06-06 13:28:03 -07008
9package main
10
11func assertequal(is, shouldbe int, msg string) {
12 if is != shouldbe {
Rob Pike4f61fc92010-09-04 10:36:13 +100013 print("assertion fail", msg, "\n")
14 panic(1)
Rob Pike126150d2008-06-06 13:28:03 -070015 }
16}
17
18func f1() {
19}
20
21func f2(a int) {
22}
23
24func f3(a, b int) int {
Russ Coxf2b5a072011-01-19 23:09:00 -050025 return a + b
Rob Pike126150d2008-06-06 13:28:03 -070026}
27
Russ Coxf2b5a072011-01-19 23:09:00 -050028func f4(a, b int, c float32) int {
Rob Pike4f61fc92010-09-04 10:36:13 +100029 return (a+b)/2 + int(c)
Rob Pike126150d2008-06-06 13:28:03 -070030}
31
32func f5(a int) int {
Rob Pike4f61fc92010-09-04 10:36:13 +100033 return 5
Rob Pike126150d2008-06-06 13:28:03 -070034}
35
36func f6(a int) (r int) {
Rob Pike4f61fc92010-09-04 10:36:13 +100037 return 6
Rob Pike126150d2008-06-06 13:28:03 -070038}
39
Russ Coxf2b5a072011-01-19 23:09:00 -050040func f7(a int) (x int, y float32) {
Rob Pike4f61fc92010-09-04 10:36:13 +100041 return 7, 7.0
Rob Pike126150d2008-06-06 13:28:03 -070042}
43
44
Russ Coxf2b5a072011-01-19 23:09:00 -050045func f8(a int) (x int, y float32) {
Rob Pike4f61fc92010-09-04 10:36:13 +100046 return 8, 8.0
Rob Pike126150d2008-06-06 13:28:03 -070047}
48
Russ Cox839a6842009-01-20 14:40:40 -080049type T struct {
Rob Pike4f61fc92010-09-04 10:36:13 +100050 x, y int
Rob Pike126150d2008-06-06 13:28:03 -070051}
52
Russ Coxf2b5a072011-01-19 23:09:00 -050053func (t *T) m10(a int, b float32) int {
54 return (t.x + a) * (t.y + int(b))
Rob Pike126150d2008-06-06 13:28:03 -070055}
56
57
Russ Coxf2b5a072011-01-19 23:09:00 -050058func f9(a int) (i int, f float32) {
Rob Pike4f61fc92010-09-04 10:36:13 +100059 i = 9
60 f = 9.0
61 return
Rob Pike6810f392008-07-08 12:22:21 -070062}
Rob Pike126150d2008-06-06 13:28:03 -070063
64
65func main() {
Rob Pike4f61fc92010-09-04 10:36:13 +100066 f1()
67 f2(1)
68 r3 := f3(1, 2)
69 assertequal(r3, 3, "3")
70 r4 := f4(0, 2, 3.0)
71 assertequal(r4, 4, "4")
72 r5 := f5(1)
73 assertequal(r5, 5, "5")
74 r6 := f6(1)
75 assertequal(r6, 6, "6")
76 r7, s7 := f7(1)
77 assertequal(r7, 7, "r7")
78 assertequal(int(s7), 7, "s7")
79 r8, s8 := f8(1)
80 assertequal(r8, 8, "r8")
81 assertequal(int(s8), 8, "s8")
82 r9, s9 := f9(1)
83 assertequal(r9, 9, "r9")
84 assertequal(int(s9), 9, "s9")
85 var t *T = new(T)
86 t.x = 1
87 t.y = 2
88 r10 := t.m10(1, 3.0)
89 assertequal(r10, 10, "10")
Rob Pike126150d2008-06-06 13:28:03 -070090}