public void CreateWithMailAddressRequestReturnsCorrectResultUsingLocalPartAndDomainNameFromContext()
 {
     // Fixture setup
     var request = typeof(MailAddress);
     var expectedLocalPart = new EmailAddressLocalPart(Guid.NewGuid().ToString());
     var expectedDomainName = new DomainName(Guid.NewGuid().ToString());
     var context = new DelegatingSpecimenContext()
     {
         OnResolve = r =>
        {
            Assert.True(typeof(EmailAddressLocalPart).Equals(r) || typeof(DomainName).Equals(r));
            if (typeof(EmailAddressLocalPart).Equals(r))
            {
                return expectedLocalPart;
            }
            else
            {
                return expectedDomainName;
            }
        }
     };
     var sut = new MailAddressGenerator();
     // Exercise system
     var result = (MailAddress)sut.Create(request, context);
     // Verify outcome
     Assert.Equal(expectedLocalPart.LocalPart, result.User);
     Assert.Equal(expectedDomainName.Domain, result.Host);
     // Teardown
 }
 public void SutDoesNotEqualOtherObjectWhenLocalPartsDiffer()
 {
     // Fixture setup
     var sut = new EmailAddressLocalPart(Guid.NewGuid().ToString());
     object other = new EmailAddressLocalPart(Guid.NewGuid().ToString());
     // Exercise system
     bool result = sut.Equals(other);
     // Verify outcome
     Assert.False(result);
     // Teardown
 }
 public void SutDoesNotEqualAnonymousObject()
 {
     // Fixture setup
     var sut = new EmailAddressLocalPart(Guid.NewGuid().ToString());
     var anonymousObject = new object();
     // Exercise system
     bool result = sut.Equals(anonymousObject);
     // Verify outcome
     Assert.False(result);
     // Teardown
 }
 public void ToStringReturnsCorrectResult()
 {
     // Fixture setup
     string expected = Guid.NewGuid().ToString();
     var sut = new EmailAddressLocalPart(expected);
     // Exercise system
     var result = sut.ToString();
     // Verify outcome
     Assert.Equal(expected, result);
     // Teardown
 }      
        public void SutEqualsOtherSutWhenLocalPartsAreEqual()
        {
            // Fixture setup
            var localPart = Guid.NewGuid().ToString();

            var sut = new EmailAddressLocalPart(localPart);
            var other = new EmailAddressLocalPart(localPart);
            // Exercise system
            bool result = sut.Equals(other);
            // Verify outcome
            Assert.True(result);
            // Teardown
        }
 public void GetHashCodeReturnsCorrectResult()
 {
     // Fixture setup
     var localPart = Guid.NewGuid().ToString();
     var sut = new EmailAddressLocalPart(localPart);
     // Exercise system
     int result = sut.GetHashCode();
     // Verify outcome
     int expectedHashCode = localPart.GetHashCode();
     Assert.Equal(expectedHashCode, result);
     // Teardown
 }
 public void CreateReturnsNoSpecimenWhenEmailAddressLocalPartIsInvalidForMailAddress()
 {
     // Fixture setup
     var localPart = new EmailAddressLocalPart("@Invalid@");
     var anonymousDomainName = new DomainName(Guid.NewGuid().ToString());
     var request = typeof(MailAddress);
     var context = new DelegatingSpecimenContext()
     {
         OnResolve = r =>
         {
             Assert.True(typeof(EmailAddressLocalPart).Equals(r) || typeof(DomainName).Equals(r));
             if (typeof(EmailAddressLocalPart).Equals(r))
             {
                 return localPart;
             }
             else
             {
                 return anonymousDomainName;
             }
         }
     };
     var sut = new MailAddressGenerator();
     // Exercise system
     var result = sut.Create(request, context);
     // Verify outcome
     var expectedResult = new NoSpecimen(request);
     Assert.Equal(expectedResult, result);
     // Teardown
 }
        public void CreateWithMailAddressRequestReturnsNoSpecimenWhenContextReturnsNullDomainName()
        {
            // Fixture setup
            var request = typeof(MailAddress);
            var anonymousLocalPart = new EmailAddressLocalPart(Guid.NewGuid().ToString());

            var context = new DelegatingSpecimenContext()
            {
                OnResolve = r =>
                {
                    Assert.True(typeof(EmailAddressLocalPart).Equals(r) || typeof(DomainName).Equals(r));
                    return typeof(EmailAddressLocalPart).Equals(r) ? anonymousLocalPart : null;
                }
            };
            var sut = new MailAddressGenerator();
            // Exercise system
            var result = sut.Create(request, context);
            // Verify outcome
            var expectedResult = new NoSpecimen(request);
            Assert.Equal(expectedResult, result);
            // Teardown
        }