public void Should_handle_GetParent_operation_over_larger_hierarchy() { // build a sample hierarchy var hierarchyEntry = new HierarchyEntry { Name = "Test Hierarchy", SchemaName = "dbo", TableName = "test" }; // initialize the provider var dataProvider = new MssqlDataProvider(); var provider = new MssqlHierarchyDataProvider(dataProvider); // generate the complex hierarchy TestHierarchy.BuildTestHierarchy(hierarchyEntry, provider); var rootNode = provider.GetRootNode(hierarchyEntry); var primaryChildren = provider.GetChildren(hierarchyEntry, rootNode); var primaryChild1 = primaryChildren.First(); var secondaryChildren = provider.GetChildren(hierarchyEntry, primaryChild1); var leafChild = secondaryChildren.First(); var parent = provider.GetParent(hierarchyEntry, leafChild); Assert.That(parent.LeftId, Is.LessThan(leafChild.LeftId)); Assert.That(parent.RightId, Is.GreaterThan(leafChild.RightId)); // clean up dataProvider.DropTable(hierarchyEntry.SchemaName, hierarchyEntry.TableName); }
public void Should_handle_GetDescendants_operation_over_larger_hierarchy() { // build a sample hierarchy var hierarchyEntry = new HierarchyEntry { Name = "Test Hierarchy", SchemaName = "dbo", TableName = "test" }; // initialize the provider var dataProvider = new MssqlDataProvider(); var provider = new MssqlHierarchyDataProvider(dataProvider); // generate the complex hierarchy TestHierarchy.BuildTestHierarchy(hierarchyEntry, provider); var rootNode = provider.GetRootNode(hierarchyEntry); var descendants = provider.GetDescendants(hierarchyEntry, rootNode, true, true); Assert.That(descendants.Count, Is.EqualTo(7)); Assert.That(descendants[0].LeftId, Is.EqualTo(1)); Assert.That(descendants[0].RightId, Is.EqualTo(14)); Assert.That(descendants[1].LeftId, Is.EqualTo(2)); Assert.That(descendants[1].RightId, Is.EqualTo(7)); Assert.That(descendants[2].LeftId, Is.EqualTo(3)); Assert.That(descendants[2].RightId, Is.EqualTo(4)); Assert.That(descendants[3].LeftId, Is.EqualTo(5)); Assert.That(descendants[3].RightId, Is.EqualTo(6)); Assert.That(descendants[4].LeftId, Is.EqualTo(8)); Assert.That(descendants[4].RightId, Is.EqualTo(13)); Assert.That(descendants[5].LeftId, Is.EqualTo(9)); Assert.That(descendants[5].RightId, Is.EqualTo(10)); Assert.That(descendants[6].LeftId, Is.EqualTo(11)); Assert.That(descendants[6].RightId, Is.EqualTo(12)); Assert.That(rootNode.LeftId, Is.EqualTo(1)); Assert.That(rootNode.RightId, Is.EqualTo(14)); // clean up dataProvider.DropTable(hierarchyEntry.SchemaName, hierarchyEntry.TableName); }
public void Should_handle_GetAncestors_operation_over_larger_hierarchy() { // build a sample hierarchy var hierarchyEntry = new HierarchyEntry { Name = "Test Hierarchy", SchemaName = "dbo", TableName = "test" }; // initialize the provider var dataProvider = new MssqlDataProvider(); var provider = new MssqlHierarchyDataProvider(dataProvider); // generate the complex hierarchy TestHierarchy.BuildTestHierarchy(hierarchyEntry, provider); var rootNode = provider.GetRootNode(hierarchyEntry); var primaryChildren = provider.GetChildren(hierarchyEntry, rootNode); var primaryChild1 = primaryChildren.First(); var secondaryChildren = provider.GetChildren(hierarchyEntry, primaryChild1); var leafChild = secondaryChildren.First(); var ancestors = provider.GetAncestors(hierarchyEntry, leafChild, true, true); Assert.That(ancestors.Count, Is.EqualTo(3)); Assert.That(ancestors[0].LeftId, Is.EqualTo(1)); Assert.That(ancestors[0].RightId, Is.EqualTo(14)); Assert.That(ancestors[1].LeftId, Is.EqualTo(2)); Assert.That(ancestors[1].RightId, Is.EqualTo(7)); Assert.That(ancestors[2].LeftId, Is.EqualTo(leafChild.LeftId)); Assert.That(ancestors[2].RightId, Is.EqualTo(leafChild.RightId)); // clean up dataProvider.DropTable(hierarchyEntry.SchemaName, hierarchyEntry.TableName); }