public void GivenNullOperationWhenCreateSqrtTreeThenException() { Assert.Throws <ArgumentNullException>(() => { SqrtTree <int> tree = new SqrtTree <int>(Enumerable.Range(1, 3), null); }); }
public void GivenNullAsEnumerableWhenCreateSqrtTreeThenException() { Assert.Throws <ArgumentNullException>(() => { SqrtTree <int> tree = new SqrtTree <int>(null, Sum); }); }
public void GivenUnsupportedCapacityWhenCreateSqrtTreeThenException(int capacity) { Assert.Throws <ArgumentOutOfRangeException>(() => { SqrtTree <int> tree = new SqrtTree <int>(capacity, Sum); }); }
public void GivenEmptyEnumerationOfDataWhenCreateSqrtTreeThenException() { Assert.Throws <ArgumentException>(() => { SqrtTree <int> tree = new SqrtTree <int>(Enumerable.Empty <int>(), Sum); }); }
public void GivenTreeWhenQueueOutsideOfRangeThenThrowException(int left, int right) { var tree = new SqrtTree <int>(100, Sum); Assert.Throws <ArgumentOutOfRangeException>(() => { tree.Query(left, right); }); }
public void GivenCapacityWhenUpdateThenQueueReflectChanges() { var tree = new SqrtTree <int>(10, Sum); tree[1] = 10; tree[5] = 20; Assert.Equal(30, tree.Query(0, 9)); Assert.Equal(10, tree.Query(1, 1)); Assert.Equal(20, tree.Query(5, 5)); }
public void GivenArrayAndConstructTreeWhenChangeArrayThenResultsInTreeAreNotChanged() { var data = new int[4] { 1, 2, 3, 4 }; var tree = new SqrtTree <int>(data, Sum); var sum = tree.Query(0, 3); data[1] = 10; tree[2] = 10; tree[2] = 3; Assert.Equal(sum, tree.Query(0, 3)); }
public void GivenTreeWhenQueryIntervalThenReturnResultOfOperationOnRange(int size) { var data = Enumerable.Range(1, size).ToArray(); var tree = new SqrtTree <int>(data, Sum); for (int i = 0; i < size; i++) { var res = 0; for (int j = i; j < size; j++) { res = Sum(res, data[j]); Assert.Equal(res, tree.Query(i, j)); Assert.Equal(res, tree.Query(j, i)); } } }
public void GivenTreeWhenUpdateElementThenQueuedReflectsChanges() { int size = 100; Func <int, int, int> add = (a, b) => a + b; var updatedTree = new SqrtTree <int>(Enumerable.Range(1, size), add); var canonicalTree = new SqrtTree <int>(Enumerable.Range(1, size), add); updatedTree[size / 2] = updatedTree[size / 2] + 100; for (int i = 0; i < size; i++) { for (int j = i; j < size; j++) { Assert.Equal(canonicalTree.Query(i, j), updatedTree.Query(i, j) - ((i <= size / 2 && j >= size / 2) ? 100 : 0)); } } }
public void GivenTreeWhenAccessIndexOutsizeOfTreeSizeThenThrowException(int index) { var tree = new SqrtTree <int>(10, Sum); Assert.Throws <ArgumentOutOfRangeException>(() => tree[index]); }
public void GivenCapacityWhenCreateSqrtTreeThenNoExceptions() { SqrtTree <int> tree = new SqrtTree <int>(100, Sum); }
public void GivenLabmdaWhenCreateSqrtTreeThenNoExceptions() { Func <int, int, int> add = (a, b) => a + b; SqrtTree <int> tree = new SqrtTree <int>(Enumerable.Range(0, 100), add); }
public void GivenNonEmptyEnumerationOfDataWhenCreateSqrtTreeThenNoExceptions() { SqrtTree <int> tree = new SqrtTree <int>(Enumerable.Range(0, 100), Sum); }