public virtual void TestArray() { CharBlockArray array = new CharBlockArray(); StringBuilder builder = new StringBuilder(); const int n = 100 * 1000; byte[] buffer = new byte[50]; for (int i = 0; i < n; i++) { Random().NextBytes(buffer); int size = 1 + Random().Next(50); // This test is turning random bytes into a string, // this is asking for trouble. string s = Encoding.UTF8.GetString(buffer, 0, size); array.Append(s); builder.Append(s); } for (int i = 0; i < n; i++) { Random().NextBytes(buffer); int size = 1 + Random().Next(50); // This test is turning random bytes into a string, // this is asking for trouble. string s = Encoding.UTF8.GetString(buffer, 0, size); array.Append(s); builder.Append(s); } for (int i = 0; i < n; i++) { Random().NextBytes(buffer); int size = 1 + Random().Next(50); // This test is turning random bytes into a string, // this is asking for trouble. string s = Encoding.UTF8.GetString(buffer, 0, size); for (int j = 0; j < s.Length; j++) { array.Append(s[j]); } builder.Append(s); } AssertEqualsInternal("GrowingCharArray<->StringBuilder mismatch.", builder, array); DirectoryInfo tempDir = CreateTempDir("growingchararray"); FileInfo f = new FileInfo(Path.Combine(tempDir.FullName, "GrowingCharArrayTest.tmp")); using (var @out = new FileStream(f.FullName, FileMode.OpenOrCreate, FileAccess.Write)) { array.Flush(@out); @out.Flush(); } using (var @in = new FileStream(f.FullName, FileMode.Open, FileAccess.Read)) { array = CharBlockArray.Open(@in); AssertEqualsInternal("GrowingCharArray<->StringBuilder mismatch after flush/load.", builder, array); } f.Delete(); }
public virtual void TestArray() { CharBlockArray array = new CharBlockArray(); StringBuilder builder = new StringBuilder(); const int n = 100 * 1000; byte[] buffer = new byte[50]; // This is essentially the equivalent of // CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder() // .onUnmappableCharacter(CodingErrorAction.REPLACE) // .onMalformedInput(CodingErrorAction.REPLACE); // // Encoding decoder = Encoding.GetEncoding(Encoding.UTF8.CodePage, // new EncoderReplacementFallback("?"), // new DecoderReplacementFallback("?")); for (int i = 0; i < n; i++) { Random().NextBytes(buffer); int size = 1 + Random().Next(50); // This test is turning random bytes into a string, // this is asking for trouble. Encoding decoder = Encoding.GetEncoding(Encoding.UTF8.CodePage, new EncoderReplacementFallback("?"), new DecoderReplacementFallback("?")); string s = decoder.GetString(buffer, 0, size); array.Append(s); builder.Append(s); } for (int i = 0; i < n; i++) { Random().NextBytes(buffer); int size = 1 + Random().Next(50); // This test is turning random bytes into a string, // this is asking for trouble. Encoding decoder = Encoding.GetEncoding(Encoding.UTF8.CodePage, new EncoderReplacementFallback("?"), new DecoderReplacementFallback("?")); string s = decoder.GetString(buffer, 0, size); array.Append(s); builder.Append(s); } for (int i = 0; i < n; i++) { Random().NextBytes(buffer); int size = 1 + Random().Next(50); // This test is turning random bytes into a string, // this is asking for trouble. Encoding decoder = Encoding.GetEncoding(Encoding.UTF8.CodePage, new EncoderReplacementFallback("?"), new DecoderReplacementFallback("?")); string s = decoder.GetString(buffer, 0, size); for (int j = 0; j < s.Length; j++) { array.Append(s[j]); } builder.Append(s); } AssertEqualsInternal("GrowingCharArray<->StringBuilder mismatch.", builder, array); DirectoryInfo tempDir = CreateTempDir("growingchararray"); FileInfo f = new FileInfo(Path.Combine(tempDir.FullName, "GrowingCharArrayTest.tmp")); using (var @out = new FileStream(f.FullName, FileMode.OpenOrCreate, FileAccess.Write)) { array.Flush(@out); @out.Flush(); } using (var @in = new FileStream(f.FullName, FileMode.Open, FileAccess.Read)) { array = CharBlockArray.Open(@in); AssertEqualsInternal("GrowingCharArray<->StringBuilder mismatch after flush/load.", builder, array); } f.Delete(); }