Mercurial > hg > graal-compiler
comparison graal/com.oracle.truffle.ruby.test/src/com/oracle/truffle/ruby/test/core/FixnumTests.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.core; | |
11 | |
12 import org.junit.*; | |
13 | |
14 import com.oracle.truffle.ruby.test.*; | |
15 | |
16 /** | |
17 * Test the {@code Fixnum} class. | |
18 */ | |
19 public class FixnumTests extends RubyTests { | |
20 | |
21 @Test | |
22 public void testImmediate() { | |
23 assertPrints("2\n", "puts 2"); | |
24 assertPrints("14\n", "puts 14"); | |
25 assertPrints("-14\n", "puts -14"); | |
26 } | |
27 | |
28 @Test | |
29 public void testNegate() { | |
30 assertPrints("-1\n", "x = 1; puts -x"); | |
31 assertPrints("1\n", "x = -1; puts -x"); | |
32 } | |
33 | |
34 @Test | |
35 public void testAddImmediate() { | |
36 assertPrints("16\n", "puts 14+2"); | |
37 assertPrints("14\n", "puts 12 + 2"); | |
38 assertPrints("17\n", "puts 9 + (8)"); | |
39 assertPrints("10\n", "puts (6) + ((4))"); | |
40 } | |
41 | |
42 @Test | |
43 public void testSubImmediate() { | |
44 assertPrints("12\n", "puts 14-2"); | |
45 assertPrints("10\n", "puts 12 - 2"); | |
46 assertPrints("1\n", "puts 9 - (8)"); | |
47 assertPrints("2\n", "puts (6) - ((4))"); | |
48 } | |
49 | |
50 @Test | |
51 public void testMulImmediate() { | |
52 assertPrints("28\n", "puts 14 * 2"); | |
53 assertPrints("20\n", "puts 2 * 10"); | |
54 assertPrints("72\n", "puts 9 * (8)"); | |
55 assertPrints("24\n", "puts (4) * ((6))"); | |
56 } | |
57 | |
58 @Test | |
59 public void testDivImmediate() { | |
60 assertPrints("7\n", "puts 14 / 2"); | |
61 assertPrints("0\n", "puts 2 / 10"); | |
62 assertPrints("1\n", "puts 9 / (8)"); | |
63 assertPrints("0\n", "puts (4) / ((6))"); | |
64 } | |
65 | |
66 @Test | |
67 public void testEqualImmediate() { | |
68 assertPrints("true\n", "puts 14 == 14"); | |
69 assertPrints("true\n", "puts 2 == 2"); | |
70 assertPrints("false\n", "puts 9 == (8)"); | |
71 assertPrints("false\n", "puts (4) == ((6))"); | |
72 } | |
73 | |
74 @Test | |
75 public void testNotEqualImmediate() { | |
76 assertPrints("false\n", "puts 14 != 14"); | |
77 assertPrints("false\n", "puts 2 != 2"); | |
78 assertPrints("true\n", "puts 9 != (8)"); | |
79 assertPrints("true\n", "puts (4) != ((6))"); | |
80 } | |
81 | |
82 @Test | |
83 public void testLessImmediate() { | |
84 assertPrints("false\n", "puts 14 < 2"); | |
85 assertPrints("true\n", "puts 2 < 10"); | |
86 assertPrints("false\n", "puts 9 < (8)"); | |
87 assertPrints("true\n", "puts (4) < ((6))"); | |
88 } | |
89 | |
90 @Test | |
91 public void testGreaterEqualImmediate() { | |
92 assertPrints("true\n", "puts 14 >= 14"); | |
93 assertPrints("true\n", "puts 14 >= 2"); | |
94 assertPrints("false\n", "puts 2 >= 10"); | |
95 assertPrints("true\n", "puts 9 >= (8)"); | |
96 assertPrints("false\n", "puts (4) >= ((6))"); | |
97 } | |
98 | |
99 @Test | |
100 public void testLeftShift() { | |
101 assertPrints("0\n", "puts 0 << 0"); | |
102 assertPrints("0\n", "puts 0 << 1"); | |
103 assertPrints("1\n", "puts 1 << 0"); | |
104 assertPrints("0\n", "puts 1 << -1"); | |
105 assertPrints("0\n", "puts 1 << -2"); | |
106 assertPrints("28\n", "puts 14 << 1"); | |
107 assertPrints("7\n", "puts 14 << -1"); | |
108 assertPrints("4294967296\n", "puts 1 << 32"); | |
109 assertPrints("340282366920938463463374607431768211456\n", "puts 1 << 128"); | |
110 assertPrints("0\n", "puts 1 << -32"); | |
111 assertPrints("Fixnum\n", "puts (14 << 1).class"); | |
112 assertPrints("Bignum\n", "puts (1 << 32).class"); | |
113 } | |
114 | |
115 @Test | |
116 public void testDivmod() { | |
117 // @formatter:off | |
118 final int[][] tests = new int[][]{ | |
119 new int[]{13, 4, 3, 1}, | |
120 new int[]{13, -4, -4, -3}, | |
121 new int[]{-13, 4, -4, 3}, | |
122 new int[]{-13, -4, 3, -1}}; | |
123 // @formatter:on | |
124 | |
125 for (int[] test : tests) { | |
126 final int a = test[0]; | |
127 final int b = test[1]; | |
128 final int q = test[2]; | |
129 final int r = test[3]; | |
130 assertPrints(String.format("%d\n%d\n", q, r), String.format("puts %d.divmod(%d)", a, b)); | |
131 } | |
132 } | |
133 | |
134 } |