private void Inspect2() {
const char sq = '\'';
var sjisEncoding = RubyEncoding.SJIS;
// あ
var sjisWide = new byte[] { 0x82, 0xa0 };
// \u{12345} in UTF-8:
var utf8 = new byte[] { 0xF0, 0x92, 0x8D, 0x85 };
// \u{12345} in UTF-16: U+d808 U+df45
var utf16 = Encoding.UTF8.GetString(utf8);
string s;
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(utf8, RubyEncoding.Binary), false, sq).ToString();
Assert(s == @"'\xF0\x92\x8D\x85'");
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(utf8, RubyEncoding.Binary), true, sq).ToString();
Assert(s == @"'\xF0\x92\x8D\x85'");
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(utf8, RubyEncoding.UTF8), false, sq).ToString();
Assert(s == @"'\u{12345}'");
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(utf8, RubyEncoding.UTF8), true, sq).ToString();
Assert(s == @"'\u{12345}'");
// incomplete character:
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.Create("\ud808\udf45\ud808", RubyEncoding.UTF8), false, sq).ToString();
Assert(s == @"'\u{12345}\u{d808}'");
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(sjisWide, sjisEncoding), false, sq).ToString();
Assert(s == @"'\x82\xA0'");
s = MutableStringOps.GetQuotedStringRepresentation(MutableString.CreateBinary(sjisWide, sjisEncoding), true, sq).ToString();
Assert(s == @"'\x82\xA0'");
}
}