public void AssertToArrayBehaviour(Func <int[]> testedAction, int inputCount, int outputCount)
        {
            StubCollection.ResetStatistics();

            var array = testedAction();

            Assert.AreEqual(outputCount, array.Length);
            StubCollection.VeryfiEnumerateBechaviourAndReset(inputCount);
        }
        public void AssertIEnumerableBehaviour(Func <IEnumerable <int> > testedAction, int inputCount, int outputCount)
        {
            StubCollection.ResetStatistics();

            var result = testedAction();

            Assert.AreEqual(outputCount, result.Count());
            StubCollection.VeryfiEnumerateBechaviourAndReset(inputCount);

            Assert.AreEqual(outputCount, Enumerate(testedAction()).count);
            StubCollection.VeryfiEnumerateBechaviourAndReset(inputCount);

            AssertCorrectEnumeratorBehaviour(testedAction().GetEnumerator());
            StubCollection.VeryfiEnumerateBechaviourAndReset(inputCount);

            Assert.Throws <NotImplementedException>(() => testedAction().GetEnumerator().Reset());
        }