1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using System.Collections.Generic; 6 using Xunit; 7 8 namespace System.ComponentModel.DataAnnotations.Tests 9 { 10 public class EmailAddressAttributeTests : ValidationAttributeTestBase 11 { ValidValues()12 protected override IEnumerable<TestCase> ValidValues() 13 { 14 yield return new TestCase(new EmailAddressAttribute(), null); 15 yield return new TestCase(new EmailAddressAttribute(), "someName@someDomain.com"); 16 yield return new TestCase(new EmailAddressAttribute(), "1234@someDomain.com"); 17 yield return new TestCase(new EmailAddressAttribute(), "firstName.lastName@someDomain.com"); 18 yield return new TestCase(new EmailAddressAttribute(), "\u00A0@someDomain.com"); 19 yield return new TestCase(new EmailAddressAttribute(), "!#$%&'*+-/=?^_`|~@someDomain.com"); 20 yield return new TestCase(new EmailAddressAttribute(), "\"firstName.lastName\"@someDomain.com"); 21 yield return new TestCase(new EmailAddressAttribute(), "someName@someDomain.com"); 22 yield return new TestCase(new EmailAddressAttribute(), "someName@some~domain.com"); 23 yield return new TestCase(new EmailAddressAttribute(), "someName@some_domain.com"); 24 yield return new TestCase(new EmailAddressAttribute(), "someName@1234.com"); 25 yield return new TestCase(new EmailAddressAttribute(), "someName@someDomain\uFFEF.com"); 26 } 27 InvalidValues()28 protected override IEnumerable<TestCase> InvalidValues() 29 { 30 yield return new TestCase(new EmailAddressAttribute(), 0); 31 yield return new TestCase(new EmailAddressAttribute(), ""); 32 yield return new TestCase(new EmailAddressAttribute(), " \r \t \n" ); 33 yield return new TestCase(new EmailAddressAttribute(), "@someDomain.com"); 34 yield return new TestCase(new EmailAddressAttribute(), "@someDomain@abc.com"); 35 yield return new TestCase(new EmailAddressAttribute(), "someName"); 36 yield return new TestCase(new EmailAddressAttribute(), "someName@"); 37 yield return new TestCase(new EmailAddressAttribute(), "someName@a@b.com"); 38 } 39 40 [Fact] DataType_CustomDataType_ReturnExpected()41 public static void DataType_CustomDataType_ReturnExpected() 42 { 43 var attribute = new EmailAddressAttribute(); 44 Assert.Equal(DataType.EmailAddress, attribute.DataType); 45 Assert.Null(attribute.CustomDataType); 46 } 47 } 48 } 49