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 }