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