| // run |
| |
| // Copyright 2010 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Test simple arithmetic and assignment for complex numbers. |
| |
| package main |
| |
| const ( |
| R = 5 |
| I = 6i |
| |
| C1 = R + I // ADD(5,6) |
| ) |
| |
| func main() { |
| var b bool |
| |
| // constants |
| b = (5 + 6i) == C1 |
| if !b { |
| println("const bool 1", b) |
| panic("fail") |
| } |
| |
| b = (5 + 6i) != C1 |
| if b { |
| println("const bool 2", b) |
| panic("fail") |
| } |
| |
| b = C1 == (5 + 6i) |
| if !b { |
| println("const bool 3", b) |
| panic("fail") |
| } |
| |
| b = C1 != (5 + 6i) |
| if b { |
| println("const bool 4", b) |
| panic("fail") |
| } |
| |
| // vars passed through parameters |
| booltest(5+6i, true) |
| booltest(5+7i, false) |
| booltest(6+6i, false) |
| booltest(6+9i, false) |
| } |
| |
| func booltest(a complex64, r bool) { |
| var b bool |
| |
| b = a == C1 |
| if b != r { |
| println("param bool 1", a, b, r) |
| panic("fail") |
| } |
| |
| b = a != C1 |
| if b == r { |
| println("param bool 2", a, b, r) |
| panic("fail") |
| } |
| |
| b = C1 == a |
| if b != r { |
| println("param bool 3", a, b, r) |
| panic("fail") |
| } |
| |
| b = C1 != a |
| if b == r { |
| println("param bool 4", a, b, r) |
| panic("fail") |
| } |
| |
| if r { |
| if a != C1 { |
| println("param bool 5", a, b, r) |
| panic("fail") |
| } |
| if C1 != a { |
| println("param bool 6", a, b, r) |
| panic("fail") |
| } |
| } else { |
| if a == C1 { |
| println("param bool 6", a, b, r) |
| panic("fail") |
| } |
| if C1 == a { |
| println("param bool 7", a, b, r) |
| panic("fail") |
| } |
| } |
| } |