public static void Must___Should_return_AssertionTracker_with_SubjectValue_and_SubjectType_and_SubjectName_pulled_out_of_anonymous_object_property_and_Actions_Musted_bit_set___When_parameter_value_is_an_anonymous_object_with_one_property()
        {
            // Arrange
            var    value1 = A.Dummy <object>();
            string value2 = null;

            var expected1 = new AssertionTracker
            {
                SubjectValue  = value1,
                SubjectType   = typeof(object),
                SubjectName   = "someSubject",
                Actions       = Actions.Named | Actions.Musted,
                AssertionKind = AssertionKind.Unknown,
            };

            var expected2 = new AssertionTracker
            {
                SubjectValue  = value2,
                SubjectType   = typeof(string),
                SubjectName   = "someSubject",
                Actions       = Actions.Named | Actions.Musted,
                AssertionKind = AssertionKind.Unknown,
            };

            // Act
            var actual1 = new { someSubject = value1 }.Must();
            var actual2 = new { someSubject = value2 }.Must();

            // Assert
            AssertionTrackerComparer.Equals(expected1, actual1).Should().BeTrue();
            AssertionTrackerComparer.Equals(expected2, actual2).Should().BeTrue();
        }
예제 #2
0
        public static AssertionTracker CloneWithActionVerifiedAtLeastOnce(
            this AssertionTracker assertionTracker)
        {
            var result = assertionTracker.Clone();

            result.Actions |= Actions.VerifiedAtLeastOnce;

            return(result);
        }
        public static void AsArg___Should_create_AssertionTracker_in_the_expected_state___When_parameter_value_is_not_of_type_AssertionTracker_and_not_an_anonymous_object()
        {
            // Arrange
            var nullValue = (string)null;
            var value     = A.Dummy <decimal?>();
            var name      = A.Dummy <string>();

            var expected1 = new AssertionTracker
            {
                SubjectValue  = nullValue,
                SubjectType   = typeof(string),
                SubjectName   = null,
                Actions       = Actions.Categorized,
                AssertionKind = AssertionKind.Argument,
            };

            var expected2 = new AssertionTracker
            {
                SubjectValue  = nullValue,
                SubjectType   = typeof(string),
                SubjectName   = name,
                Actions       = Actions.Categorized | Actions.Named,
                AssertionKind = AssertionKind.Argument,
            };

            var expected3 = new AssertionTracker
            {
                SubjectValue  = value,
                SubjectType   = typeof(decimal?),
                SubjectName   = null,
                Actions       = Actions.Categorized,
                AssertionKind = AssertionKind.Argument,
            };

            var expected4 = new AssertionTracker
            {
                SubjectValue  = value,
                SubjectType   = typeof(decimal?),
                SubjectName   = name,
                Actions       = Actions.Categorized | Actions.Named,
                AssertionKind = AssertionKind.Argument,
            };

            // Act
            var actual1 = nullValue.AsArg();
            var actual2 = nullValue.AsArg(name);
            var actual3 = value.AsArg();
            var actual4 = value.AsArg(name);

            // Assert
            AssertionTrackerComparer.Equals(actual1, expected1).Should().BeTrue();
            AssertionTrackerComparer.Equals(actual2, expected2).Should().BeTrue();
            AssertionTrackerComparer.Equals(actual3, expected3).Should().BeTrue();
            AssertionTrackerComparer.Equals(actual4, expected4).Should().BeTrue();
        }
예제 #4
0
        public static AssertionTracker Clone(
            this AssertionTracker assertionTracker)
        {
            var result = new AssertionTracker
            {
                SubjectValue  = assertionTracker.SubjectValue,
                SubjectType   = assertionTracker.SubjectType,
                SubjectName   = assertionTracker.SubjectName,
                Actions       = assertionTracker.Actions,
                AssertionKind = assertionTracker.AssertionKind,
            };

            return(result);
        }
        public static void Must___Should_return_AssertionTracker_with_SubjectValue_set_to_parameter_value_and_SubjectType_set_to_TSubject_and_null_Name_and_Actions_Musted_bit_set___When_parameter_value_is_not_an_anonymous_object_and_not_null()
        {
            // Arrange
            var value = A.Dummy <string>();

            var expected = new AssertionTracker
            {
                SubjectValue  = value,
                SubjectType   = typeof(string),
                SubjectName   = null,
                Actions       = Actions.Musted,
                AssertionKind = AssertionKind.Unknown,
            };

            // Act
            var actual = value.Must();

            // Assert
            AssertionTrackerComparer.Equals(expected, actual).Should().BeTrue();
        }
        public static void Must___Should_throw_ImproperUseOfAssertionFrameworkException___When_parameter_value_is_an_AssertionTracker_that_has_not_been_Categorized()
        {
            // Arrange
            var assertionTrackers1 = BuildAssertionTrackersWithAllCombinationsOfFlags()
                                     .Where(_ => !_.Actions.HasFlag(Actions.Categorized))
                                     .ToList();

            var assertionTrackers2 = BuildAssertionTrackersWithActionsInMustableState(assertionKind: AssertionKind.Unknown);

            var assertionTrackers = new AssertionTracker[0].Concat(assertionTrackers1).Concat(assertionTrackers2);

            // Act
            var actuals = assertionTrackers.Select(_ => Record.Exception(_.Must));

            // Assert
            foreach (var actual in actuals)
            {
                actual.Should().BeOfType <ImproperUseOfAssertionFrameworkException>();
                actual.Message.Should().Be(Verifications.SubjectAndOperationSequencingErrorMessage + "  " + Verifications.ImproperUseOfFrameworkErrorMessage);
            }
        }
        public static void Must___Should_return_AssertionTracker_with_null_SubjectValue_and_SubjectType_set_to_TSubject_and_null_Name_and_Actions_Musted_bit_set___When_parameter_value_is_null()
        {
            // Arrange
            var value1     = new { someSubject = A.Dummy <object>() };
            var value1Type = value1.GetType();

            value1 = null;

            string value2 = null;

            var expected1 = new AssertionTracker
            {
                SubjectValue  = null,
                SubjectType   = value1Type,
                SubjectName   = null,
                Actions       = Actions.Musted,
                AssertionKind = AssertionKind.Unknown,
            };

            var expected2 = new AssertionTracker
            {
                SubjectValue  = null,
                SubjectType   = typeof(string),
                SubjectName   = null,
                Actions       = Actions.Musted,
                AssertionKind = AssertionKind.Unknown,
            };

            // Act
            var actual1 = value1.Must();
            var actual2 = value2.Must();

            // Assert
            AssertionTrackerComparer.Equals(expected1, actual1).Should().BeTrue();
            AssertionTrackerComparer.Equals(expected2, actual2).Should().BeTrue();
        }