comparison graal/com.oracle.truffle.ruby.test/src/com/oracle/truffle/ruby/test/core/ArrayTests.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 Array} class.
18 */
19 public class ArrayTests extends RubyTests {
20
21 @Test
22 public void testLiteral() {
23 assertPrints("", "puts []");
24 assertPrints("1\n", "puts [1]");
25 assertPrints("1\n2\n", "puts [1, 2]");
26 assertPrints("1\n2\n3\n", "puts [1, 2, 3]");
27 assertPrints("1\n2\n3\n", "puts [(1), 2, ((3))]");
28 }
29
30 @Test
31 public void testReadIndexSimple() {
32 assertPrints("2\n", "puts [1, 2, 3][1]");
33 assertPrints("2\n", "x = [1, 2, 3]; puts x[1]");
34 assertPrints("\n", "puts [1, 2, 3][10]");
35 }
36
37 @Test
38 public void testReadIndexRange() {
39 assertPrints("2\n3\n", "puts [1, 2, 3][1..2]");
40 assertPrints("2\n3\n", "puts [1, 2, 3][1..-1]");
41 assertPrints("1\n2\n3\n", "puts [1, 2, 3][0..-1]");
42 }
43
44 @Test
45 public void testWriteIndexSimple() {
46 assertPrints("1\n0\n3\n", "x = [1, 2, 3]; x[1] = 0; puts x");
47 assertPrints("0\n", "x = [1, 2, 3]; puts x[1] = 0");
48 assertPrints("1\n\n3\n", "x = [1]; x[2] = 3; puts x");
49 }
50
51 @Test
52 public void testWriteIndexRangeSingle() {
53 assertPrints("1\n0\n", "x = [1, 2, 3]; x[1..2] = 0; puts x");
54 assertPrints("1\n0\n", "x = [1, 2, 3]; x[1..3] = 0; puts x");
55 assertPrints("1\n0\n", "x = [1, 2, 3]; x[1..-1] = 0; puts x");
56 assertPrints("0\n", "x = [1, 2, 3]; x[0..-1] = 0; puts x");
57 }
58
59 @Test
60 public void testWriteIndexRangeArray() {
61 assertPrints("1\n4\n5\n", "x = [1, 2, 3]; x[1..2] = [4, 5]; puts x");
62 assertPrints("1\n4\n5\n", "x = [1, 2, 3]; x[1..-1] = [4, 5]; puts x");
63 assertPrints("4\n5\n6\n", "x = [1, 2, 3]; x[0..-1] = [4, 5, 6]; puts x");
64 }
65
66 @Test
67 public void testInsert() {
68 assertPrints("1\n2\n3\n", "x = [1, 2]; x.insert(2, 3); puts x");
69 assertPrints("1\n2\n3\n", "x = [1, 3]; x.insert(1, 2); puts x");
70 assertPrints("1\n\n3\n", "x = [1]; x.insert(2, 3); puts x");
71 }
72
73 @Test
74 public void testPush() {
75 assertPrints("1\n2\n3\n", "x = [1, 2]; x.push(3); puts x");
76 assertPrints("1\n2\n3\n", "x = [1, 2]; x << 3; puts x");
77 assertPrints("1\n2\n3\n4\n", "x = [1, 2]; x << 3 << 4; puts x");
78 }
79
80 @Test
81 public void testDeleteAt() {
82 assertPrints("1\n3\n", "x = [1, 2, 3]; x.delete_at(1); puts x");
83 }
84
85 @Test
86 public void testDup() {
87 assertPrints("1\n2\n3\n", "x = [1, 2, 3]; y = x.dup; x.delete_at(1); puts y;");
88 }
89
90 @Test
91 public void testOpAssign() {
92 assertPrints("1\n", "x = [0]; x[0] += 1; puts x");
93 }
94
95 @Test
96 public void testSize() {
97 assertPrints("0\n", "puts [].size");
98 assertPrints("1\n", "puts [1].size");
99 assertPrints("2\n", "puts [1, 2].size");
100 }
101
102 @Test
103 public void testEach() {
104 assertPrints("", "[].each { |n| puts n }");
105 assertPrints("1\n", "[1].each { |n| puts n }");
106 assertPrints("1\n2\n3\n", "[1, 2, 3].each { |n| puts n }");
107 }
108
109 @Test
110 public void testMap() {
111 assertPrints("2\n4\n6\n", "puts [1, 2, 3].map { |n| n*2 }");
112 }
113
114 @Test
115 public void testZip() {
116 assertPrints("1\n4\n2\n5\n3\n6\n", "puts [1, 2, 3].zip([4, 5, 6])");
117 assertPrints("1\n4\n2\n5\n", "puts [1, 2].zip([4, 5, 6])");
118 assertPrints("1\n4\n2\n5\n3\n\n", "puts [1, 2, 3].zip([4, 5])");
119 assertPrints("1\n3\n5\n2\n4\n6\n", "puts [1, 2].zip([3, 4], [5, 6])");
120 }
121
122 @Test
123 public void testProduct() {
124 assertPrints("[[1, 3], [1, 4], [2, 3], [2, 4]]\n", "puts [1, 2].product([3, 4]).to_s");
125 }
126
127 @Test
128 public void testInject() {
129 assertPrints("10\n", "puts [2, 3, 4].inject(1) { |a, n| a + n }");
130 }
131
132 @Test
133 public void testLiteralSplat() {
134 assertPrints("[1, 2, 3, 4]\n", "a = [3, 4]; puts [1, 2, *a].to_s");
135 assertPrints("[1, 2, 3, 4, 5, 6]\n", "a = [3, 4]; puts [1, 2, *a, 5, 6].to_s");
136 }
137
138 @Test
139 public void testSplatCast() {
140 assertPrints("[14]\n", "def foo; value = 14; return *value; end; puts foo.to_s");
141 }
142
143 @Test
144 public void testSelect() {
145 assertPrints("[3, 4]\n", "foo = [1, 2, 3, 4]; bar = foo.select { |x| x > 2 }; puts bar.to_s");
146 }
147
148 @Test
149 public void testInclude() {
150 assertPrints("true\nfalse\n", "foo = [1, 2, 3, 4]; puts foo.include? 2; puts foo.include? 5");
151 }
152
153 @Test
154 public void testSub() {
155 assertPrints("[1, 4]\n", "puts ([1, 2, 2, 3, 4] - [2, 3]).to_s");
156 }
157
158 @Test
159 public void testJoin() {
160 assertPrints("1.2.3\n", "puts [1, 2, 3].join('.')");
161 }
162
163 @Test
164 public void testShift() {
165 assertPrints("1\n2\n3\n", "a = [1, 2, 3]; while b = a.shift; puts b; end");
166 }
167
168 }