// $G $F.go && $L $F.$A && ./$A.out // Copyright 2009 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. package main var a,b,c,d,e,f,g,h,i int; func printit() { println(a,b,c,d,e,f,g,h,i); } func testit(permuteok bool) bool { if a+b+c+d+e+f+g+h+i != 45 { print("sum does not add to 45\n"); printit(); return false; } return permuteok || a == 1 && b == 2 && c == 3 && d == 4 && e == 5 && f == 6 && g == 7 && h == 8 && i == 9; } func swap(x, y int) (u, v int) { return y, x } func main() { a = 1; b = 2; c = 3; d = 4; e = 5; f = 6; g = 7; h = 8; i = 9; if !testit(false) { panic("init val\n"); } for z:=0; z<100; z++ { a,b,c,d, e,f,g,h,i = b,c,d,a, i,e,f,g,h; if !testit(z%20 != 19) { print("on ", z, "th iteration\n"); printit(); panic(); } } if !testit(false) { print("final val\n"); printit(); panic(); } a, b = swap(1, 2); if a != 2 || b != 1 { panic("bad swap"); } a, b = swap(swap(a, b)); if a != 2 || b != 1 { panic("bad swap"); } }