예제 #1
0
        public void Defer <T>([PexAssumeNotNull] IEnumerable <T> source)
        {
            var stateful   = default(StatefulEnumerable <T>);
            var enumerable = EnumerableEx.Defer(() => { stateful = new StatefulEnumerable <T>(source);
                                                        return(stateful); });

            PexAssert.IsNull(stateful);
            var enumerator = enumerable.GetEnumerator();

            PexAssert.IsNotNull(stateful);

            var sourceEnumerator = source.GetEnumerator();

            var expectedState = new List <EnumerableState>()
            {
                EnumerableState.Fresh,
                EnumerableState.CreatingEnumerator,
                EnumerableState.CreatedEnumerator,
                EnumerableState.MovingNext
            };

            if (!sourceEnumerator.MoveNext())
            {
                PexAssert.IsFalse(enumerator.MoveNext());

                expectedState.Add(EnumerableState.AtEnd);
                PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b));
            }
            else
            {
                PexAssert.IsTrue(enumerator.MoveNext());

                expectedState.Add(EnumerableState.MovedNext);
                PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b));


                expectedState.Add(EnumerableState.GettingCurrent);
                PexAssert.AreEqual(sourceEnumerator.Current, enumerator.Current);
                expectedState.Add(EnumerableState.GotCurrent);
                PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b));

                var count = 1;
                while (sourceEnumerator.MoveNext())
                {
                    count++;
                    expectedState.Add(EnumerableState.MovingNext);
                    PexAssert.IsTrue(enumerator.MoveNext());
                    expectedState.Add(EnumerableState.MovedNext);
                    PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b));

                    expectedState.Add(EnumerableState.GettingCurrent);
                    PexAssert.AreEqual(sourceEnumerator.Current, enumerator.Current);
                    expectedState.Add(EnumerableState.GotCurrent);
                    PexAssert.AreElementsEqual(expectedState, stateful.States, (a, b) => object.Equals(a, b));

                    PexAssert.AreEqual(count, stateful.EnumerationCount);
                }
                PexAssert.IsFalse(enumerator.MoveNext());
            }
        }
예제 #2
0
        /// Summary
        /// Time: 8 min 1 sec
        /// Pattern: State Relation, AAAA
        public void RemoveFirstOneItemInListTest([PexAssumeUnderTest] SinglyLinkedList <int> sll)
        {
            PexAssume.IsTrue(sll.Count > 0);
            int prevCount = sll.Count;

            int nextFirst = 0;

            if (sll.Count > 1)
            {
                nextFirst = sll.Head.Next.Value;
            }

            PexAssert.IsTrue(sll.RemoveFirst());
            PexAssert.AreEqual(prevCount - 1, sll.Count);

            if (prevCount == 1)
            {
                PexAssert.IsNull(sll.Head);
                PexAssert.IsNull(sll.Tail);
            }
            else
            {
                PexAssert.IsTrue(nextFirst == sll.Head.Value);
            }
        }
        public void AddAfterMiddleNodeTest04()
        {
            SinglyLinkedList <int> singlyLinkedList;

            int[] ints = new int[3];
            singlyLinkedList =
                SinglyLinkedListFactory.Create((SinglyLinkedListNode <int>)null, ints);
            this.AddAfterMiddleNodeTest(singlyLinkedList, 0);
            PexAssert.IsNotNull((object)singlyLinkedList);
            PexAssert.IsNotNull(singlyLinkedList.Head);
            PexAssert.AreEqual <int>(0, singlyLinkedList.Head.Value);
            PexAssert.IsNotNull(singlyLinkedList.Head.Next);
            PexAssert.AreEqual <int>(0, singlyLinkedList.Head.Next.Value);
            PexAssert.IsNotNull(singlyLinkedList.Head.Next.Next);
            PexAssert.AreEqual <int>(0, singlyLinkedList.Head.Next.Next.Value);
            PexAssert.IsNotNull(singlyLinkedList.Head.Next.Next.Next);
            PexAssert.AreEqual <int>(0, singlyLinkedList.Head.Next.Next.Next.Value);
            PexAssert.IsNull(singlyLinkedList.Head.Next.Next.Next.Next);
            PexAssert.IsNotNull(singlyLinkedList.Tail);
            PexAssert.IsTrue(object.ReferenceEquals
                                 (singlyLinkedList.Tail, singlyLinkedList.Tail.Next.Next.Next));
            PexAssert.AreEqual <bool>
                (false, ((CollectionBase <int>)singlyLinkedList).IsSynchronized);
            PexAssert.AreEqual <int>(4, ((CollectionBase <int>)singlyLinkedList).Count);
        }
예제 #4
0
        //check for saved substorage settings removed
        public void SubstorageSettingsPUT2([PexAssumeUnderTest] String subName, [PexAssumeUnderTest] String[] name, [PexAssumeUnderTest] Object[] value)
        {
            PexAssume.IsTrue(name.Length == value.Length);
            for (int i = 0; i < value.Length; i++)
            {
                PexAssume.IsTrue(value[i] is String || value[i] is int);
                PexAssume.IsNotNullOrEmpty(name[i]);
                PexAssume.IsNotNull(value[i]);
                PexAssume.IsTrue(name[i].Contains("t"));
            }
            for (int i = 0; i < name.Length; i++)
            {
                PexAssume.IsNotNullOrEmpty(name[i]);
            }
            ISettingsStorage sub = storage.MakeChildStorage(subName);

            for (int j = 0; j < value.Length; j++)
            {
                sub.SaveSetting(name[j], value[j]);
            }
            for (int j = 0; j < value.Length; j++)
            {
                String curr = name[j];
                sub.RemoveSetting(curr);
                PexAssert.IsNull(sub.GetSetting(curr), curr + " not removed");
            }
        }
예제 #5
0
        /// Summary
        /// Time: 18 min 23 sec
        /// Pattern: AAAA, Commutative diagram
        /// A classic example for commutative diagram, as the operation is made in parallel using lists
        /// Notes: A hashset is taken as input as we need unique elements for insertion into BST
        /// Failing tests : Exposed a serious bug inside binary search tree implementation that throws NullPointerException
        public void RemoveNodeWithBothSubtreesTest([PexAssumeUnderTest] HashSet <int> setelem, int position)
        {
            List <int> elements = new List <int>(setelem);

            PexAssume.IsTrue(position >= 0 && position < elements.Count);
            PexAssume.IsTrue(elements.Count > 0);

            BinarySearchTree <int> bst = new BinarySearchTree <int>(elements);

            int targetElement = elements[position];

            PexAssert.IsTrue(bst.Remove(targetElement));
            elements.Remove(targetElement);

            if (elements.Contains(targetElement)) //Can happen when there are duplicate elements in the list
            {
                PexAssert.IsNotNull(bst.FindNode(targetElement));
            }
            else
            {
                PexAssert.IsNull(bst.FindNode(targetElement));
            }

            //Assert.AreEqual(19, bst.Root.Left.Value); //Cannot be generalized
            PexAssert.AreEqual(elements.Count, bst.Count);
        }
예제 #6
0
        /// Summary
        /// Time: 4 min 09 sec
        /// Pattern: AAAA, State Relation
        public void FindParentRootNodeTest([PexAssumeUnderTest] int[] elements)
        {
            PexAssume.IsTrue(elements.Length > 0);
            BinarySearchTree <int> bst = new BinarySearchTree <int>(elements);

            PexAssert.IsNull(bst.FindParent(bst.Root.Value));
        }
예제 #7
0
        public void RemoveSettingsPUT1([PexAssumeUnderTest] String[] name, [PexAssumeUnderTest] Object[] value)
        {
            PexAssume.IsTrue(value.Length < 255);
            PexAssume.IsTrue(name.Length == value.Length);
            for (int i = 0; i < value.Length; i++)
            {
                PexAssume.IsTrue(value[i] is String || value[i] is int);
                PexAssume.IsNotNullOrEmpty(name[i]);
                PexAssume.IsNotNull(value[i]);
                //PexAssume.IsTrue(name[i].Contains("t"));
            }

            for (int i = 0; i < name.Length; i++)
            {
                storage.SaveSetting(name[i], value[i]);
            }
            for (int i = 0; i < name.Length; i++)
            {
                if (storage.GetSetting(name[i]) != null)
                {
                    storage.RemoveSetting(name[i]);
                    PexAssert.IsNull(storage.GetSetting(name[i]), name[i] + " not removed");
                }
            }
        }
예제 #8
0
 /// Summary
 /// Time: 1 min 03 sec
 /// Pattern: AAA, State Relation
 public void ClearTest([PexAssumeUnderTest] SinglyLinkedList <int> sll)
 {
     sll.Clear();
     PexAssert.AreEqual(0, sll.Count);
     PexAssert.IsNull(sll.Head);
     PexAssert.IsNull(sll.Tail);
 }
예제 #9
0
 public void SubGroupSettingsPUT115()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         MemorySettingsStorage memorySettingsStorage;
         SettingsGroup         settingsGroup;
         string[] ss = new string[2];
         object[] os = new object[2];
         ss[0] = "";
         ss[1] = "";
         os[0] = "";
         object boxb = (object)(default(bool));
         os[1] = boxb;
         memorySettingsStorage = MemorySettingsStorageFactory.Create(ss, os);
         disposables.Add((IDisposable)memorySettingsStorage);
         settingsGroup = new SettingsGroup((ISettingsStorage)memorySettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         object boxb1 = (object)(default(bool));
         PexSafeHelpers.AssignBoxedValue <bool>(boxb1, true);
         this.SubGroupSettingsPUT1(settingsGroup, "", boxb1);
         disposables.Dispose();
         PexAssert.IsNotNull((object)settingsGroup);
         PexAssert.IsNull(settingsGroup.Storage);
     }
 }
예제 #10
0
        public void SubGroupSettingsPUT3([PexAssumeUnderTest] SettingsGroup testGroup1, [PexAssumeUnderTest]
                                         String settingName, [PexAssumeUnderTest] Object settingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);
            DelegateHandler dhObj1   = new DelegateHandler(testGroup1);
            SettingsGroup   subGroup = new SettingsGroup(testGroup1.Storage);

            PexAssert.IsNotNull(subGroup);
            PexAssert.IsNotNull(subGroup.Storage);

            //Without delegate
            subGroup.SaveSetting(settingName, settingValue);
            PexAssert.AreEqual(settingValue, subGroup.GetSetting(settingName));
            subGroup.RemoveSetting(settingName);
            PexAssert.IsNull(subGroup.GetSetting(settingName));

            //With delegate
            DelegateHandler dhObj2 = new DelegateHandler(subGroup);

            subGroup.SaveSetting(settingName, settingValue);
            PexAssert.AreEqual(settingValue, subGroup.GetSetting(settingName));
            subGroup.RemoveSetting(settingName);
            PexAssert.IsNull(subGroup.GetSetting(settingName));
        }
 public void BadSettingPUT128()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         MemorySettingsStorage memorySettingsStorage;
         SettingsGroup         settingsGroup;
         string[] ss = new string[4];
         object[] os = new object[4];
         ss[0] = "\u5573\u8549\ue725";
         ss[1] = "\u5573\u8549\ue725";
         ss[2] = "\u5573\u8549\ue725";
         ss[3] = "\u5573\u8549\ue725";
         os[0] = "\u5573\u8549\ue725";
         os[1] = "\u5573\u8549\ue725";
         os[2] = "\u5573\u8549\ue725";
         os[3] = "\u5573\u8549\ue725FFFFF";
         memorySettingsStorage = MemorySettingsStorageFactory.Create(ss, os);
         disposables.Add((IDisposable)memorySettingsStorage);
         settingsGroup = new SettingsGroup((ISettingsStorage)memorySettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         this.BadSettingPUT1(settingsGroup, "\u5573\u8549\ue725", "UFn\u0080?@\0", 0);
         disposables.Dispose();
         PexAssert.IsNotNull((object)settingsGroup);
         PexAssert.IsNull(settingsGroup.Storage);
     }
 }
 public void BadSettingPUT125()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         MemorySettingsStorage memorySettingsStorage;
         SettingsGroup         settingsGroup;
         string[] ss  = new string[4];
         string[] ss1 = new string[4];
         ss[0]  = "l!%\u0800\0@\0";
         ss[1]  = "l!%\u0800\0@\0";
         ss[2]  = "l!%\u0800\0@\0";
         ss[3]  = "l!%\u0800\0@\0";
         ss1[0] = "l!%\u0800\0@\0";
         ss1[1] = "l!%\u0800\0@\0";
         ss1[2] = "l!%\u0800\0@\0";
         ss1[3] = "l!%\u0800\0@\0";
         memorySettingsStorage = MemorySettingsStorageFactory.Create(ss, (object[])ss1);
         disposables.Add((IDisposable)memorySettingsStorage);
         settingsGroup = new SettingsGroup((ISettingsStorage)memorySettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         this.BadSettingPUT1(settingsGroup, "l!%\u0800\0@\0", "l!%\u0800\0@\0", 0);
         disposables.Dispose();
         PexAssert.IsNotNull((object)settingsGroup);
         PexAssert.IsNull(settingsGroup.Storage);
     }
 }
예제 #13
0
        /// Summary
        /// Time: 1 min 24 sec
        /// Pattern: AAAA, State Relation
        public void FindParentNoItemsInBstTest([PexAssumeUnderTest] List <int> elements, int notexistelement)
        {
            PexAssume.IsFalse(elements.Contains(notexistelement));
            BinarySearchTree <int> bst = new BinarySearchTree <int>(elements);

            PexAssert.IsNull(bst.FindParent(notexistelement));
        }
예제 #14
0
        public void BinaryTreeNodeConstructorPUT(int value)
        {
            BinaryTreeNode <int> node = new BinaryTreeNode <int>(value);

            PexAssert.AreEqual(value, node.Value);
            PexAssert.IsNull(node.Left);
            PexAssert.IsNull(node.Right);
        }
예제 #15
0
        public double?LongitudeGetTest([PexAssumeUnderTest] XmpTag target)
        {
            double?result = target.Longitude;

            PexAssert.IsNull(result);
            return(result);
            // TODO: add assertions to method XmpTagTest.LongitudeGetTest(XmpTag)
        }
예제 #16
0
        /// Summary
        /// Time: 1 min 15 sec
        /// Pattern: AAA, State Relation, AllowedException
        public void ClearTest(string[] elements)
        {
            BinarySearchTree <string> bst = new BinarySearchTree <string>(elements);

            bst.Clear();
            PexAssert.IsNull(bst.Root);
            PexAssert.AreEqual(0, bst.Count);
        }
예제 #17
0
        public void ConstructorPUT(int value)
        {
            DoublyLinkedListNode <int> n = new DoublyLinkedListNode <int>(value);

            PexAssert.AreEqual(value, n.Value);
            PexAssert.IsNull(n.Previous);
            PexAssert.IsNull(n.Next);
        }
예제 #18
0
        public void ClearPUT([PexAssumeUnderTest] IList <int> values)
        {
            DoublyLinkedList <int> dll = new DoublyLinkedList <int> (values);

            dll.Clear();
            PexAssert.IsNull(dll.Head);
            PexAssert.IsNull(dll.Tail);
            PexAssert.AreEqual(0, dll.Count);
        }
        public void SubstorageSettingsPUT1([PexAssumeUnderTest] MemorySettingsStorage storage1, [PexAssumeUnderTest] String subStorageName, [PexAssumeUnderTest] String settingName, [PexAssumeNotNull] Object settingValue)
        {
            ISettingsStorage sub = storage1.MakeChildStorage(subStorageName);

            sub.SaveSetting(settingName, settingValue);
            PexAssert.AreEqual(settingValue, sub.GetSetting(settingName));

            sub.RemoveSetting(settingName);
            PexAssert.IsNull(sub.GetSetting(settingName));
        }
예제 #20
0
        public void NextTest02()
        {
            SinglyLinkedListNode <int> s0 = new SinglyLinkedListNode <int>(0);

            s0.Next = (SinglyLinkedListNode <int>)null;
            this.NextTest(s0, 0);
            PexAssert.IsNotNull((object)s0);
            PexAssert.AreEqual <int>(0, s0.Value);
            PexAssert.IsNull(s0.Next);
        }
        public void RemoveSettingsPUT1([PexAssumeUnderTest] MemorySettingsStorage storage1, [PexAssumeUnderTest] String settingName, [PexAssumeNotNull] Object settingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);
            PexAssume.IsTrue(storage1.GetSetting(settingName) == null);

            storage1.SaveSetting(settingName, settingValue);
            storage1.RemoveSetting(settingName);
            PexAssert.IsNull(storage1.GetSetting(settingName));
        }
예제 #22
0
        /// Summary
        /// Time: 2 min 11 sec
        /// Pattern: State Relation, AAAA
        /// Combines two unit tests into one
        public void RemoveOnlyNodeInListTest([PexAssumeUnderTest] SinglyLinkedList <int> actual, int newNode)
        {
            PexAssume.IsTrue(actual.Count == 0);

            actual.AddFirst(newNode);
            actual.Remove(newNode);

            PexAssert.IsNull(actual.Head);
            PexAssert.IsNull(actual.Tail);
        }
예제 #23
0
        public void SaveAndLoadSettings()
        {
            PexAssert.IsNull(storage.GetSetting("X"), "X is not null");
            PexAssert.IsNull(storage.GetSetting("NAME"), "NAME is not null");

            storage.SaveSetting("X", 5);
            storage.SaveSetting("NAME", "Charlie");

            PexAssert.AreEqual(5, storage.GetSetting("X"));
            PexAssert.AreEqual("Charlie", storage.GetSetting("NAME"));
        }
예제 #24
0
        public void DefaultSettingsPUT1([PexAssumeUnderTest] String settingName, [PexAssumeNotNull] Object settingValue, [PexAssumeNotNull] Object defSettingValue)
        {
            PexAssume.IsTrue(settingName != null);
            PexAssume.IsTrue(settingValue != null);
            PexAssume.IsTrue(defSettingValue != null);
            PexAssume.IsTrue(settingValue is string || settingValue is int || settingValue is bool);          //|| settingValue is Enum);
            PexAssume.IsTrue(defSettingValue is string || defSettingValue is int || defSettingValue is bool); // || defSettingValue is Enum);

            PexAssert.IsNull(testGroup.GetSetting(settingName));
            PexAssert.AreEqual(defSettingValue, testGroup.GetSetting(settingName, defSettingValue));
        }
예제 #25
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));
        }
예제 #26
0
        public void RemoveSettings()
        {
            storage.SaveSetting("X", 5);
            storage.SaveSetting("NAME", "Charlie");

            storage.RemoveSetting("X");
            PexAssert.IsNull(storage.GetSetting("X"), "X not removed");
            PexAssert.AreEqual("Charlie", storage.GetSetting("NAME"));

            storage.RemoveSetting("NAME");
            PexAssert.IsNull(storage.GetSetting("NAME"), "NAME not removed");
        }
예제 #27
0
        public void DefaultSettings()
        {
            PexAssert.IsNull(testGroup.GetSetting("X"));
            PexAssert.IsNull(testGroup.GetSetting("NAME"));

            PexAssert.AreEqual(5, testGroup.GetSetting("X", 5));
            PexAssert.AreEqual(6, testGroup.GetSetting("X", 6));
            PexAssert.AreEqual("7", testGroup.GetSetting("X", "7"));

            PexAssert.AreEqual("Charlie", testGroup.GetSetting("NAME", "Charlie"));
            PexAssert.AreEqual("Fred", testGroup.GetSetting("NAME", "Fred"));
        }
 public void AgentReturnsProcessIdPUT101()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         RemoteTestAgent remoteTestAgent;
         remoteTestAgent = RemoteTestAgentFactory.Create("\0");
         disposables.Add((IDisposable)remoteTestAgent);
         this.AgentReturnsProcessIdPUT1(remoteTestAgent);
         disposables.Dispose();
         PexAssert.IsNotNull((object)remoteTestAgent);
         PexAssert.IsNull(remoteTestAgent.Agency);
     }
 }
예제 #29
0
 public void BadSettingPUT207()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         SettingsGroup         settingsGroup;
         MemorySettingsStorage memorySettingsStorage = new MemorySettingsStorage();
         settingsGroup = new SettingsGroup((ISettingsStorage)memorySettingsStorage);
         disposables.Add((IDisposable)settingsGroup);
         this.BadSettingPUT2(settingsGroup, "", "", false);
         disposables.Dispose();
         PexAssert.IsNotNull((object)settingsGroup);
         PexAssert.IsNull(settingsGroup.Storage);
     }
 }
예제 #30
0
        public void TopLevelSettings()
        {
            testGroup.SaveSetting("X", 5);
            testGroup.SaveSetting("NAME", "Charlie");
            PexAssert.AreEqual(5, testGroup.GetSetting("X"));
            PexAssert.AreEqual("Charlie", testGroup.GetSetting("NAME"));

            testGroup.RemoveSetting("X");
            PexAssert.IsNull(testGroup.GetSetting("X"), "X not removed");
            PexAssert.AreEqual("Charlie", testGroup.GetSetting("NAME"));

            testGroup.RemoveSetting("NAME");
            PexAssert.IsNull(testGroup.GetSetting("NAME"), "NAME not removed");
        }