lots of new tests

SVN=121464
diff --git a/test/if.go b/test/if.go
new file mode 100644
index 0000000..2018f70
--- /dev/null
+++ b/test/if.go
@@ -0,0 +1,94 @@
+// $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
+
+func assertequal(is, shouldbe int, msg string) {
+	if is != shouldbe {
+		print "assertion fail", msg, "\n";
+		panic 1;
+	}
+}
+
+func main() {
+	i5 := 5;
+	i7 := 7;
+
+	var count int;
+
+	count = 0;
+	if true {
+		count = count + 1;	
+	}
+	assertequal(count, 1, "if true");
+
+	count = 0;
+	if false {
+		count = count + 1;	
+	}
+	assertequal(count, 0, "if false");
+
+	count = 0;
+	if one := 1; true {
+		count = count + one;	
+	}
+	assertequal(count, 1, "if true one");
+
+	count = 0;
+	if one := 1; false {
+		count = count + 1;	
+	}
+	assertequal(count, 0, "if false one");
+
+	count = 0;
+	if {
+		count = count + 1;	
+	}
+	assertequal(count, 1, "if empty");
+
+	count = 0;
+	if one := 1; {
+		count = count + one;	
+	}
+	assertequal(count, 1, "if empty one");
+
+	count = 0;
+	if i5 < i7 {
+		count = count + 1;	
+	}
+	assertequal(count, 1, "if cond");
+
+	count = 0;
+	if true {
+		count = count + 1;	
+	} else
+		count = count - 1;
+	assertequal(count, 1, "if else true");
+
+	count = 0;
+	if false {
+		count = count + 1;	
+	} else
+		count = count - 1;
+	assertequal(count, -1, "if else false");
+
+	count = 0;
+	if t:=1; false {
+		count = count + 1;
+		t := 7;	
+	} else
+		count = count - t;
+	assertequal(count, -1, "if else false var");
+
+	count = 0;
+	t := 1;
+	if false {
+		count = count + 1;
+		t := 7;	
+	} else
+		count = count - t;
+	assertequal(count, -1, "if else false var outside");
+}