@@ -186,33 +186,35 @@ def test_string_inspect_invalid
186186 end
187187
188188 def test_string_inspect_encoding
189- EnvUtil . suppress_warning do
190- begin
191- orig_int = Encoding . default_internal
192- orig_ext = Encoding . default_external
193- Encoding . default_internal = nil
194- [ Encoding ::UTF_8 , Encoding ::EUC_JP , Encoding ::Windows_31J , Encoding ::GB18030 ] .
195- each do |e |
196- Encoding . default_external = e
197- str = "\x81 \x30 \x81 \x30 " . force_encoding ( 'GB18030' )
198- assert_equal ( Encoding ::GB18030 == e ? %{"#{ str } "} : '"\x{81308130}"' , str . inspect )
199- str = e ( "\xa1 \x8f \xa1 \xa1 " )
200- expected = "\" \\ xA1\x8F \xA1 \xA1 \" " . force_encoding ( "EUC-JP" )
201- assert_equal ( Encoding ::EUC_JP == e ? expected : "\" \\ xA1\\ x{8FA1A1}\" " , str . inspect )
202- str = s ( "\x81 @" )
203- assert_equal ( Encoding ::Windows_31J == e ? %{"#{ str } "} : '"\x{8140}"' , str . inspect )
204- str = "\u3042 \u{10FFFD} "
205- assert_equal ( Encoding ::UTF_8 == e ? %{"#{ str } "} : '"\u3042\u{10FFFD}"' , str . inspect )
206- end
207- Encoding . default_external = Encoding ::UTF_8
208- [ Encoding ::UTF_16BE , Encoding ::UTF_16LE , Encoding ::UTF_32BE , Encoding ::UTF_32LE ,
209- Encoding ::UTF8_SOFTBANK ] . each do |e |
210- str = "abc" . encode ( e )
211- assert_equal ( '"abc"' , str . inspect )
212- end
213- ensure
214- Encoding . default_internal = orig_int
215- Encoding . default_external = orig_ext
189+ [
190+ Encoding ::UTF_8 ,
191+ Encoding ::EUC_JP ,
192+ Encoding ::Windows_31J ,
193+ Encoding ::GB18030 ,
194+ ] . each do |e |
195+ EnvUtil . with_default_external ( e ) do
196+ str = "\x81 \x30 \x81 \x30 " . force_encoding ( 'GB18030' )
197+ assert_equal ( Encoding ::GB18030 == e ? %{"#{ str } "} : '"\x{81308130}"' , str . inspect )
198+ str = e ( "\xa1 \x8f \xa1 \xa1 " )
199+ expected = "\" \\ xA1\x8F \xA1 \xA1 \" " . force_encoding ( "EUC-JP" )
200+ assert_equal ( Encoding ::EUC_JP == e ? expected : "\" \\ xA1\\ x{8FA1A1}\" " , str . inspect )
201+ str = s ( "\x81 @" )
202+ assert_equal ( Encoding ::Windows_31J == e ? %{"#{ str } "} : '"\x{8140}"' , str . inspect )
203+ str = "\u3042 \u{10FFFD} "
204+ assert_equal ( Encoding ::UTF_8 == e ? %{"#{ str } "} : '"\u3042\u{10FFFD}"' , str . inspect )
205+ end
206+ end
207+
208+ EnvUtil . with_default_external ( Encoding ::UTF_8 ) do
209+ [
210+ Encoding ::UTF_16BE ,
211+ Encoding ::UTF_16LE ,
212+ Encoding ::UTF_32BE ,
213+ Encoding ::UTF_32LE ,
214+ Encoding ::UTF8_SOFTBANK
215+ ] . each do |e |
216+ str = "abc" . encode ( e )
217+ assert_equal ( '"abc"' , str . inspect )
216218 end
217219 end
218220 end
0 commit comments