Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions PCL.Core.Test/Validate/FileNameValidatorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PCL.Core.Utils.Validate;

namespace PCL.Core.Test.Validate;

[TestClass]
public class FileNameValidatorTest
{
// ReSharper disable once UnusedAutoPropertyAccessor.Global
public TestContext TestContext { get; set; }

[TestMethod]
[DataRow("foobar.txt", true)]
[DataRow("CON.tar.gz", true)]
[DataRow("LPT²", false)]
[DataRow(" Test", false)]
[DataRow("?foo.", false)]
[DataRow("""\/:*?"<>|""", false)]
[DataRow("PCLCE.exe.", false)]
[DataRow("我落泪情绪零~1.MP3", false)]
[DataRow("关注洛天依LuoTianyi0712谢谢喵!!!", true)]
public void TestFileNameValidate(string fileName, bool expected)
{
var validator = new FileNameValidator();
var result = validator.Validate(fileName);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
TestContext.WriteLine(error.ErrorMessage);
}
}
Assert.AreEqual(expected, result.IsValid);
}

[TestMethod]
[DataRow("explorer.exe", false)]
[DataRow("notepad.exe", false)]
[DataRow("foobar.txt", true)]
[DataRow("关注初音未来初音ミクHatsuneMiku0831谢谢喵!!!", true)]
public void TestFileNameValidateWithParentFolder(string fileName, bool expected)
{
var validator = new FileNameValidator("C:\\Windows");
var result = validator.Validate(fileName);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
TestContext.WriteLine(error.ErrorMessage);
}
}
Assert.AreEqual(expected, result.IsValid);
}
}
33 changes: 33 additions & 0 deletions PCL.Core.Test/Validate/FolderNameValidatorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PCL.Core.Utils.Validate;

namespace PCL.Core.Test.Validate;

[TestClass]
public class FolderNameValidatorTest
{
public TestContext TestContext { get; set; }

[TestMethod]
[DataRow(" 测试 ", false)]
[DataRow("Folder.", false)]
[DataRow("LPT4", false)]
[DataRow("给我一首歌的~1", false)]
[DataRow("1|1|4|5|1|4", false)]
[DataRow("不懂爱恨情仇煎熬的我们", true)]
[DataRow("关注洛天依LuoTianyi0712谢谢喵!!!", true)]
[DataRow("关注初音未来初音ミクHatsuneMiku0831谢谢喵!!!", true)]
public void TestFolderNameValidate(string folderPath, bool expected)
{
var validator = new FolderNameValidator();
var result = validator.Validate(folderPath);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
TestContext.WriteLine(error.ErrorMessage);
}
}
Assert.AreEqual(expected, result.IsValid);
}
}
34 changes: 34 additions & 0 deletions PCL.Core.Test/Validate/FolderPathValidatorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PCL.Core.Utils.Validate;

namespace PCL.Core.Test.Validate;

[TestClass]
public class FolderPathValidatorTest
{
// ReSharper disable once UnusedAutoPropertyAccessor.Global
public TestContext TestContext { get; set; }

[TestMethod]
[DataRow(@"C:\Program Files", true)]
[DataRow(@"C:\Windows\System32", true)]
[DataRow(@"C:\Invalid|Folder", false)]
[DataRow(@" C:\Test ", false)]
[DataRow(@"C:\不该 (fe~3", false)]
[DataRow(@"C:\CON\AUX", false)]
[DataRow(@"C:\权御天下\关注洛天依LuoTianyi0712谢谢喵!!!", true)]
[DataRow(@"C:\初音ミクの消失\关注初音未来初音ミクHatsuneMiku0831谢谢喵!!!", true)]
public void TestFolderPathValidate(string folderPath, bool expected)
{
var validator = new FolderPathValidator();
var result = validator.Validate(folderPath);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
TestContext.WriteLine(error.ErrorMessage);
}
}
Assert.AreEqual(expected, result.IsValid);
}
}
32 changes: 32 additions & 0 deletions PCL.Core.Test/Validate/HttpAndUncValidatorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PCL.Core.Utils.Validate;

namespace PCL.Core.Test.Validate;

[TestClass]
public class HttpAndUncValidatorTest
{
// ReSharper disable once UnusedAutoPropertyAccessor.Global
public TestContext TestContext { get; set; }

[TestMethod]
[DataRow("https://suki.ink", true)]
[DataRow("http://ce.pclc.cc", true)]
[DataRow("-10", false)]
[DataRow("ftp://www.example.com", false)]
[DataRow(@"\\server\share", true)]
[DataRow("米库打油", false)]
public void TestHttpAndUncValidate(string input, bool expected)
{
var validator = new HttpAndUncValidator();
var result = validator.Validate(input);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
TestContext.WriteLine(error.ErrorMessage);
}
}
Assert.AreEqual(expected, result.IsValid);
}
}
32 changes: 32 additions & 0 deletions PCL.Core.Test/Validate/HttpValidatorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PCL.Core.Utils.Validate;

namespace PCL.Core.Test.Validate;

[TestClass]
public class HttpValidatorTest
{
// ReSharper disable once UnusedAutoPropertyAccessor.Global
public TestContext TestContext { get; set; }

[TestMethod]
[DataRow("https://suki.ink", true)]
[DataRow("http://ce.pclc.cc", true)]
[DataRow("-10", false)]
[DataRow("ftp://www.example.com", false)]
[DataRow(@"\\server\share", false)]
[DataRow("米库打油", false)]
public void TestHttpValidate(string input, bool expected)
{
var validator = new HttpValidator();
var result = validator.Validate(input);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
TestContext.WriteLine(error.ErrorMessage);
}
}
Assert.AreEqual(expected, result.IsValid);
}
}
31 changes: 31 additions & 0 deletions PCL.Core.Test/Validate/IntValidatorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PCL.Core.Utils.Validate;

namespace PCL.Core.Test.Validate;

[TestClass]
public class IntValidatorTest
{
// ReSharper disable once UnusedAutoPropertyAccessor.Global
public TestContext TestContext { get; set; }

[TestMethod]
[DataRow("50", true)]
[DataRow("114514", false)]
[DataRow("-10", false)]
[DataRow("1145141919810", false)]
[DataRow("米库打油", false)]
public void TestIntValidate(string input, bool expected)
{
var validator = new IntValidator(100, 0);
var result = validator.Validate(input);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
TestContext.WriteLine(error.ErrorMessage);
}
}
Assert.AreEqual(expected, result.IsValid);
}
}
29 changes: 29 additions & 0 deletions PCL.Core.Test/Validate/NullOrEmptyValidatorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PCL.Core.Utils.Validate;

namespace PCL.Core.Test.Validate;

[TestClass]
public class NullOrEmptyValidatorTest
{
// ReSharper disable once UnusedAutoPropertyAccessor.Global
public TestContext TestContext { get; set; }

[TestMethod]
[DataRow("", false)]
[DataRow(" ", true)]
[DataRow("葱包99", true)]
public void TestNullOrEmptyValidate(string input, bool expected)
{
var validator = new NullOrEmptyValidator();
var result = validator.Validate(input);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
TestContext.WriteLine(error.ErrorMessage);
}
}
Assert.AreEqual(expected, result.IsValid);
}
}
29 changes: 29 additions & 0 deletions PCL.Core.Test/Validate/NullOrWhiteSpaceValidatorTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PCL.Core.Utils.Validate;

namespace PCL.Core.Test.Validate;

[TestClass]
public class NullOrWhiteSpaceValidatorTest
{
// ReSharper disable once UnusedAutoPropertyAccessor.Global
public TestContext TestContext { get; set; }

[TestMethod]
[DataRow("", false)]
[DataRow(" ", false)]
[DataRow("葱包99", true)]
public void TestNullOrWhiteSpaceValidate(string input, bool expected)
{
var validator = new NullOrWhiteSpaceValidator();
var result = validator.Validate(input);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
TestContext.WriteLine(error.ErrorMessage);
}
}
Assert.AreEqual(expected, result.IsValid);
}
}
4 changes: 4 additions & 0 deletions PCL.Core/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@
[assembly: XmlnsDefinition("https://ce.pclc.cc/core/ui/animation", "PCL.Core.UI.Animation.Core")]
[assembly: XmlnsDefinition("https://ce.pclc.cc/core/ui/animation", "PCL.Core.UI.Animation.Easings")]
[assembly: XmlnsPrefix("https://ce.pclc.cc/core/ui/animation", "ani")]

[assembly:XmlnsDefinition("https://ce.pclc.cc/core/utils/validate", "PCL.Core.Utils.Validate")]
[assembly:XmlnsPrefix("https://ce.pclc.cc/core/utils/validate", "val")]

[assembly: DisableRuntimeMarshalling]
Loading