Skip to content

Commit 71ac4e4

Browse files
committed
feat: Validate
1 parent 7b96d73 commit 71ac4e4

40 files changed

Lines changed: 832 additions & 74 deletions
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class BlacklistValidatorTest
8+
{
9+
// ReSharper disable once UnusedAutoPropertyAccessor.Global
10+
public TestContext TestContext { get; set; }
11+
12+
[TestMethod]
13+
[DataRow("", true)]
14+
[DataRow(" ", true)]
15+
[DataRow("葱包99", true)]
16+
[DataRow("关注洛天依谢谢喵", false)]
17+
[DataRow("关注初音未来谢谢喵", false)]
18+
[DataRow("初始之音响彻未来 华风夏韵洛水天依 初音未来洛天依", false)]
19+
public void TestBlacklistValidate(string input, bool expected)
20+
{
21+
var validator = new BlacklistValidator(["洛天依", "初音未来"]);
22+
var result = validator.Validate(input);
23+
if (!result.IsValid)
24+
{
25+
foreach (var error in result.Errors)
26+
{
27+
TestContext.WriteLine(error.ErrorMessage);
28+
}
29+
}
30+
Assert.AreEqual(expected, result.IsValid);
31+
}
32+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class FileNameValidatorTest
8+
{
9+
// ReSharper disable once UnusedAutoPropertyAccessor.Global
10+
public TestContext TestContext { get; set; }
11+
12+
[TestMethod]
13+
[DataRow("foobar.txt", true)]
14+
[DataRow("CON.tar.gz", true)]
15+
[DataRow("LPT²", false)]
16+
[DataRow(" Test", false)]
17+
[DataRow("?foo.", false)]
18+
[DataRow("""\/:*?"<>|""", false)]
19+
[DataRow("PCLCE.exe.", false)]
20+
[DataRow("我落泪情绪零~1.MP3", false)]
21+
[DataRow("关注洛天依LuoTianyi0712谢谢喵!!!", true)]
22+
public void TestFileNameValidate(string fileName, bool expected)
23+
{
24+
var validator = new FileNameValidator();
25+
var result = validator.Validate(fileName);
26+
if (!result.IsValid)
27+
{
28+
foreach (var error in result.Errors)
29+
{
30+
TestContext.WriteLine(error.ErrorMessage);
31+
}
32+
}
33+
Assert.AreEqual(expected, result.IsValid);
34+
}
35+
36+
[TestMethod]
37+
[DataRow("explorer.exe", false)]
38+
[DataRow("notepad.exe", false)]
39+
[DataRow("foobar.txt", true)]
40+
[DataRow("关注初音未来初音ミクHatsuneMiku0831谢谢喵!!!", true)]
41+
public void TestFileNameValidateWithParentFolder(string fileName, bool expected)
42+
{
43+
var validator = new FileNameValidator("C:\\Windows");
44+
var result = validator.Validate(fileName);
45+
if (!result.IsValid)
46+
{
47+
foreach (var error in result.Errors)
48+
{
49+
TestContext.WriteLine(error.ErrorMessage);
50+
}
51+
}
52+
Assert.AreEqual(expected, result.IsValid);
53+
}
54+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class FolderNameValidatorTest
8+
{
9+
public TestContext TestContext { get; set; }
10+
11+
[TestMethod]
12+
[DataRow(" 测试 ", false)]
13+
[DataRow("Folder.", false)]
14+
[DataRow("LPT4", false)]
15+
[DataRow("给我一首歌的~1", false)]
16+
[DataRow("1|1|4|5|1|4", false)]
17+
[DataRow("不懂爱恨情仇煎熬的我们", true)]
18+
[DataRow("关注洛天依LuoTianyi0712谢谢喵!!!", true)]
19+
[DataRow("关注初音未来初音ミクHatsuneMiku0831谢谢喵!!!", true)]
20+
public void TestFolderNameValidate(string folderPath, bool expected)
21+
{
22+
var validator = new FolderNameValidator();
23+
var result = validator.Validate(folderPath);
24+
if (!result.IsValid)
25+
{
26+
foreach (var error in result.Errors)
27+
{
28+
TestContext.WriteLine(error.ErrorMessage);
29+
}
30+
}
31+
Assert.AreEqual(expected, result.IsValid);
32+
}
33+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class FolderPathValidatorTest
8+
{
9+
// ReSharper disable once UnusedAutoPropertyAccessor.Global
10+
public TestContext TestContext { get; set; }
11+
12+
[TestMethod]
13+
[DataRow(@"C:\Program Files", true)]
14+
[DataRow(@"C:\Windows\System32", true)]
15+
[DataRow(@"C:\Invalid|Folder", false)]
16+
[DataRow(@" C:\Test ", false)]
17+
[DataRow(@"C:\不该 (fe~3", false)]
18+
[DataRow(@"C:\CON\AUX", false)]
19+
[DataRow(@"C:\权御天下\关注洛天依LuoTianyi0712谢谢喵!!!", true)]
20+
[DataRow(@"C:\初音ミクの消失\关注初音未来初音ミクHatsuneMiku0831谢谢喵!!!", true)]
21+
public void TestFolderPathValidate(string folderPath, bool expected)
22+
{
23+
var validator = new FolderPathValidator();
24+
var result = validator.Validate(folderPath);
25+
if (!result.IsValid)
26+
{
27+
foreach (var error in result.Errors)
28+
{
29+
TestContext.WriteLine(error.ErrorMessage);
30+
}
31+
}
32+
Assert.AreEqual(expected, result.IsValid);
33+
}
34+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class HttpAndUncValidatorTest
8+
{
9+
// ReSharper disable once UnusedAutoPropertyAccessor.Global
10+
public TestContext TestContext { get; set; }
11+
12+
[TestMethod]
13+
[DataRow("https://suki.ink", true)]
14+
[DataRow("http://ce.pclc.cc", true)]
15+
[DataRow("-10", false)]
16+
[DataRow("ftp://www.example.com", false)]
17+
[DataRow(@"\\server\share", true)]
18+
[DataRow("米库打油", false)]
19+
public void TestHttpAndUncValidate(string input, bool expected)
20+
{
21+
var validator = new HttpAndUncValidator();
22+
var result = validator.Validate(input);
23+
if (!result.IsValid)
24+
{
25+
foreach (var error in result.Errors)
26+
{
27+
TestContext.WriteLine(error.ErrorMessage);
28+
}
29+
}
30+
Assert.AreEqual(expected, result.IsValid);
31+
}
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class HttpValidatorTest
8+
{
9+
// ReSharper disable once UnusedAutoPropertyAccessor.Global
10+
public TestContext TestContext { get; set; }
11+
12+
[TestMethod]
13+
[DataRow("https://suki.ink", true)]
14+
[DataRow("http://ce.pclc.cc", true)]
15+
[DataRow("-10", false)]
16+
[DataRow("ftp://www.example.com", false)]
17+
[DataRow(@"\\server\share", false)]
18+
[DataRow("米库打油", false)]
19+
public void TestHttpValidate(string input, bool expected)
20+
{
21+
var validator = new HttpValidator();
22+
var result = validator.Validate(input);
23+
if (!result.IsValid)
24+
{
25+
foreach (var error in result.Errors)
26+
{
27+
TestContext.WriteLine(error.ErrorMessage);
28+
}
29+
}
30+
Assert.AreEqual(expected, result.IsValid);
31+
}
32+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class IntValidatorTest
8+
{
9+
// ReSharper disable once UnusedAutoPropertyAccessor.Global
10+
public TestContext TestContext { get; set; }
11+
12+
[TestMethod]
13+
[DataRow("50", true)]
14+
[DataRow("114514", false)]
15+
[DataRow("-10", false)]
16+
[DataRow("1145141919810", false)]
17+
[DataRow("米库打油", false)]
18+
public void TestIntValidate(string input, bool expected)
19+
{
20+
var validator = new IntValidator(100, 0);
21+
var result = validator.Validate(input);
22+
if (!result.IsValid)
23+
{
24+
foreach (var error in result.Errors)
25+
{
26+
TestContext.WriteLine(error.ErrorMessage);
27+
}
28+
}
29+
Assert.AreEqual(expected, result.IsValid);
30+
}
31+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class NullOrEmptyValidatorTest
8+
{
9+
// ReSharper disable once UnusedAutoPropertyAccessor.Global
10+
public TestContext TestContext { get; set; }
11+
12+
[TestMethod]
13+
[DataRow("", false)]
14+
[DataRow(" ", true)]
15+
[DataRow("葱包99", true)]
16+
public void TestNullOrEmptyValidate(string input, bool expected)
17+
{
18+
var validator = new NullOrEmptyValidator();
19+
var result = validator.Validate(input);
20+
if (!result.IsValid)
21+
{
22+
foreach (var error in result.Errors)
23+
{
24+
TestContext.WriteLine(error.ErrorMessage);
25+
}
26+
}
27+
Assert.AreEqual(expected, result.IsValid);
28+
}
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class NullOrWhiteSpaceValidatorTest
8+
{
9+
// ReSharper disable once UnusedAutoPropertyAccessor.Global
10+
public TestContext TestContext { get; set; }
11+
12+
[TestMethod]
13+
[DataRow("", false)]
14+
[DataRow(" ", false)]
15+
[DataRow("葱包99", true)]
16+
public void TestNullOrWhiteSpaceValidate(string input, bool expected)
17+
{
18+
var validator = new NullOrWhiteSpaceValidator();
19+
var result = validator.Validate(input);
20+
if (!result.IsValid)
21+
{
22+
foreach (var error in result.Errors)
23+
{
24+
TestContext.WriteLine(error.ErrorMessage);
25+
}
26+
}
27+
Assert.AreEqual(expected, result.IsValid);
28+
}
29+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using PCL.Core.Utils.Validate;
3+
4+
namespace PCL.Core.Test.Validate;
5+
6+
[TestClass]
7+
public class StringLengthValidatorTest
8+
{
9+
// ReSharper disable once UnusedAutoPropertyAccessor.Global
10+
public TestContext TestContext { get; set; }
11+
12+
[TestMethod]
13+
[DataRow("关注洛天依谢谢喵", true)]
14+
[DataRow("关注初音未来谢谢喵", true)]
15+
[DataRow("初始之音响彻未来 华风夏韵洛水天依 初音未来洛天依", true)]
16+
[DataRow("我是初音未来 这才是洛天依 擦亮你的眼睛 别傻傻分不清 我是初音未来 这才是洛天依 你们抓洛天依关我什么事情", false)]
17+
[DataRow("这是初音未来 我才是洛天依 擦亮你的眼睛 别傻傻分不清 这是初音未来 我才是洛天依 你们抓洛天依我就是洛天依", false)]
18+
public void TestBlacklistValidate(string input, bool expected)
19+
{
20+
var validator = new StringLengthValidator(0, 30);
21+
var result = validator.Validate(input);
22+
if (!result.IsValid)
23+
{
24+
foreach (var error in result.Errors)
25+
{
26+
TestContext.WriteLine(error.ErrorMessage);
27+
}
28+
}
29+
Assert.AreEqual(expected, result.IsValid);
30+
}
31+
}

0 commit comments

Comments
 (0)