Mercurial > hg > graal-jvmci-8
comparison graal/com.oracle.truffle.ruby.test/src/com/oracle/truffle/ruby/test/language/AndTests.java @ 13514:0fbee3eb71f0
Ruby: import project.
author | Chris Seaton <chris.seaton@oracle.com> |
---|---|
date | Mon, 06 Jan 2014 17:12:09 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
13513:64a23ce736a0 | 13514:0fbee3eb71f0 |
---|---|
1 /* | |
2 * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved. This | |
3 * code is released under a tri EPL/GPL/LGPL license. You can use it, | |
4 * redistribute it and/or modify it under the terms of the: | |
5 * | |
6 * Eclipse Public License version 1.0 | |
7 * GNU General Public License version 2 | |
8 * GNU Lesser General Public License version 2.1 | |
9 */ | |
10 package com.oracle.truffle.ruby.test.language; | |
11 | |
12 import org.junit.*; | |
13 | |
14 import com.oracle.truffle.ruby.test.*; | |
15 | |
16 /** | |
17 * Test {@code and} expressions, which unusually for Ruby are not methods. This is because with | |
18 * Ruby's eager evaluation there would be no way to implement the short circuit semantics. | |
19 */ | |
20 public class AndTests extends RubyTests { | |
21 | |
22 @Test | |
23 public void testImmediate() { | |
24 assertPrints("false\n", "puts false && false"); | |
25 assertPrints("false\n", "puts true && false"); | |
26 assertPrints("false\n", "puts false && true"); | |
27 assertPrints("true\n", "puts true && true"); | |
28 assertPrints("false\n", "puts (false and false)"); | |
29 assertPrints("false\n", "puts (true and false)"); | |
30 assertPrints("false\n", "puts (false and true)"); | |
31 assertPrints("true\n", "puts (true and true)"); | |
32 } | |
33 | |
34 @Test | |
35 public void testShortCircuits() { | |
36 assertPrints("false\nfalse\nfalse\n", "x = y = false; puts (x = false) && (y = false); puts x, y"); | |
37 assertPrints("false\ntrue\nfalse\n", "x = y = false; puts (x = true) && (y = false); puts x, y"); | |
38 assertPrints("false\nfalse\nfalse\n", "x = y = false; puts (x = false) && (y = true); puts x, y"); | |
39 assertPrints("true\ntrue\ntrue\n", "x = y = false; puts (x = true) && (y = true); puts x, y"); | |
40 assertPrints("false\nfalse\nfalse\n", "x = y = false; puts ((x = false) and (y = false)); puts x, y"); | |
41 assertPrints("false\ntrue\nfalse\n", "x = y = false; puts ((x = true) and (y = false)); puts x, y"); | |
42 assertPrints("false\nfalse\nfalse\n", "x = y = false; puts ((x = false) and (y = true)); puts x, y"); | |
43 assertPrints("true\ntrue\ntrue\n", "x = y = false; puts ((x = true) and (y = true)); puts x, y"); | |
44 } | |
45 | |
46 } |