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), "Контент должен совпасть."); }); }
public void CorrectFreeSpaceAtStart() { Assert.AreEqual(_config.PageSize - DataPageHeader.Size, _dataPage.GetFreeSpaceLength()); }