1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
using FluentAssertions;
using System.Collections.Generic;
using Timeline.Models.Validation;
using Xunit;
namespace Timeline.Tests
{
public static class UserDetailValidatorsTest
{
private static void SucceedWith<TValidator>(object value) where TValidator : class, IValidator, new()
{
var result = new TValidator().Validate(value, out var message);
result.Should().BeTrue();
message.Should().Equals(ValidationConstants.SuccessMessage);
}
private static void FailWith<TValidator>(object value, params string[] messageContains) where TValidator : class, IValidator, new()
{
var result = new TValidator().Validate(value, out var message);
result.Should().BeFalse();
foreach (var m in messageContains)
{
message.Should().ContainEquivalentOf(m);
}
}
public class QQ
{
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData("12345678")]
public void Success(object qq)
{
SucceedWith<UserDetailValidators.QQValidator>(qq);
}
[Theory]
[InlineData(123, "type")]
[InlineData("123", "short")]
[InlineData("111111111111111111111111111111111111", "long")]
[InlineData("aaaaaaaa", "digit")]
public void Fail(object qq, string messageContains)
{
FailWith<UserDetailValidators.QQValidator>(qq, messageContains);
}
}
public class EMail
{
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData("aaa@aaa.net")]
public void Success(object email)
{
SucceedWith<UserDetailValidators.EMailValidator>(email);
}
public static IEnumerable<object[]> FailTestData()
{
yield return new object[] { 123, "type" };
yield return new object[] { new string('a', 100), "long" };
yield return new object[] { "aaaaaaaa", "format" };
}
[Theory]
[MemberData(nameof(FailTestData))]
public void Fail(object email, string messageContains)
{
FailWith<UserDetailValidators.EMailValidator>(email, messageContains);
}
}
public class PhoneNumber
{
[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData("12345678910")]
public void Success(object phoneNumber)
{
SucceedWith<UserDetailValidators.PhoneNumberValidator>(phoneNumber);
}
[Theory]
[InlineData(123, "type")]
[InlineData("111111111111111111111111111111111111", "long")]
[InlineData("aaaaaaaa", "digit")]
public void Fail(object phoneNumber, string messageContains)
{
FailWith<UserDetailValidators.PhoneNumberValidator>(phoneNumber, messageContains);
}
}
}
}
|