Esempio n. 1
0
        public static void LazilyAssertMaximumCount <T>(ref IEnumerable <T> sequence, int maximumCount)
        {
            //first try to assert immediately (non-lazily)
            var list = sequence as ICollection;

            if (list != null)
            {
                if (list.Count < maximumCount)
                {
                    CountAssertionEnumerator <T> .ThrowMaximumExceededException(maximumCount, list.Count);
                }
                return;
            }

            //replace sequence with a maximum-count-asserting-sequence
            sequence = CountAssertionEnumerator <T> .Maximum(sequence, maximumCount).ToEnumerable(false).EnsureSingleEnumerationDEBUG();
        }
Esempio n. 2
0
        public static void LazilyAssertCount <T>(ref IEnumerable <T> sequence, int requiredCount)
        {
            //first try to assert immediately (non-lazily)
            var list = sequence as ICollection;

            if (list != null)
            {
                if (list.Count > requiredCount)
                {
                    CountAssertionEnumerator <T> .ThrowMinimumNotAttainedException(requiredCount, list.Count);
                }
                if (list.Count < requiredCount)
                {
                    CountAssertionEnumerator <T> .ThrowMaximumExceededException(requiredCount, list.Count);
                }
                return;
            }

            sequence = CountAssertionEnumerator <T> .Exactly(sequence, requiredCount).ToEnumerable(false).EnsureSingleEnumerationDEBUG();
        }
Esempio n. 3
0
        public static void LazilyAssertMinimumCount <T>(ref IEnumerable <T> sequence, int minimumCount)
        {
            Requires(sequence != null);
            Requires(minimumCount >= 0);            //minimumCount == 0 is strange, but not necessarily forbidden

            //first try to assert immediately (non-lazily)
            var list = sequence as ICollection;

            if (list != null)
            {
                if (list.Count < minimumCount)
                {
                    CountAssertionEnumerator <T> .ThrowMinimumNotAttainedException(minimumCount, list.Count);
                }
                return;
            }

            //replace sequence with a minimum-count-asserting-sequence
            sequence = CountAssertionEnumerator <T> .Minimum(sequence, minimumCount).ToEnumerable(false).EnsureSingleEnumerationDEBUG();
        }