@@ -193,6 +193,11 @@ def _dump(level)
193193 Marshal . dump ( MarshalSpec ::ClassWithOverriddenName ) . should == "\x04 \b c)MarshalSpec::ClassWithOverriddenName"
194194 end
195195
196+ it "dumps a class with multibyte characters in name" do
197+ source_object = eval ( "MarshalSpec::MultibyteぁあぃいClass" . force_encoding ( Encoding ::UTF_8 ) )
198+ Marshal . dump ( source_object ) . should == "\x04 \b c,MarshalSpec::Multibyte\xE3 \x81 \x81 \xE3 \x81 \x82 \xE3 \x81 \x83 \xE3 \x81 \x84 Class"
199+ end
200+
196201 it "raises TypeError with an anonymous Class" do
197202 -> { Marshal . dump ( Class . new ) } . should raise_error ( TypeError , /can't dump anonymous class/ )
198203 end
@@ -211,6 +216,11 @@ def _dump(level)
211216 Marshal . dump ( MarshalSpec ::ModuleWithOverriddenName ) . should == "\x04 \b c*MarshalSpec::ModuleWithOverriddenName"
212217 end
213218
219+ it "dumps a module with multibyte characters in name" do
220+ source_object = eval ( "MarshalSpec::MultibyteけげこごModule" . force_encoding ( Encoding ::UTF_8 ) )
221+ Marshal . dump ( source_object ) . should == "\x04 \b m-MarshalSpec::Multibyte\xE3 \x81 \x91 \xE3 \x81 \x92 \xE3 \x81 \x93 \xE3 \x81 \x94 Module"
222+ end
223+
214224 it "raises TypeError with an anonymous Module" do
215225 -> { Marshal . dump ( Module . new ) } . should raise_error ( TypeError )
216226 end
@@ -673,6 +683,11 @@ def finalizer.noop(_)
673683 Marshal . dump ( obj ) . should include ( "MarshalSpec::TimeWithOverriddenName" )
674684 end
675685
686+ it "dumps a Time subclass with multibyte characters in name" do
687+ source_object = eval ( "MarshalSpec::MultibyteぁあぃいTime" . force_encoding ( Encoding ::UTF_8 ) )
688+ Marshal . dump ( source_object ) . should == "\x04 \b c+MarshalSpec::Multibyte\xE3 \x81 \x81 \xE3 \x81 \x82 \xE3 \x81 \x83 \xE3 \x81 \x84 Time"
689+ end
690+
676691 it "raises TypeError with an anonymous Time subclass" do
677692 -> { Marshal . dump ( Class . new ( Time ) . now ) } . should raise_error ( TypeError )
678693 end
0 commit comments