예제 #1
0
        /// 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]]);
        }
예제 #3
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]]);
        }
예제 #7
0
        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));
        }