public void SetUp() { if (Directory.Exists(TempFilesDirectory)) { Directory.Delete(TempFilesDirectory, true); } _dataPage = new Core.Models.DataPage(_config, 1, Path.Combine(TempFilesDirectory, "datapage-1"), false); }
public void CorrectlyReadFromExistingFile() { var path = Path.Combine(MockFilesDirectory, "read-write-to-file-test"); var dataPageFile = Path.Combine(path, "datapage-1"); using (var dataPage = new Core.Models.DataPage(_config, 1, dataPageFile, false)) { const string stringToWrite = "Hello world!"; var dataRecord = dataPage.Read(_config.PageSize - 24, 24); Assert.AreEqual(stringToWrite, Encoding.UTF8.GetString(dataRecord.Body), "Записанные данные должны корректно восстановиться."); } }
public void CorrectlyCreatesAndWritesToFile() { var path = Path.Combine(MockFilesDirectory, "write-to-file-test"); var dataPageFile = Path.Combine(path, "datapage-1"); var fileInfo = new FileInfo(dataPageFile); if (fileInfo.Exists) { fileInfo.Delete(); } const string stringToWrite = "Hello world!"; var dataRecord = Core.Models.DataRecord.Create(Encoding.UTF8.GetBytes(stringToWrite)); dataRecord.SetDataRecordId(1); var bytes = dataRecord.GetBytes(); int currentOffset; int offset; Core.Models.DataRecord dataRecordReaded; int freeSpaceLength; using (var dataPage = new Core.Models.DataPage(_config, 1, fileInfo.FullName, false)) { currentOffset = _config.PageSize - bytes.Length; dataPage.TrySaveData(dataRecord.Id, bytes, out offset); dataRecordReaded = dataPage.Read(offset, bytes.Length); freeSpaceLength = dataPage.GetFreeSpaceLength(); } Assert.Multiple(() => { Assert.AreEqual(currentOffset, offset, "Оффсет должен быть корректным."); Assert.AreEqual(_config.PageSize - bytes.Length - DataPageLocalIndex.Size - DataPageHeader.Size, freeSpaceLength, "Количество свободного места должно уменьшиться на кол-во записанных байт."); Assert.AreEqual(stringToWrite, Encoding.UTF8.GetString(dataRecordReaded.Body), "Записанные данные должны корректно восстановиться."); Assert.AreEqual(File.ReadAllBytes(Path.Combine(path, "expected-datapage-1")), File.ReadAllBytes(fileInfo.FullName), "Контент должен совпасть."); }); }