public void ShouldBuildCorrectlySortedTreeLayersComplete() { var intervalNodeFour = new IntervalWithValue <long, long>(0, 5, 1); var nodeFour = new TreeNode <long, long>(intervalNodeFour, null, null); var intervalNodeFive = new IntervalWithValue <long, long>(10, 15, 2); var nodeFive = new TreeNode <long, long>(intervalNodeFive, null, null); var intervalNodeSix = new IntervalWithValue <long, long>(20, 25, 0); var nodeSix = new TreeNode <long, long>(intervalNodeSix, null, null); var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0); var nodeSeven = new TreeNode <long, long>(intervalNodeSeven, null, null); var intervalNodeTwo = new IntervalWithValue <long, long>(5, 10, 1); var nodeTwo = new TreeNode <long, long>(intervalNodeTwo, nodeFour, nodeFive); var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2); var nodeThree = new TreeNode <long, long>(intervalNodeThree, nodeSix, nodeSeven); var intervalNodeOne = new IntervalWithValue <long, long>(15, 20, 0); var nodeOne = new TreeNode <long, long>(intervalNodeOne, nodeTwo, nodeThree); var treeIntervals = new List <IntervalWithValue <long, long> > { intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive, intervalNodeSix, intervalNodeSeven }; var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals); Assert.Equal(nodeOne, tree.Root); }
public void ShouldResolveCorrectlyEnumerator() { var intervalNodeFour = new IntervalWithValue <long, long>(0, 5, 1); var intervalNodeFive = new IntervalWithValue <long, long>(10, 15, 2); var intervalNodeSix = new IntervalWithValue <long, long>(20, 25, 0); var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0); var intervalNodeTwo = new IntervalWithValue <long, long>(5, 10, 1); var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2); var intervalNodeOne = new IntervalWithValue <long, long>(15, 20, 0); var treeIntervals = new List <IntervalWithValue <long, long> > { intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive, intervalNodeSix, intervalNodeSeven }; var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals); using var enumerator = tree.GetEnumerator(); var enumeratorList = new List <IntervalWithValue <long, long> >(); while (enumerator.MoveNext()) { enumeratorList.Add(enumerator.Current); } enumeratorList.Sort(); treeIntervals.Sort(); Assert.Equal(treeIntervals, enumeratorList); }
public void OnNullRootGetEnumeratorShouldReturnEmptyListEnumerator() { var tree = new MutableIntervalBalancedTree <long, long>(new List <IntervalWithValue <long, long> >()); using var enumerator = tree.GetEnumerator(); Assert.Null(enumerator.Current); }
public void ShouldAddCorrectlyOnEmptyTree() { var tree = new MutableIntervalBalancedTree <long, long>(new List <IntervalWithValue <long, long> >()); Assert.Empty(tree); tree.Add(new IntervalWithValue <long, long>(115, 120, 0)); Assert.Contains(new IntervalWithValue <long, long>(115, 120, 0), tree); Assert.Single(tree); }
public void ShouldCountCorrectlyLargeAmountOfIntervals() { var intervals = new List <IntervalWithValue <long, long> >(); for (var i = 0; i < 25000000; i += 25) { intervals.Add(new IntervalWithValue <long, long>(i, i + 50, 0)); } var tree = new MutableIntervalBalancedTree <long, long>(intervals); Assert.Equal(1000000, tree.Count); }
public void ShouldSearchInLargeAmountOfOverlappedIntervals() { var intervals = new List <IntervalWithValue <long, long> >(); for (var i = 0; i < 25000000; i += 25) { intervals.Add(new IntervalWithValue <long, long>(i, i + 50, 0)); } var tree = new MutableIntervalBalancedTree <long, long>(intervals); var result = tree.Search(100000, true, true); Assert.Equal(3, result.Count); }
public void ShouldGetNullFirstInLargeAmountOfExclusiveIntervals() { var intervals = new List <IntervalWithValue <long, long> >(); for (var i = 0; i < 50000000; i += 50) { intervals.Add(new IntervalWithValue <long, long>(i, i + 50, 0)); } var tree = new MutableIntervalBalancedTree <long, long>(intervals); var result = tree.SearchFirst(-1, false, false); Assert.Null(result); }
public void ShouldSearchFirstInLargeAmountOfExclusiveIntervalsUpper() { var intervals = new List <IntervalWithValue <long, long> >(); for (var i = 0; i < 50000000; i += 50) { intervals.Add(new IntervalWithValue <long, long>(i, i + 50, 0)); } var tree = new MutableIntervalBalancedTree <long, long>(intervals); var expected = new IntervalWithValue <long, long>(49999900, 50000000, 0); var result = tree.SearchFirst(49999925, false, false); Assert.Equal(expected, result); }
public void ShouldGenerateCorrectlyTreeWithOverlappingCheckOnNoIntervalsOverlapped() { var intervalNodeFour = new IntervalWithValue <long, long>(0, 5, 1); var intervalNodeFive = new IntervalWithValue <long, long>(10, 15, 2); var intervalNodeSix = new IntervalWithValue <long, long>(20, 25, 0); var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0); var intervalNodeTwo = new IntervalWithValue <long, long>(5, 10, 1); var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2); var intervalNodeOne = new IntervalWithValue <long, long>(15, 20, 0); var treeIntervals = new List <IntervalWithValue <long, long> > { intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive, intervalNodeSix, intervalNodeSeven }; var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals, true); Assert.Equal(7, tree.Count); }
public void OnNotNullRootAndNotExistingValueContainsShouldReturnFalse() { var intervalNodeFour = new IntervalWithValue <long, long>(0, 5, 1); var intervalNodeFive = new IntervalWithValue <long, long>(10, 15, 2); var intervalNodeSix = new IntervalWithValue <long, long>(20, 25, 0); var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0); var intervalNodeTwo = new IntervalWithValue <long, long>(5, 10, 1); var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2); var intervalNodeOne = new IntervalWithValue <long, long>(15, 20, 0); var treeIntervals = new List <IntervalWithValue <long, long> > { intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive, intervalNodeSix, intervalNodeSeven }; var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals); Assert.DoesNotContain(new IntervalWithValue <long, long>(100, 115, 2), tree); }
public void ShouldCountCorrectlyItems() { var intervalNodeFour = new IntervalWithValue <long, long>(0, 5, 1); var intervalNodeFive = new IntervalWithValue <long, long>(10, 15, 2); var intervalNodeSix = new IntervalWithValue <long, long>(20, 25, 0); var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0); var intervalNodeTwo = new IntervalWithValue <long, long>(5, 10, 1); var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2); var intervalNodeOne = new IntervalWithValue <long, long>(15, 20, 0); var treeIntervals = new List <IntervalWithValue <long, long> > { intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive, intervalNodeSix, intervalNodeSeven }; var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals); Assert.Equal(7, tree.Count); }
public void ShouldNotRemoveNotExistingIntervalFromTree() { var intervalNodeFour = new IntervalWithValue <long, long>(0, 5, 1); var intervalNodeFive = new IntervalWithValue <long, long>(10, 15, 2); var intervalNodeSix = new IntervalWithValue <long, long>(20, 25, 0); var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0); var intervalNodeTwo = new IntervalWithValue <long, long>(5, 10, 1); var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2); var intervalNodeOne = new IntervalWithValue <long, long>(15, 20, 0); var treeIntervals = new List <IntervalWithValue <long, long> > { intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive, intervalNodeSix, intervalNodeSeven }; var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals); Assert.False(tree.Remove(new IntervalWithValue <long, long>(115, 120, 0))); Assert.Equal(7, tree.Count); }
public void ShouldSearchInTree() { var intervalNodeFour = new IntervalWithValue <long, long>(0, 5, 1); var intervalNodeFive = new IntervalWithValue <long, long>(10, 15, 2); var intervalNodeSix = new IntervalWithValue <long, long>(20, 25, 0); var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0); var intervalNodeTwo = new IntervalWithValue <long, long>(5, 10, 1); var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2); var intervalNodeOne = new IntervalWithValue <long, long>(15, 20, 0); var treeIntervals = new List <IntervalWithValue <long, long> > { intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive, intervalNodeSix, intervalNodeSeven }; var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals); var result = tree.Search(3, false, false); Assert.Single(result); Assert.Equal(intervalNodeFour, result.First()); }
public void ShouldRemoveCorrectlyIntervalFromTree() { var intervalNodeFour = new IntervalWithValue <long, long>(0, 5, 1); var intervalNodeFive = new IntervalWithValue <long, long>(10, 15, 2); var intervalNodeSix = new IntervalWithValue <long, long>(20, 25, 0); var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0); var intervalNodeTwo = new IntervalWithValue <long, long>(5, 10, 1); var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2); var intervalNodeOne = new IntervalWithValue <long, long>(15, 20, 0); var treeIntervals = new List <IntervalWithValue <long, long> > { intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive, intervalNodeSix, intervalNodeSeven }; var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals); Assert.True(tree.Remove(new IntervalWithValue <long, long>(15, 20, 0))); Assert.Equal(6, tree.Count); Assert.DoesNotContain(new IntervalWithValue <long, long>(15, 20, 0), tree); }
public void ShouldCopyCorrectlyTreeIntoArray() { var intervals = new IntervalWithValue <long, long> [7]; var intervalNodeFour = new IntervalWithValue <long, long>(0, 5, 1); var intervalNodeFive = new IntervalWithValue <long, long>(10, 15, 2); var intervalNodeSix = new IntervalWithValue <long, long>(20, 25, 0); var intervalNodeSeven = new IntervalWithValue <long, long>(30, 35, 0); var intervalNodeTwo = new IntervalWithValue <long, long>(5, 10, 1); var intervalNodeThree = new IntervalWithValue <long, long>(25, 30, 2); var intervalNodeOne = new IntervalWithValue <long, long>(15, 20, 0); var treeIntervals = new List <IntervalWithValue <long, long> > { intervalNodeOne, intervalNodeTwo, intervalNodeThree, intervalNodeFour, intervalNodeFive, intervalNodeSix, intervalNodeSeven }; var tree = new MutableIntervalBalancedTree <long, long>(treeIntervals); tree.CopyTo(intervals, 0); treeIntervals.Sort(); var intervalsAsList = intervals.ToList(); intervalsAsList.Sort(); Assert.Equal(treeIntervals, intervalsAsList); }
public void OnNullRootSearchMultipleShouldReturnEmptyList() { var tree = new MutableIntervalBalancedTree <long, long>(new List <IntervalWithValue <long, long> >()); Assert.Empty(tree.Search(0, false, false)); }
public void ShouldReturnFalseOnRemoveOnEmptyTree() { var tree = new MutableIntervalBalancedTree <long, long>(new List <IntervalWithValue <long, long> >()); Assert.False(tree.Remove(new IntervalWithValue <long, long>(115, 120, 0))); }
public void OnNullRootSearchFirstShouldReturnNull() { var tree = new MutableIntervalBalancedTree <long, long>(new List <IntervalWithValue <long, long> >()); Assert.Null(tree.SearchFirst(0, false, false)); }
public void OnNullRootContainsShouldReturnFalse() { var tree = new MutableIntervalBalancedTree <long, long>(new List <IntervalWithValue <long, long> >()); Assert.DoesNotContain(new IntervalWithValue <long, long>(0, 0, 0), tree); }