public void TestWriteAndRead(string name) { // Load file var inputFileReader = TexDecompressingTests.LoadTestFile(name); var inputBytes = new byte[inputFileReader.BaseStream.Length]; var bytesRead = inputFileReader.Read(inputBytes, 0, (int)inputFileReader.BaseStream.Length); Assert.AreEqual(inputFileReader.BaseStream.Length, bytesRead, "Failed to read input file"); inputFileReader.Close(); // Read tex var reader = new BinaryReader(new MemoryStream(inputBytes), Encoding.UTF8); var tex = _reader.ReadFrom(reader); // Write tex var memoryStream = new MemoryStream(inputBytes.Length); var writer = new BinaryWriter(memoryStream, Encoding.UTF8); _writer.WriteTo(writer, tex); var outputBytes = memoryStream.ToArray(); // Verify Assert.AreEqual(inputBytes.Length, outputBytes.Length, "Written tex size doesn't match input size"); for (var i = 0; i < inputBytes.Length; i++) { if (inputBytes[i] == outputBytes[i]) { continue; } throw new Exception( $"Rewritten tex bytes are not the same at index: {i}\r\n" + $"Expected: {inputBytes[i]}\r\n" + $"Actual: {outputBytes[i]}"); } }
private static ITex LoadTex(byte[] bytes, string name) { if (Program.Closing) { Environment.Exit(0); } Console.WriteLine("* Reading: {0}", name); try { using (var reader = new BinaryReader(new MemoryStream(bytes), Encoding.UTF8)) { return(_texReader.ReadFrom(reader)); } } catch (Exception e) { Console.WriteLine("Failed to read texture"); Console.WriteLine(e); } return(null); }