simpbool.go 1.76 KB
Newer Older
Rob Pike's avatar
Rob Pike committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
// $G $D/$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

type s struct
{
	a	bool;
	b	bool;
}

func
main()
{
	var a,b bool;

	a = true;
	b = false;

Rob Pike's avatar
Rob Pike committed
23 24 25 26
	if !a { panic(1); }
	if b { panic(2); }
	if !!!a { panic(3); }
	if !!b { panic(4); }
Rob Pike's avatar
Rob Pike committed
27 28

	a = !b;
Rob Pike's avatar
Rob Pike committed
29 30
	if !a { panic(5); }
	if !!!a { panic(6); }
Rob Pike's avatar
Rob Pike committed
31 32

	var x *s;
Russ Cox's avatar
Russ Cox committed
33
	x = new(s);
Rob Pike's avatar
Rob Pike committed
34 35 36
	x.a = true;
	x.b = false;

Rob Pike's avatar
Rob Pike committed
37 38 39 40
	if !x.a { panic(7); }
	if x.b { panic(8); }
	if !!!x.a { panic(9); }
	if !!x.b { panic(10); }
Rob Pike's avatar
Rob Pike committed
41 42

	x.a = !x.b;
Rob Pike's avatar
Rob Pike committed
43 44
	if !x.a { panic(11); }
	if !!!x.a { panic(12); }
Rob Pike's avatar
Rob Pike committed
45 46 47 48 49 50

	/*
	 * test &&
	 */
	a = true;
	b = true;
Rob Pike's avatar
Rob Pike committed
51 52 53 54
	if !(a && b) { panic(21); }
	if a && !b { panic(22); }
	if !a && b { panic(23); }
	if !a && !b { panic(24); }
Rob Pike's avatar
Rob Pike committed
55 56 57

	a = false;
	b = true;
Rob Pike's avatar
Rob Pike committed
58 59 60 61
	if !(!a && b) { panic(31); }
	if !a && !b { panic(32); }
	if a && b { panic(33); }
	if a && !b { panic(34); }
Rob Pike's avatar
Rob Pike committed
62 63 64

	a = true;
	b = false;
Rob Pike's avatar
Rob Pike committed
65 66 67 68
	if !(a && !b) { panic(41); }
	if a && b { panic(41); }
	if !a && !b { panic(41); }
	if !a && b { panic(44); }
Rob Pike's avatar
Rob Pike committed
69 70 71

	a = false;
	b = false;
Rob Pike's avatar
Rob Pike committed
72 73 74 75
	if !(!a && !b) { panic(51); }
	if !a && b { panic(52); }
	if a && !b { panic(53); }
	if a && b { panic(54); }
Rob Pike's avatar
Rob Pike committed
76 77 78 79 80 81

	/*
	 * test ||
	 */
	a = true;
	b = true;
Rob Pike's avatar
Rob Pike committed
82 83 84 85
	if !(a || b) { panic(61); }
	if !(a || !b) { panic(62); }
	if !(!a || b) { panic(63); }
	if !a || !b { panic(64); }
Rob Pike's avatar
Rob Pike committed
86 87 88

	a = false;
	b = true;
Rob Pike's avatar
Rob Pike committed
89 90 91 92
	if !(!a || b) { panic(71); }
	if !(!a || !b) { panic(72); }
	if !(a || b) { panic(73); }
	if a || !b { panic(74); }
Rob Pike's avatar
Rob Pike committed
93 94 95

	a = true;
	b = false;
Rob Pike's avatar
Rob Pike committed
96 97 98 99
	if !(a || !b) { panic(81); }
	if !(a || b) { panic(82); }
	if !(!a || !b) { panic(83); }
	if !a || b { panic(84); }
Rob Pike's avatar
Rob Pike committed
100 101 102

	a = false;
	b = false;
Rob Pike's avatar
Rob Pike committed
103 104 105 106
	if !(!a || !b) { panic(91); }
	if !(!a || b) { panic(92); }
	if !(a || !b) { panic(93); }
	if a || b { panic(94); }
Rob Pike's avatar
Rob Pike committed
107
}