1// run
2
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
7// Test basic operations on bool.
8
9package main
10
11type s struct {
12	a	bool;
13	b	bool;
14}
15
16func
17main() {
18	var a,b bool;
19
20	a = true;
21	b = false;
22
23	if !a { panic(1); }
24	if b { panic(2); }
25	if !!!a { panic(3); }
26	if !!b { panic(4); }
27
28	a = !b;
29	if !a { panic(5); }
30	if !!!a { panic(6); }
31
32	var x *s;
33	x = new(s);
34	x.a = true;
35	x.b = false;
36
37	if !x.a { panic(7); }
38	if x.b { panic(8); }
39	if !!!x.a { panic(9); }
40	if !!x.b { panic(10); }
41
42	x.a = !x.b;
43	if !x.a { panic(11); }
44	if !!!x.a { panic(12); }
45
46	/*
47	 * test &&
48	 */
49	a = true;
50	b = true;
51	if !(a && b) { panic(21); }
52	if a && !b { panic(22); }
53	if !a && b { panic(23); }
54	if !a && !b { panic(24); }
55
56	a = false;
57	b = true;
58	if !(!a && b) { panic(31); }
59	if !a && !b { panic(32); }
60	if a && b { panic(33); }
61	if a && !b { panic(34); }
62
63	a = true;
64	b = false;
65	if !(a && !b) { panic(41); }
66	if a && b { panic(41); }
67	if !a && !b { panic(41); }
68	if !a && b { panic(44); }
69
70	a = false;
71	b = false;
72	if !(!a && !b) { panic(51); }
73	if !a && b { panic(52); }
74	if a && !b { panic(53); }
75	if a && b { panic(54); }
76
77	/*
78	 * test ||
79	 */
80	a = true;
81	b = true;
82	if !(a || b) { panic(61); }
83	if !(a || !b) { panic(62); }
84	if !(!a || b) { panic(63); }
85	if !a || !b { panic(64); }
86
87	a = false;
88	b = true;
89	if !(!a || b) { panic(71); }
90	if !(!a || !b) { panic(72); }
91	if !(a || b) { panic(73); }
92	if a || !b { panic(74); }
93
94	a = true;
95	b = false;
96	if !(a || !b) { panic(81); }
97	if !(a || b) { panic(82); }
98	if !(!a || !b) { panic(83); }
99	if !a || b { panic(84); }
100
101	a = false;
102	b = false;
103	if !(!a || !b) { panic(91); }
104	if !(!a || b) { panic(92); }
105	if !(a || !b) { panic(93); }
106	if a || b { panic(94); }
107}
108