Пример #1
0
        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]}");
            }
        }
Пример #2
0
        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);
        }