public void CanCompressData() { // Arrange var testData = new byte[] { 55, 66, 55, 66, 77, 88, 0, 11, 0, 22, 0, 33, 0, 22, 0, 11, 0, 0, 0, 0, 0, 0, 0, 44, 44, 44, 44, 44, 44, 44, 55, 66, 77, 88, 99 }; // Act var compressed = Gyu0.Compress(new BinaryFile(testData)); var decompressed = Gyu0.Decompress(compressed); // Assert var decompressedArray = decompressed.ReadArray(); decompressedArray.Should().Equal(testData); }
public (byte[] bin, byte[] ent) Build() { MemoryStream bin = new MemoryStream(); var entryPointers = new List <int>(); // Build the .bin file data entryPointers.Add(0); foreach (var entry in Entries) { // Build SIR0 and compress to GYU0 var sir0 = entry.ToSir0(); var data = Gyu0.Compress(sir0.Data); // Write data to .bin and the pointer to .ent // Align data to 16 bytes var binData = data.ReadArray(); bin.Write(binData, 0, binData.Length); var paddingLength = 16 - (bin.Length % 16); if (paddingLength != 16) { bin.SetLength(bin.Length + paddingLength); bin.Position = bin.Length; } entryPointers.Add((int)bin.Position); } // Build the .ent file data var ent = new byte[entryPointers.Count * sizeof(int)]; for (int i = 0; i < entryPointers.Count; i++) { BitConverter.GetBytes(entryPointers[i]).CopyTo(ent, i * sizeof(int)); } return(bin.ToArray(), ent); }