public void File_AppendBytes1() { string s; string crlf = "\r\n"; var stream = new TestStream(false, B( "ab\r\r\n" + "e" + (s = "fgh" + crlf + "ijkl" + crlf + "mnop" + crlf + crlf + crlf + crlf + "qrst") + crlf + "!" )); int s_crlf_count = 6; var io = new RubyBufferedStream(stream); Assert(io.PeekByte() == (byte)'a'); var buffer = MutableString.CreateBinary(B("foo:")); Assert(io.AppendBytes(buffer, 4, false) == 4); Assert(buffer.ToString() == "foo:ab\r\n"); buffer = MutableString.CreateBinary(); Assert(io.AppendBytes(buffer, 1, false) == 1); Assert(buffer.ToString() == "e"); buffer = MutableString.CreateMutable("x:", RubyEncoding.Binary); int c = s.Length - s_crlf_count - 2; Assert(io.AppendBytes(buffer, c, false) == c); Assert(buffer.ToString() == "x:" + s.Replace(crlf, "\n").Substring(0, c)); buffer = MutableString.CreateBinary(); Assert(io.AppendBytes(buffer, 10, false) == 4); Assert(buffer.ToString() == "st\n!"); buffer = MutableString.CreateBinary(); Assert(io.AppendBytes(buffer, 10, false) == 0); Assert(buffer.ToString() == ""); stream = new TestStream(false, B(s = "abcd" + crlf + "xyz" + crlf + "qqq;")); io = new RubyBufferedStream(stream); buffer = MutableString.CreateBinary(); Assert(io.AppendBytes(buffer, Int32.MaxValue, true) == s.Length); io.BaseStream.Seek(0, SeekOrigin.Begin); Assert(io.AppendBytes(buffer, Int32.MaxValue, false) == s.Length - 2); Assert(buffer.ToString() == s + s.Replace(crlf, "\n")); }