PathUtilsTest.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. namespace MeloongCore.Tests;
  2. public class PathUtilsTests : TestBase {
  3. #region 路径处理
  4. [Test]
  5. [Arguments(@"\\?\C:\foo\bar.txt", @"\\?\C:\foo")]
  6. [Arguments(@"C:\foo\bar.txt", @"C:\foo")]
  7. [Arguments(@"\\?\C:\foo\Bar", @"\\?\C:\foo")]
  8. [Arguments(@"C:\foo\bar", @"C:\foo")]
  9. [Arguments(@"C:\Foo\bar\", @"C:\Foo")]
  10. [Arguments(@"\\?\C:\foo\", @"\\?\C:")]
  11. [Arguments(@"C:\foo", @"C:")]
  12. [Arguments(@"C:\foo\", @"C:")]
  13. [Arguments("https://foo.bar/file/long/pack.zip?arg=1", "https://foo.bar/file/long")]
  14. [Arguments("https://foo.bar/file/", "https://foo.bar")]
  15. [Arguments("https://foo.bar/file/?arg=1", "https://foo.bar")]
  16. [Arguments("https://foo.bar/file?arg=1", "https://foo.bar")]
  17. public async Task 路径处理_RemoveLastPart(string input, string expected)
  18. => await Assert.That(PathUtils.RemoveLastPart(input)).IsEqualTo(expected);
  19. [Test]
  20. [Arguments(@"\\?\C:\foo\bar.txt", "bar.txt")]
  21. [Arguments(@"C:\foo\bar.txt", "bar.txt")]
  22. [Arguments(@"\\?\C:\foo\bar", "bar")]
  23. [Arguments(@"C:\foo\bar", "bar")]
  24. [Arguments(@"C:\foo\bar\", "bar")]
  25. [Arguments(@"\\?\C:\foo\", "foo")]
  26. [Arguments(@"C:\foo", "foo")]
  27. [Arguments(@"C:\foo\", "foo")]
  28. [Arguments("https://foo.bar/file/long/pack.zip?arg=1", "pack.zip")]
  29. [Arguments("https://foo.bar/file/", "file")]
  30. [Arguments("https://foo.bar/file/?arg=1", "file")]
  31. [Arguments("https://foo.bar/File?arg=1", "File")]
  32. [Arguments("https://cdn.modrinth.com/data/RvfAlf4Z/versions/XauQUBeR/Redstone Tweaks 2.5.3.zip?mr_download_reason=modpack", "Redstone Tweaks 2.5.3.zip")]
  33. public async Task 路径处理_GetLastPart(string input, string expected)
  34. => await Assert.That(PathUtils.GetLastPart(input)).IsEqualTo(expected);
  35. [Test]
  36. [Arguments(@"\\?\C:\foo\bar.txt", "bar")]
  37. [Arguments(@"C:\foo\bar.2.txt", "bar.2")]
  38. [Arguments(@"\\?\C:\foo\bar", "bar")]
  39. [Arguments(@"C:\foo\bar", "bar")]
  40. [Arguments(@"C:\foo.bar\how\", "how")]
  41. [Arguments(@"\\?\C:\foo\", "foo")]
  42. [Arguments(@"C:\foo", "foo")]
  43. [Arguments(@"C:\foo\", "foo")]
  44. [Arguments("cREate.jar.disabled", "cREate.jar")]
  45. [Arguments("create.jar", "create")]
  46. [Arguments("create", "create")]
  47. [Arguments("https://foo.bar/file/page.xaml.vb?arg=1", "page.xaml")]
  48. [Arguments("https://foo.bar/file/long/pack.zip?arg=1", "pack")]
  49. [Arguments("https://foo.bar/some.how/file/", "file")]
  50. [Arguments("https://foo.bar/file/?arg=1", "file")]
  51. [Arguments("https://foo.bar/file?arg=1", "file")]
  52. public async Task 路径处理_GetFileNameWithoutExtension(string input, string expected)
  53. => await Assert.That(PathUtils.GetFileNameWithoutExtension(input)).IsEqualTo(expected);
  54. [Test]
  55. [Arguments(@"\\?\C:\FOO\BAR.TXT", "txt")]
  56. [Arguments(@"C:\foo\bar.txt", "txt")]
  57. [Arguments(@"\\?\C:\foo\bar", "")]
  58. [Arguments(@"C:\foo\bar", "")]
  59. [Arguments(@"C:\foo\bar\", "")]
  60. [Arguments(@"\\?\C:\foo\", "")]
  61. [Arguments(@"C:\foo", "")]
  62. [Arguments(@"C:\foo\", "")]
  63. [Arguments("create.jar.diSAbled", "disabled")]
  64. [Arguments("https://foo.bar/file/page.xaml.vb?arg=1", "vb")]
  65. [Arguments("https://foo.bar/file/long/pack.ZIP?arg=1", "zip")]
  66. [Arguments("https://foo.bar/file/", "")]
  67. [Arguments("https://foo.bar/file/?arg=1", "")]
  68. [Arguments("https://foo.bar/file?arg=1", "")]
  69. public async Task 路径处理_GetExtension(string input, string expected)
  70. => await Assert.That(PathUtils.GetExtension(input)).IsEqualTo(expected);
  71. #endregion
  72. }