public void WriteMessageTo_WithCollectionMemberWithLessMembers_ContainsIndexedDiscrepancy() { var withAddresses = new CustomerWithCollection { Name = "name", PhoneNumber = "number", Addresses = new[] { new Address { AddressLineOne = "1_1", AddressLineTwo = "1_2", City = "city_1", State = "state_1", Zipcode = "zip_1" }, new Address { AddressLineOne = "2_1", AddressLineTwo = "2_2", City = "city_2", State = "state_2", Zipcode = "zip_2" } } }; var lessAddresses = new { Name = "name", PhoneNumber = "number", Addresses = new object[] { new { AddressLineOne = "1_1" } } }; var subject = new MatchingConstraint(lessAddresses); Assert.That(getMessage(subject, withAddresses), memberContainer("Addresses") & indexOfOffendingCollectionItem(1) & missingExpectedMember() & actualValue(Does.Contain("Address"))); }
public void UsingCustomEqualityComparer_Works_ButFeedbackWhenFailingIsPoor() { CustomerWithCollection actual = someComplicatedOperation(); CustomerWithCollection expected = new CustomerWithCollection { Name = "someName", Addresses = new[] { new Address { Zipcode = "zip_1" }, new Address { Zipcode = "wrong" } } }; // when fails only the class name is reported, nothing else string typeName = $"<{typeof(CustomerWithCollection).FullName}>"; Assert.That(() => Assert.That(actual, Is.EqualTo(expected).Using(new CustomComparer())), Throws.InstanceOf <AssertionException>().With.Message.Contains( TextMessageWriter.Pfx_Expected + typeName + Environment.NewLine + TextMessageWriter.Pfx_Actual + typeName )); }
public void WriteMessageTo_WithCollectionMemberAgainstSameTypeWithoutCollection_ContainsMemberDiscrepancy() { var withAddresses = new CustomerWithCollection { Name = "name", PhoneNumber = "number", Addresses = new[] { new Address { AddressLineOne = "1_1", AddressLineTwo = "1_2", City = "city_1", State = "state_1", Zipcode = "zip_1" }, new Address { AddressLineOne = "2_1", AddressLineTwo = "2_2", City = "city_2", State = "state_2", Zipcode = "zip_2" } } }; var withoutAddresses = new CustomerWithCollection { Name = "name", PhoneNumber = "number", }; var subject = new MatchingConstraint(withoutAddresses); Assert.That(getMessage(subject, withAddresses), memberContainer("Addresses") & expectedValue(null) & actualValue(Does.Contain("<"))); }
public void ApplyTo_WithCollectionMemberAgainstSameTypeWithoutCollection_False() { var withAddresses = new CustomerWithCollection { Name = "name", PhoneNumber = "number", Addresses = new[] { new Address { AddressLineOne = "1_1", AddressLineTwo = "1_2", City = "city_1", State = "state_1", Zipcode = "zip_1" }, new Address { AddressLineOne = "2_1", AddressLineTwo = "2_2", City = "city_2", State = "state_2", Zipcode = "zip_2" } } }; var withoutAddresses = new CustomerWithCollection { Name = "name", PhoneNumber = "number", }; var subject = new MatchingConstraint(withoutAddresses); Assert.That(matches(subject, withAddresses), Is.False); }
public void ApplyTo_WithCollectionMemberWithSameShapeAndDifferentValues_False() { var complex = new CustomerWithCollection { Name = "name", PhoneNumber = "number", Addresses = new[] { new Address { AddressLineOne = "1_1", AddressLineTwo = "1_2", City = "city_1", State = "state_1", Zipcode = "zip_1" }, new Address { AddressLineOne = "2_1", AddressLineTwo = "2_2", City = "city_2", State = "state_2", Zipcode = "zip_2" } } }; var expected = new { Name = "name", Addresses = new object[] { new { State = "state_1" }, new { Zipcode = "notSameValue" } } }; var subject = new MatchingConstraint(expected); Assert.That(matches(subject, complex), Is.False); }
public void MultipleAssertions_AmongstOtherThings_DoNotCommunicateIntentVeryWell() { CustomerWithCollection actual = someComplicatedOperation(); //only interested on name and the zip code of the addresses Assert.That(actual.Name, Is.EqualTo("someName")); var addresses = actual.Addresses.ToArray(); Assert.That(addresses[0].Zipcode, Is.EqualTo("zip_1")); Assert.That(addresses[1].Zipcode, Is.EqualTo("zip_2")); }
public void BetterAssertions_MakeThingsSlightlyBetter() { CustomerWithCollection actual = someComplicatedOperation(); //only interested on name and the zip code of the addresses Assert.That(actual.Name, Is.EqualTo("someName")); Assert.That(actual.Addresses, Has.Some.Matches <Address>(a => a.Zipcode == "zip_1")); Assert.That(actual.Addresses, Has.Some.Matches(addressWithZipCode("zip_2"))); // fails but and give nice feedback about was expected but nothing about the actual object, but the type name Assert.That(() => Assert.That(actual.Addresses, Has.Some.Matches(addressWithZipCode("wrong"))), Throws.InstanceOf <AssertionException>()); }
public void WriteMessageTo_WithCollectionMemberWithSameShapeAndDifferentValues_ContainsIndexedDiscrepancy() { var complex = new CustomerWithCollection { Name = "name", PhoneNumber = "number", Addresses = new[] { new Address { AddressLineOne = "1_1", AddressLineTwo = "1_2", City = "city_1", State = "state_1", Zipcode = "zip_1" }, new Address { AddressLineOne = "2_1", AddressLineTwo = "2_2", City = "city_2", State = "state_2", Zipcode = "zip_2" } } }; var expected = new { Name = "name", Addresses = new object[] { new { State = "state_1" }, new { Zipcode = "notSameValue" } } }; var subject = new MatchingConstraint(expected); Assert.That(getMessage(subject, complex), memberContainer("CustomerWithCollection.Addresses") & indexOfOffendingCollectionItem(1) & offendingMember("Zipcode") & expectedValue("notSameValue") & actualValue("zip_2") ); }