public void Unlinked_Nodes_Are_Removed_From_Total()
        {
            var rootNode = _provider.GetRootNode(2);
            var node1    = _provider.CreateNode(2);
            var node2    = _provider.CreateNode(2);

            rootNode.ChildrenAddresses.Add(node1.Address);
            rootNode.ChildrenAddresses.Add(node2.Address);
            _provider.Flush();

            var newProvider = new RecordBTreeDataProvider <object>(
                _session,
                _manager,
                new BTreeNodeBsonSerializer <object>(),
                "Root");

            rootNode = newProvider.GetRootNode(2);
            newProvider.GetNode(node2.Address);
            rootNode.ChildrenAddresses.RemoveRange(1, 1);
            newProvider.Flush();

            newProvider = new RecordBTreeDataProvider <object>(
                _session,
                _manager,
                new BTreeNodeBsonSerializer <object>(),
                "Root");

            Assert.AreEqual(2, newProvider.MetaRecord.NumberOfNodes);
        }
 public void Initialize()
 {
     _session  = new Session(new TestPlatform(), "root");
     _manager  = new TestRecordManager();
     _provider = new RecordBTreeDataProvider <object>(
         _session,
         _manager, new BTreeNodeBsonSerializer <object>(), "Root");
 }
        public void Construction_Uses_Existing_Meta_Record()
        {
            var secondProvider = new RecordBTreeDataProvider <object>(
                _session,
                _manager,
                new BTreeNodeBsonSerializer <object>(),
                "Root");

            Assert.AreEqual(_provider.MetaRecord.Record.Header.Address,
                            secondProvider.MetaRecord.Record.Header.Address);
        }
        public void Get_Node_Loads_From_Record()
        {
            var node         = _provider.CreateNode(2);
            var dataProvider = new RecordBTreeDataProvider <object>(
                _session,
                _manager,
                new BTreeNodeBsonSerializer <object>(),
                "Root");
            var loadedNode = dataProvider.GetNode(node.Address);

            Assert.AreEqual(node.Address, loadedNode.Address);
        }
        public void Get_RootNode_Returns_Same_Node()
        {
            _provider.GetRootNode(2);
            _provider.Flush();
            var newProvider = new RecordBTreeDataProvider <object>(
                _session,
                _manager,
                new BTreeNodeBsonSerializer <object>(),
                "Root");

            newProvider.GetRootNode(2);

            Assert.AreEqual(2, _manager.Records.Values.Count()); //metarecord and rootnode
        }
        public void Get_Node_Caches_Node()
        {
            var node        = _provider.CreateNode(2);
            var newProvider = new RecordBTreeDataProvider <object>(
                _session,
                _manager,
                new BTreeNodeBsonSerializer <object>(),
                "Root");

            node = newProvider.GetNode(node.Address); // get with new provider
            node.ChildrenAddresses.Add(12);
            node = newProvider.GetNode(node.Address); //get it again
            Assert.AreEqual(12, node.ChildrenAddresses[0]);
        }
        public void Flush_Updates_MetaRecord_NumberOfNodes()
        {
            var rootNode = _provider.GetRootNode(2);
            var node1    = _provider.CreateNode(2);
            var node2    = _provider.CreateNode(2);

            rootNode.ChildrenAddresses.Add(node1.Address);
            rootNode.ChildrenAddresses.Add(node2.Address);
            _provider.Flush();
            var newProvider = new RecordBTreeDataProvider <object>(
                _session,
                _manager,
                new BTreeNodeBsonSerializer <object>(),
                "Root");

            Assert.AreEqual(3, newProvider.MetaRecord.NumberOfNodes);
        }