public void MutableString_Factories() {
var x = MutableString.CreateAscii("");
Assert(!x.IsBinary && x.IsEmpty);
var y = MutableString.Create(x);
Assert(!x.IsBinary && y.IsEmpty && !ReferenceEquals(x, y));
x = MutableString.Create("a", RubyEncoding.UTF8);
Assert(!x.IsBinary && x.ToString() == "a" && x.Encoding == RubyEncoding.UTF8);
x = MutableString.CreateMutable(RubyEncoding.UTF8);
Assert(!x.IsBinary && x.IsEmpty && x.Encoding == RubyEncoding.UTF8);
x = MutableString.CreateMutable("hello", RubyEncoding.UTF8);
Assert(!x.IsBinary && x.ToString() == "hello" && x.Encoding == RubyEncoding.UTF8);
x = MutableString.CreateMutable(100, RubyEncoding.UTF8);
Assert(!x.IsBinary && x.IsEmpty && x.Encoding == RubyEncoding.UTF8);
x = MutableString.CreateBinary(new byte[] { (byte)'A' });
Assert(x.IsBinary && x.ToString() == "A" && x.Encoding == RubyEncoding.Binary);
x = MutableString.CreateBinary(100);
Assert(x.IsBinary && x.IsEmpty && x.Encoding == RubyEncoding.Binary);
x = MutableString.CreateBinary(100, RubyEncoding.UTF8);
Assert(x.IsBinary && x.IsEmpty && x.Encoding == RubyEncoding.UTF8);
x = MutableString.CreateBinary(new List<byte>(new byte[] { 1, 2, 3 }), RubyEncoding.UTF8);
Assert(x.IsBinary && x.GetByteCount() == 3 && x.Encoding == RubyEncoding.UTF8);
}