public virtual void TestRandomWrites() { TemporaryBuffer b = new TemporaryBuffer.LocalFile(); TestRng rng = new TestRng(Sharpen.Extensions.GetTestName()); int max = TemporaryBuffer.DEFAULT_IN_CORE_LIMIT * 2; byte[] expect = new byte[max]; try { int written = 0; bool onebyte = true; while (written < max) { if (onebyte) { byte v = unchecked((byte)rng.NextInt()); b.Write(v); expect[written++] = v; } else { int len = Math.Min(rng.NextInt() & 127, max - written); byte[] tmp = rng.NextBytes(len); b.Write(tmp, 0, len); System.Array.Copy(tmp, 0, expect, written, len); written += len; } onebyte = !onebyte; } NUnit.Framework.Assert.AreEqual(expect.Length, written); b.Close(); NUnit.Framework.Assert.AreEqual(expect.Length, b.Length()); { byte[] r = b.ToByteArray(); NUnit.Framework.Assert.IsNotNull(r); NUnit.Framework.Assert.AreEqual(expect.Length, r.Length); NUnit.Framework.Assert.IsTrue(Arrays.Equals(expect, r)); } { ByteArrayOutputStream o = new ByteArrayOutputStream(); b.WriteTo(o, null); o.Close(); byte[] r = o.ToByteArray(); NUnit.Framework.Assert.AreEqual(expect.Length, r.Length); NUnit.Framework.Assert.IsTrue(Arrays.Equals(expect, r)); } } finally { b.Destroy(); } }