public void Initialize() { _session = new Session(new TestPlatform(), ""); _mockTree = new MockBTree <object>(); _mockProvider = new MockBTreeDataProvider <object>(); _index = new RecordIndex <object>(_session, _mockTree, _mockProvider); }
public void BTreeTravelTest() { List <BTreeNode> travelNodes = new List <BTreeNode>(); BTreeNode rootBTreeNode = MockBTree.CreateFakeBTree(); #region 二叉树广度优先遍历 //递归算法 //travelNodes.Clear(); //new BTree(EnumTravelOrder.PreOrder).BreadthFirstTravel(ref travelNodes, rootBTreeNode); //MockBTree.PrintTravelNodeNames(travelNodes, EnumTravelType.Breadth, EnumTravelOrder.None, EnumArithmeticType.Recursion); //非递归算法 travelNodes.Clear(); travelNodes = new BTree(EnumTravelOrder.PreOrder).BreadthFirstTravel(rootBTreeNode); MockBTree.PrintTravelNodeNames(travelNodes, EnumTravelType.Breadth, EnumTravelOrder.None, EnumArithmeticType.UnRecursion); #endregion #region 二叉树深度优先遍历 #region 递归算法 //前序 travelNodes.Clear(); new BTree(EnumTravelOrder.PreOrder).DepthFirstTravel(ref travelNodes, rootBTreeNode); MockBTree.PrintTravelNodeNames(travelNodes, EnumTravelType.Depth, EnumTravelOrder.PreOrder, EnumArithmeticType.Recursion); //中序 travelNodes.Clear(); new BTree(EnumTravelOrder.InOrder).DepthFirstTravel(ref travelNodes, rootBTreeNode); MockBTree.PrintTravelNodeNames(travelNodes, EnumTravelType.Depth, EnumTravelOrder.InOrder, EnumArithmeticType.Recursion); //后序 travelNodes.Clear(); new BTree(EnumTravelOrder.PostOrder).DepthFirstTravel(ref travelNodes, rootBTreeNode); MockBTree.PrintTravelNodeNames(travelNodes, EnumTravelType.Depth, EnumTravelOrder.PostOrder, EnumArithmeticType.Recursion); #endregion #region 非递归算法 //前序 travelNodes.Clear(); travelNodes = new BTree(EnumTravelOrder.PreOrder).DepthFirstTravel(rootBTreeNode); MockBTree.PrintTravelNodeNames(travelNodes, EnumTravelType.Depth, EnumTravelOrder.PreOrder, EnumArithmeticType.UnRecursion); //中序 travelNodes.Clear(); travelNodes = new BTree(EnumTravelOrder.InOrder).DepthFirstTravel(rootBTreeNode); MockBTree.PrintTravelNodeNames(travelNodes, EnumTravelType.Depth, EnumTravelOrder.InOrder, EnumArithmeticType.UnRecursion); //后序 travelNodes.Clear(); travelNodes = new BTree(EnumTravelOrder.PostOrder).DepthFirstTravel(rootBTreeNode); MockBTree.PrintTravelNodeNames(travelNodes, EnumTravelType.Depth, EnumTravelOrder.PostOrder, EnumArithmeticType.UnRecursion); #endregion #endregion }
public void ConstructorThrowsWhenArgIsNotReadOnly() { using (MemoryStream ms = new MemoryStream()) { using (MockStream stream = new MockStream(ms, true, true, true)) { long pageSize = BTreeNode <long, string> .GetRequiredPageSize(MockLongSerializer.CDataSize, MockStringSerializer.CDataSize, BTreeNode <long, string> .VeryMinKeyValuePairCapacity); using (StreamingPageStorage storage = StreamingPageStorage.Create(stream, pageSize, 1, null, new CancellationToken(false), true)) { MockBTree tree = new MockBTree(storage, new MockLongSerializer(), new MockStringSerializer()); Assert.ThrowsException <ArgumentException>(() => { var reader = new BTreeReader <long, string>(tree); }); } } } }
public void ConstructorWorks(long count) { using (MemoryStream ms = new MemoryStream()) { using (MockStream stream = new MockStream(ms, true, true, true)) { long pageSize = BTreeNode <long, string> .GetRequiredPageSize(MockLongSerializer.CDataSize, MockStringSerializer.CDataSize, BTreeNode <long, string> .VeryMinKeyValuePairCapacity); using (var storage = StreamingPageStorage.Create(stream, pageSize, 1, null, new CancellationToken(false), true)) { var tree = new MockBTree(storage, new MockLongSerializer(), new MockStringSerializer()); //Initialize some data into the tree for (long i = 0; i < count; i++) { Assert.IsTrue(tree.Insert(i, i.ToString(), false, out _)); } } //Load the tree as read-only using (var storage = StreamingPageStorage.Load(stream, true, true, true)) { var tree = new MockBTree(storage, new MockLongSerializer(), new MockStringSerializer()); BTreeReader <long, string> reader = new BTreeReader <long, string>(tree); Assert.AreSame(tree, reader.BTree); if (tree.Root != null) { Assert.AreEqual(tree.Root.PageIndex, reader.RootNode.PageIndex); } else { Assert.IsNull(reader.RootNode); } } } } }