/// Summary /// Time: 4 min 06 sec /// Pattern: Manual output review /// Generalizes 4 unit tests FindParentLeftSubTreeTest, FindParentRightSubTreeTest, FindParentRightSubTreeNodeNotPresentTest, /// FindParentLeftSubTreeNodeNotPresentTest into one PUT public void FindParentLeftSubTreeTest([PexAssumeUnderTest] int[] elements, int position) { PexAssume.AreDistinctValues <int>(elements); PexAssume.IsTrue(position >= 0 && position < elements.Length); BinarySearchTree <int> bst = new BinarySearchTree <int>(elements); PexAssume.AreNotEqual(bst.Root.Value, elements[position]); PexObserve.ValueForViewing <int>("FindParentValue", bst.FindParent(elements[position]).Value); }
public void Test_Map(int[] keys, int[] values, [PexAssumeNotNull] Func <int, int, int> func) { var dict = CreateDictionary(keys, values); PexAssume.AreNotEqual(0, keys.Length); func = func.Memoize(); var dict1 = dict.Map(func); PexAssert.AreEqual(func(keys[0], values[0]), dict1[keys[0]]); }
/// Summary /// Time: 1 min 12 sec /// Pattern: AAAA, State Relation /// Generalized two unit tests "RemoveRootNoSubtreesTest and RemoveTreeHasNoItemsTest" into one PUT public void RemoveRootNoSubtreesTest(int element1, int element2) { PexAssume.AreNotEqual(element1, element2); BinarySearchTree <int> bst = new BinarySearchTree <int> { element1 }; PexAssert.IsTrue(bst.Remove(element1)); PexAssert.IsNull(bst.Root); PexAssert.AreEqual(0, bst.Count); PexAssert.IsFalse(bst.Remove(element2)); }
public void Test_Update(int[] keys, int[] values, int key, int key1, [PexAssumeNotNull] Func <int, Optional <int> > updateFunc) { var dict = CreateDictionary(keys, values); PexAssume.AreNotEqual(key, key1); Optional <int> value; var dict1 = dict.Update(key, updateFunc, out value); Array.Sort(keys, values); int i = Array.BinarySearch(keys, key); PexAssert .Case(i >= 0).Implies(() => dict[key] == value && dict1[key] == updateFunc(value.Value) && dict[key1] == dict1[key1]) .Case(i < 0).Implies(() => dict[key] == Optional <int> .None && ReferenceEquals(dict1, dict)) .ExpectExactlyOne(); }
public void Test_Remove <TValue>(int[] keys, TValue[] values, int key, int key1) { var dict = CreateDictionary(keys, values); PexAssume.AreNotEqual(key, key1); Optional <TValue> value; var dict1 = dict.Remove(key, out value); Array.Sort(keys, values); int i = Array.BinarySearch(keys, key); PexAssert .Case(i >= 0).Implies(() => dict[key] == value && dict1[key] == Optional <TValue> .None && dict[key1] == dict1[key1]) .Case(i < 0).Implies(() => dict[key] == Optional <TValue> .None && ReferenceEquals(dict1, dict)) .ExpectExactlyOne(); }
public void Test_MapPartial(int[] keys, int[] values, int key1, [PexAssumeNotNull] Func <int, int, Optional <int> > func) { var dict = CreateDictionary(keys, values); PexAssume.AreNotEqual(0, keys.Length); int i = PexChoose.DefaultSession.ChooseIndexValue("From keys", keys); foreach (int key in keys) { PexAssume.AreNotEqual(key, key1); } var dict1 = dict.MapPartial(func); PexAssert.AreEqual(Optional <int> .None, dict1[key1]); PexAssert.AreEqual(func(keys[i], values[i]), dict1[keys[i]]); }
public void BalanceFactorPUT(int val1, int val2) { PexAssume.AreNotEqual(val1, val2); int minVal = Math.Min(val1, val2); int other = Math.Max(val1, val2); AvlTree <int> actual = new AvlTree <int> { minVal, other }; AvlTreeNode <int> root = actual.FindNode(minVal); AvlTreeNode <int> leaf = actual.FindNode(other); AvlTreeNode <int> emptyNode = default(AvlTreeNode <int>); PexAssert.AreEqual(-1, actual.GetBalanceFactor(root)); PexAssert.AreEqual(0, actual.GetBalanceFactor(leaf)); PexAssert.AreEqual(0, actual.GetBalanceFactor(emptyNode)); }