Ejemplo n.º 1
0
        public void SetUp()
        {
            if (Directory.Exists(TempFilesDirectory))
            {
                Directory.Delete(TempFilesDirectory, true);
            }

            _dataPage = new Core.Models.DataPage(_config, 1, Path.Combine(TempFilesDirectory, "datapage-1"), false);
        }
Ejemplo n.º 2
0
        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), "Записанные данные должны корректно восстановиться.");
            }
        }
Ejemplo n.º 3
0
        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), "Контент должен совпасть.");
            });
        }