public void MutableString_Surrogates2() {
MutableString a;
foreach (var e in new[] {
RubyEncodingOps.UTF_32LE, RubyEncodingOps.UTF_32BE, RubyEncodingOps.UTF_16LE, RubyEncodingOps.UTF_16BE,
RubyEncodingOps.UTF_8, RubyEncodingOps.UTF_7
}) {
a = MutableString.Create("abcd", e);
Assert(!a.HasSurrogates());
Assert(a.KnowsSurrogates);
a.Remove(2, 1); // abd
Assert(a.KnowsSurrogates);
Assert(!a.HasSurrogates());
a.Append('e'); // abde
Assert(a.KnowsSurrogates);
Assert(!a.HasSurrogates());
a.SetChar(2, '\uD800'); // ab\u{D800}e
Assert(a.KnowsSurrogates);
Assert(a.HasSurrogates());
a.Remove(2, 1); // abe
Assert(!a.KnowsSurrogates);
Assert(!a.HasSurrogates());
a.Append('\uD800'); // abe\u{D800}
Assert(a.KnowsSurrogates);
Assert(a.HasSurrogates());
a.Replace(2, 2, MutableString.CreateAscii("xx")); // abxx
Assert(!a.KnowsSurrogates);
Assert(!a.HasSurrogates());
Assert(a.ToString() == "abxx");
}
}