public void ValuesCountAndIndexCountCanBePersistedAndRestored()
        {
            c.InitFirstNode();
            var node2 = c.AddNewNode(out int node2Index);

            node2.HasValue = true;
            node2.Value    = 100;
            c.ReassignNode(ref node2, node2Index);

            var node3 = c.AddNewNode(out var node3Index);

            node3.HasValue = true;
            node3.Value    = 200;
            c.ReassignNode(ref node3, node3Index);

            c.IncrementValuesCount();
            c.IncrementValuesCount();
            c.IncrementValuesCount();
            c.DecrementValuesCount();

            var expectedValuesCount = 2;
            var expectedNodeIndex   = 3;
            var expectedFullSize    = c.FileSizeBytes;

            c.Dispose();

            var restoredContainer = new MemoryMappedNodeContainer <int>(c.FileName);

            Assert.Equal(expectedFullSize, c.FileSizeBytes);

            var actualValuesCount = restoredContainer.GetValuesCount();
            var actualNodeIndex   = restoredContainer.GetLastNodeIndex();

            Assert.Equal(expectedValuesCount, actualValuesCount);
            Assert.Equal(expectedNodeIndex, actualNodeIndex);

            var actualNode2 = restoredContainer.Get(node2Index);
            var actualNode3 = restoredContainer.Get(node3Index);

            Assert.Equal(node2.HasValue, actualNode2.HasValue);
            Assert.Equal(node2.Value, actualNode2.Value);

            Assert.Equal(node3.HasValue, actualNode3.HasValue);
            Assert.Equal(node3.Value, actualNode3.Value);
        }
 public MemoryMappedContainerTests()
 {
     c = new MemoryMappedNodeContainer <int>(RName(), 90000);
 }