11require 'spec_helper'
22
3- describe Unparser do
3+ describe Unparser , mutant_expression : 'Unparser::Emitter*' do
44 describe '.unparse' do
55
66 PARSERS = IceNine . deep_freeze (
@@ -137,20 +137,17 @@ def foo(bar:, baz: "value")
137137 end
138138
139139 context 'string' do
140- assert_generates '?c' , '"c"'
141- assert_generates '"foo" "bar"' , '"foobar"'
142- assert_generates '"foo" "bar #{baz}"' , '"foobar #{baz}"'
143- assert_generates '%Q(foo"#{@bar})' , '"foo\\"#{@bar}"'
140+ assert_generates '?c' , '"c"'
141+ assert_generates '"foo" "bar"' , '"#{"foo"}#{"bar"}"'
142+ assert_generates '"foo" "bar #{baz}"' , '"#{"foo"}#{"#{"bar "}#{baz}"}"'
143+ assert_generates '%Q(foo"#{@bar})' , '"#{"foo\\""}#{@bar}"'
144+ assert_generates '"foo#{1}bar"' , '"#{"foo"}#{1}#{"bar"}"'
145+ assert_generates '"\\\\#{}"' , '"#{"\\\\"}#{}"'
146+ assert_generates '"#{}\#{}"' , '"#{}#{"\#{}"}"'
147+ assert_generates '"\#{}#{}"' , '"#{"\#{}"}#{}"'
144148 assert_terminated '"\""'
145- assert_terminated '"foo#{1}bar"'
146- assert_terminated '"\"#{@a}"'
147- assert_terminated '"\\\\#{}"'
148149 assert_terminated '"foo bar"'
149150 assert_terminated '"foo\nbar"'
150- assert_terminated '"foo bar #{}"'
151- assert_terminated '"foo\nbar #{}"'
152- assert_terminated '"#{}\#{}"'
153- assert_terminated '"\#{}#{}"'
154151 # Within indentation
155152 assert_generates <<-'RUBY' , <<-'RUBY'
156153 if foo
@@ -160,21 +157,17 @@ def foo(bar:, baz: "value")
160157 end
161158 RUBY
162159 if foo
163- "\n #{foo}\n "
160+ "#{"\n"}#{" "} #{foo}#{"\n"}#{" "} "
164161 end
165162 RUBY
166-
167- assert_terminated '"foo#{@bar}"'
168- assert_terminated '"fo\no#{bar}b\naz"'
169163 end
170164
171165 context 'execute string' do
172- assert_terminated '`foo`'
173- assert_terminated '`foo#{@bar}`'
174- assert_generates '%x(\))' , '`)`'
175- # FIXME: Research into this one!
176- # assert_generates '%x(`)', '`\``'
177- assert_terminated '`"`'
166+ assert_generates '`foo`' , '`#{"foo"}`'
167+ assert_generates '`foo#{@bar}`' , '`#{"foo"}#{@bar}`'
168+ assert_generates '%x(\))' , '`#{")"}`'
169+ assert_generates '%x(`)' , '`#{"`"}`'
170+ assert_generates '`"`' , '`#{"\\""}`'
178171 end
179172
180173 context 'symbol' do
@@ -211,11 +204,8 @@ def foo(bar:, baz: "value")
211204 end
212205
213206 context 'dynamic symbol' do
214- assert_terminated ':"foo#{bar}baz"'
215- assert_terminated ':"fo\no#{bar}b\naz"'
216- assert_terminated ':"#{bar}foo"'
217- assert_terminated ':"#{"foo"}"'
218- assert_terminated ':"foo#{bar}"'
207+ assert_generates ':"foo#{bar}baz"' , ':"#{"foo"}#{bar}#{"baz"}"'
208+ assert_source ':"#{"foo"}"'
219209 end
220210
221211 context 'irange' do
0 commit comments