private void Inspect1() {
const char sq = '\'';
var sjisEncoding = RubyEncoding.KCodeSJIS.StrictEncoding;
// あ
var sjisWide = new byte[] { 0x82, 0xa0 };
// \u{12345} in UTF-8:
var utf8 = new byte[] { 0xF0, 0x92, 0x8D, 0x85 };
// surrogates: U+d808 U+df45
var utf16 = Encoding.UTF8.GetString(utf8);
string s;
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(utf8, RubyEncoding.Binary), Context, false, sq).ToString();
Assert(s == @"'\360\222\215\205'");
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(utf8, RubyEncoding.Binary), Context, true, sq).ToString();
Assert(s == @"'\360\222\215\205'");
Context.KCode = RubyEncoding.KCodeUTF8;
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(utf8, RubyEncoding.KCodeUTF8), Context, false, sq).ToString();
Assert(s == "'" + utf16 + "'");
// incomplete character:
Context.KCode = RubyEncoding.KCodeUTF8;
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(new byte[] { 0xF0, 0x92 }, RubyEncoding.KCodeUTF8), Context, false, sq).ToString();
Assert(s == @"'\360\222'");
Context.KCode = RubyEncoding.KCodeUTF8;
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(utf8, RubyEncoding.KCodeSJIS), Context, false, sq).ToString();
Assert(s == "'" + utf16 + "'");
Context.KCode = RubyEncoding.KCodeUTF8;
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(utf8, RubyEncoding.KCodeUTF8), Context, true, sq).ToString();
Assert(s == @"'\360\222\215\205'");
Context.KCode = RubyEncoding.KCodeSJIS;
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(sjisWide, RubyEncoding.KCodeSJIS), Context, false, sq).ToString();
Assert(s == @"'あ'");
Context.KCode = RubyEncoding.KCodeSJIS;
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(sjisWide, RubyEncoding.Binary), Context, false, sq).ToString();
Assert(s == @"'あ'");
Context.KCode = RubyEncoding.KCodeSJIS;
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(sjisWide, RubyEncoding.KCodeUTF8), Context, true, sq).ToString();
Assert(s == @"'\202\240'");
}