boolean_arithmetic.js revision 850:c61d579dd5a8
1/*
2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/**
25 * test arithmetic operations on boolean variables
26 *
27 * @test
28 * @run
29 */
30
31function printOp(text, value) {
32    print(text + value);
33}
34
35(function () {
36var t = true;
37var f = false;
38
39print("+")
40printOp("f, f: ", (f + f))
41printOp("f, t: ", (f + t))
42printOp("t, f: ", (t + f))
43printOp("t, t: ", (t + t))
44
45print("-")
46printOp("f, f: ", (f - f))
47printOp("f, t: ", (f - t))
48printOp("t, f: ", (t - f))
49printOp("t, t: ", (t - t))
50
51print("*")
52printOp("f, f: ", (f * f))
53printOp("f, t: ", (f * t))
54printOp("t, f: ", (t * f))
55printOp("t, t: ", (t * t))
56
57print("/")
58printOp("f, f: ", (f / f))
59printOp("f, t: ", (f / t))
60printOp("t, f: ", (t / f))
61printOp("t, t: ", (t / t))
62
63print("<<")
64printOp("f, f: ", (f << f))
65printOp("f, t: ", (f << t))
66printOp("t, f: ", (t << f))
67printOp("t, t: ", (t << t))
68
69print(">>")
70printOp("f, f: ", (f >> f))
71printOp("f, t: ", (f >> t))
72printOp("t, f: ", (t >> f))
73printOp("t, t: ", (t >> t))
74
75print(">>>")
76printOp("f, f: ", (f >>> f))
77printOp("f, t: ", (f >>> t))
78printOp("t, f: ", (t >>> f))
79printOp("t, t: ", (t >>> t))
80
81print("|")
82printOp("f, f: ", (f | f))
83printOp("f, t: ", (f | t))
84printOp("t, f: ", (t | f))
85printOp("t, t: ", (t | t))
86
87print("&")
88printOp("f, f: ", (f & f))
89printOp("f, t: ", (f & t))
90printOp("t, f: ", (t & f))
91printOp("t, t: ", (t & t))
92
93print("^")
94printOp("f, f: ", (f ^ f))
95printOp("f, t: ", (f ^ t))
96printOp("t, f: ", (t ^ f))
97printOp("t, t: ", (t ^ t))
98
99print("~")
100printOp("f: ", (~f))
101printOp("t: ", (~t))
102
103print("+")
104printOp("f: ", (+f))
105printOp("t: ", (+t))
106
107print("-")
108printOp("f: ", (-f))
109printOp("t: ", (-t))
110
111printOp("1/-f: ", (1/-f))
112
113})();
114