add a test for [ruby-dev:34579].
[ruby-svn.git] / bootstraptest / test_massign.rb
blob0f63dd424afa60d6225d726fee8ba7f8e17297ea
1 assert_equal '[[1], 2, 3]', '*v1, (a, b) = [1,[2, 3]]; [v1, a, b]'
2 assert_equal '[[1], 2, 3]', '*v1,(*), (a, b) = [1,:x,[2, 3]]; [v1, a, b]'
4 assert_equal '[]',          '*a = *nil; a'
5 assert_equal '[nil]',       '*a = nil; a'
6 assert_equal '2',           'a, a = 1, 2; a', "[ruby-dev:31522]"
7 assert_equal '[1, 2]',      'a, b = 1, 2'
8 assert_equal '[1, 2]', %q{
9   ans = []
10   trace_var(:$a){|v| ans << v}
11   trace_var(:$b){|v| ans << v}
12   $a, $b = 1, 2
13   ans
16 assert_equal 'ok', %q{
17   r = :ok
18   :ng.tap {|(r)|}
19   r
20 }, '[ruby-dev:31507]'
22 =begin
23 # generated by this script:
25 3.times{|i|
26   8.times{|e|
27     ary = (0...e).to_a
28     a,b,c,d,e,f = nil
29     vals = %w(a b c d e f)
30     vals[i] = '*' + vals[i]
31     program = "#{vals.join(", ")} = *ary"
32     eval(program)
33     ans = [a,b,c,d,e,f]
34     puts %Q{
35       assert_equal "#{ans.inspect}", %q{
36         ary = #{ary.inspect}
37         #{program}; [a, b, c, d, e, f]
38       }}
39   }
41 =end
43       assert_equal "[[], nil, nil, nil, nil, nil]", %q{
44         ary = []
45         *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
46       }
48       assert_equal "[[], 0, nil, nil, nil, nil]", %q{
49         ary = [0]
50         *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
51       }
53       assert_equal "[[], 0, 1, nil, nil, nil]", %q{
54         ary = [0, 1]
55         *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
56       }
58       assert_equal "[[], 0, 1, 2, nil, nil]", %q{
59         ary = [0, 1, 2]
60         *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
61       }
63       assert_equal "[[], 0, 1, 2, 3, nil]", %q{
64         ary = [0, 1, 2, 3]
65         *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
66       }
68       assert_equal "[[], 0, 1, 2, 3, 4]", %q{
69         ary = [0, 1, 2, 3, 4]
70         *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
71       }
73       assert_equal "[[0], 1, 2, 3, 4, 5]", %q{
74         ary = [0, 1, 2, 3, 4, 5]
75         *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
76       }
78       assert_equal "[[0, 1], 2, 3, 4, 5, 6]", %q{
79         ary = [0, 1, 2, 3, 4, 5, 6]
80         *a, b, c, d, e, f = *ary; [a, b, c, d, e, f]
81       }
83       assert_equal "[nil, [], nil, nil, nil, nil]", %q{
84         ary = []
85         a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
86       }
88       assert_equal "[0, [], nil, nil, nil, nil]", %q{
89         ary = [0]
90         a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
91       }
93       assert_equal "[0, [], 1, nil, nil, nil]", %q{
94         ary = [0, 1]
95         a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
96       }
98       assert_equal "[0, [], 1, 2, nil, nil]", %q{
99         ary = [0, 1, 2]
100         a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
101       }
103       assert_equal "[0, [], 1, 2, 3, nil]", %q{
104         ary = [0, 1, 2, 3]
105         a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
106       }
108       assert_equal "[0, [], 1, 2, 3, 4]", %q{
109         ary = [0, 1, 2, 3, 4]
110         a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
111       }
113       assert_equal "[0, [1], 2, 3, 4, 5]", %q{
114         ary = [0, 1, 2, 3, 4, 5]
115         a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
116       }
118       assert_equal "[0, [1, 2], 3, 4, 5, 6]", %q{
119         ary = [0, 1, 2, 3, 4, 5, 6]
120         a, *b, c, d, e, f = *ary; [a, b, c, d, e, f]
121       }
123       assert_equal "[nil, nil, [], nil, nil, nil]", %q{
124         ary = []
125         a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
126       }
128       assert_equal "[0, nil, [], nil, nil, nil]", %q{
129         ary = [0]
130         a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
131       }
133       assert_equal "[0, 1, [], nil, nil, nil]", %q{
134         ary = [0, 1]
135         a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
136       }
138       assert_equal "[0, 1, [], 2, nil, nil]", %q{
139         ary = [0, 1, 2]
140         a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
141       }
143       assert_equal "[0, 1, [], 2, 3, nil]", %q{
144         ary = [0, 1, 2, 3]
145         a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
146       }
148       assert_equal "[0, 1, [], 2, 3, 4]", %q{
149         ary = [0, 1, 2, 3, 4]
150         a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
151       }
153       assert_equal "[0, 1, [2], 3, 4, 5]", %q{
154         ary = [0, 1, 2, 3, 4, 5]
155         a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
156       }
158       assert_equal "[0, 1, [2, 3], 4, 5, 6]", %q{
159         ary = [0, 1, 2, 3, 4, 5, 6]
160         a, b, *c, d, e, f = *ary; [a, b, c, d, e, f]
161       }
165 assert_equal 'ok', %q{
166   a,s=[],"aaa"
167   300.times { a<<s; s=s.succ }
168   eval <<-END__
169   GC.stress=true
170   Fiber.new do
171     #{ a.join(",") },*zzz=1
172   end.resume
173   END__
174   :ok
175 }, '[ruby-dev:32581]'
177 assert_equal 'ok', %q{
178   while true
179     *, z = 1
180     break
181   end
182   :ok
183 }, '[ruby-dev:32892]'