1// run
2
3// Copyright 2010 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 simple arithmetic and assignment for complex numbers.
8
9package main
10
11const (
12	R = 5
13	I = 6i
14
15	C1 = R + I // ADD(5,6)
16)
17
18func main() {
19	var b bool
20
21	// constants
22	b = (5 + 6i) == C1
23	if !b {
24		println("const bool 1", b)
25		panic("fail")
26	}
27
28	b = (5 + 6i) != C1
29	if b {
30		println("const bool 2", b)
31		panic("fail")
32	}
33
34	b = C1 == (5 + 6i)
35	if !b {
36		println("const bool 3", b)
37		panic("fail")
38	}
39
40	b = C1 != (5 + 6i)
41	if b {
42		println("const bool 4", b)
43		panic("fail")
44	}
45
46	// vars passed through parameters
47	booltest(5+6i, true)
48	booltest(5+7i, false)
49	booltest(6+6i, false)
50	booltest(6+9i, false)
51}
52
53func booltest(a complex64, r bool) {
54	var b bool
55
56	b = a == C1
57	if b != r {
58		println("param bool 1", a, b, r)
59		panic("fail")
60	}
61
62	b = a != C1
63	if b == r {
64		println("param bool 2", a, b, r)
65		panic("fail")
66	}
67
68	b = C1 == a
69	if b != r {
70		println("param bool 3", a, b, r)
71		panic("fail")
72	}
73
74	b = C1 != a
75	if b == r {
76		println("param bool 4", a, b, r)
77		panic("fail")
78	}
79
80	if r {
81		if a != C1 {
82			println("param bool 5", a, b, r)
83			panic("fail")
84		}
85		if C1 != a {
86			println("param bool 6", a, b, r)
87			panic("fail")
88		}
89	} else {
90		if a == C1 {
91			println("param bool 6", a, b, r)
92			panic("fail")
93		}
94		if C1 == a {
95			println("param bool 7", a, b, r)
96			panic("fail")
97		}
98	}
99}
100