Exemple #1
0
        public Task WriteAsync(Stream stream, IMS2FileHeader fileHeader)
        {
            using var bw = new BinaryWriter(stream, Encoding.ASCII, true);

            bw.Write((uint)fileHeader.CompressionType);
            bw.Write(fileHeader.Id);
            bw.Write((uint)fileHeader.Size.EncodedSize);
            bw.Write(fileHeader.Size.CompressedSize);
            bw.Write(fileHeader.Size.Size);
            bw.Write(fileHeader.Offset);

            return(Task.CompletedTask);
        }
        public async Task Save_OneFileToFile_FileDataHeaderEqualsExpected()
        {
            const string  FileName           = nameof(Save_OneFileToFile_FileDataHeaderEqualsExpected);
            string        headerPath         = FileName + HeaderFileExtension;
            string        dataPath           = FileName + DataFileExtension;
            string        input              = "inputdata123" + nameof(Save_OneFileToFile_FileDataHeaderEqualsExpected);
            string        encryptedInput     = "encrypteddata654" + nameof(Save_OneFileToFile_FileDataHeaderEqualsExpected);
            var           sizeMock           = CreateSizeMock(1, 20, 8);
            MS2CryptoMode expectedCryptoMode = (MS2CryptoMode)12345;
            IMS2ArchiveCryptoRepository repo = new FakeCryptoRepository(expectedCryptoMode, EncodingTest, input, encryptedInput, sizeMock.Object);
            IMS2FileHeader expectedFileData  = await repo.GetFileHeaderCrypto().ReadAsync(StringToStream(input));

            var archive = new MS2Archive(repo);

            AddDataStringToArchive(archive, input, encryptedInput, sizeMock, 1, "singlefile", CompressionType.Zlib);
            await archive.SaveAsync(headerPath, dataPath);

            using var fsHeader = File.OpenRead(headerPath);
            using var br       = new BinaryReader(fsHeader, EncodingTest, true);
            MS2CryptoMode actualCryptoMode = (MS2CryptoMode)br.ReadUInt32();

            var(actualFileInfoSize, actualFileDataSize, actualFileCount) = await repo.GetArchiveHeaderCrypto().ReadAsync(fsHeader);

            var msFileInfo = await repo.GetDecryptionStreamAsync(fsHeader, actualFileInfoSize, true);

            var msFileData = await repo.GetDecryptionStreamAsync(fsHeader, actualFileDataSize, true);

            IMS2FileHeader actualFileData = await repo.GetFileHeaderCrypto().ReadAsync(msFileData);

            Assert.AreEqual(expectedFileData.Id, actualFileData.Id);
            Assert.AreEqual(expectedFileData.Offset, actualFileData.Offset);
            Assert.AreEqual(expectedFileData.CompressionType, actualFileData.CompressionType);
            Assert.AreEqual(expectedFileData.Size.EncodedSize, actualFileData.Size.EncodedSize);
            Assert.AreEqual(expectedFileData.Size.CompressedSize, actualFileData.Size.CompressedSize);
            Assert.AreEqual(expectedFileData.Size.Size, actualFileData.Size.Size);
        }
Exemple #3
0
 bool IEquatable <IMS2FileHeader> .Equals(IMS2FileHeader other)
 {
     return(this.Equals(other as MS2FileHeader));
 }