/// <summary>
        /// Checks that the checked <see cref="IEnumerable"/> contains only the authorized items. Can only be used after a call to Contains.
        /// </summary>
        /// <param name="check">
        /// The chained fluent check.
        /// </param>
        /// <returns>
        /// A check link.
        /// </returns>
        public static ExtendableCheckLink <ICheck <IEnumerable>, IEnumerable> Only(this ExtendableCheckLink <ICheck <IEnumerable>, IEnumerable> check)
        {
            IExtendableCheckLink <ICheck <IEnumerable>, IEnumerable> chainedCheckLink = check;

            chainedCheckLink.AccessCheck.IsOnlyMadeOf(chainedCheckLink.OriginalComparand);
            return(check);
        }
예제 #2
0
        /// <summary>
        /// Checks that the checked <see cref="string"/> contains the expected list of strings in the correct order.
        /// </summary>
        /// <param name="chainedCheckLink">
        /// The chained fluent check.
        /// </param>
        /// <returns>
        /// A check link.
        /// </returns>
        public static IExtendableCheckLink <ICheck <string>, string[]> InThatOrder(this ExtendableCheckLink <ICheck <string>, string[]> chainedCheckLink)
        {
            IExtendableCheckLink <ICheck <string>, string[]> context = chainedCheckLink;

            ExtensibilityHelper.BeginCheck(context.AccessCheck).
            CantBeNegated("InThatOrder").
            Analyze((sut, test) =>
            {
                var lastIndex = 0;
                foreach (var content in context.OriginalComparand)
                {
                    lastIndex = sut.IndexOf(content, lastIndex, StringComparison.Ordinal);
                    if (lastIndex >= 0)
                    {
                        continue;
                    }

                    test.Fail("The {0} does not contain the expected strings in the correct order.");
                    return;
                }
            }).
            DefineExpectedValues(context.OriginalComparand, context.OriginalComparand.Length, "in this order", "")
            .EndCheck();
            return(chainedCheckLink);
        }
        /// <summary>
        /// Checks that the checked <see cref="IEnumerable"/> contains the expected list of items only once.
        /// </summary>
        /// <param name="check">
        /// The chained fluent check.
        /// </param>
        /// <returns> bv
        /// A check link.
        /// </returns>
        public static ExtendableCheckLink <ICheck <IEnumerable>, IEnumerable> Once(this ExtendableCheckLink <ICheck <IEnumerable>, IEnumerable> check)
        {
            IExtendableCheckLink <ICheck <IEnumerable>, IEnumerable> chainedCheckLink = check;

            ImplementOnce(
                ExtensibilityHelper.BeginCheckAs(chainedCheckLink.AccessCheck, enumerable => enumerable.Cast <object>()),
                chainedCheckLink.OriginalComparand.Cast <object>());
            return(check);
        }
예제 #4
0
        /// <summary>
        /// Checks that the checked <see cref="string"/> contains the expected list of strings only once.
        /// </summary>
        /// <param name="chainedCheckLink">
        /// The chained fluent check.
        /// </param>
        /// <returns>
        /// A check link.
        /// </returns>
        public static ExtendableCheckLink <ICheck <string>, string[]> Once(this ExtendableCheckLink <ICheck <string>, string[]> chainedCheckLink)
        {
            IExtendableCheckLink <ICheck <string>, string[]> context = chainedCheckLink;

            ExtensibilityHelper.BeginCheck(context.AccessCheck).
            CantBeNegated("Once").
            Analyze((sut, test) =>
            {
                foreach (var content in context.OriginalComparand)
                {
                    var firstIndex  = sut.IndexOf(content, StringComparison.Ordinal);
                    var lastIndexOf = sut.LastIndexOf(content, StringComparison.Ordinal);
                    if (firstIndex != lastIndexOf)
                    {
                        test.Fail(
                            $"The {{0}} contains {content.ToStringProperlyFormatted().DoubleCurlyBraces()} at {firstIndex} and {lastIndexOf}, where as it must contains it once.");
                        return;
                    }
                }
            }).
            DefineExpectedValues(context.OriginalComparand, context.OriginalComparand.Length, "once", "").EndCheck();
            return(chainedCheckLink);
        }
        /// <summary>
        /// Checks that the checked <see cref="IEnumerable"/> contains the expected list of items only once.
        /// </summary>
        /// <param name="check">
        /// The chained fluent check.
        /// </param>
        /// <returns>
        /// A check link.
        /// </returns>
        public static ExtendableCheckLink <ICheck <IEnumerable <T> >, IEnumerable <T> > Once <T>(this ExtendableCheckLink <ICheck <IEnumerable <T> >, IEnumerable <T> > check)
        {
            IExtendableCheckLink <ICheck <IEnumerable <T> >, IEnumerable <T> > chainedCheckLink = check;

            ImplementOnce(ExtensibilityHelper.BeginCheck(chainedCheckLink.AccessCheck), chainedCheckLink.OriginalComparand);
            return(check);
        }