2
0

PathUtilsTest.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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\extra/bar.txt", @"C:\foo\extra")]
  7. [Arguments(@"C:\foo/extra/bar.txt", @"C:\foo/extra")]
  8. [Arguments(@"C:\foo/extra\bar.txt", @"C:\foo/extra")]
  9. [Arguments(@"C:\foo\bar.txt", @"C:\foo")]
  10. [Arguments(@"\\?\C:\foo\Bar", @"\\?\C:\foo")]
  11. [Arguments(@"C:\foo\bar", @"C:\foo")]
  12. [Arguments(@"C:\Foo\bar\", @"C:\Foo")]
  13. [Arguments(@"\\?\C:\foo\", @"\\?\C:")]
  14. [Arguments(@"C:\foo", @"C:")]
  15. [Arguments(@"C:\foo\", @"C:")]
  16. [Arguments(@"https://foo.bar/file\long/pack.zip?arg=1", @"https://foo.bar/file\long")]
  17. [Arguments(@"https://foo.bar/file\long\pack.zip?arg=1", @"https://foo.bar/file\long")]
  18. [Arguments(@"https://foo.bar/file/long\pack.zip?arg=1", @"https://foo.bar/file/long")]
  19. [Arguments(@"https://foo.bar/file/long/pack.zip?arg=1", @"https://foo.bar/file/long")]
  20. [Arguments(@"https://foo.bar/file/", "https://foo.bar")]
  21. [Arguments(@"https://foo.bar/file/?arg=1", "https://foo.bar")]
  22. [Arguments(@"https://foo.bar/file?arg=1", "https://foo.bar")]
  23. public async Task 路径处理_RemoveLastPart(string input, string expected)
  24. => await Assert.That(PathUtils.RemoveLastPart(input)).IsEqualTo(expected);
  25. [Test]
  26. [Arguments(@"\\?\C:\foo\bar.txt", "bar.txt")]
  27. [Arguments(@"C:\foo\extra/bar.txt", "bar.txt")]
  28. [Arguments(@"C:\foo/extra/bar.txt", "bar.txt")]
  29. [Arguments(@"C:\foo/extra\bar.txt", "bar.txt")]
  30. [Arguments(@"C:\foo\bar.txt", "bar.txt")]
  31. [Arguments(@"C:\foo\bar.txt", "bar.txt")]
  32. [Arguments(@"\\?\C:\foo/bar", "bar")]
  33. [Arguments(@"C:\foo\bar", "bar")]
  34. [Arguments(@"C:\foo\bar\", "bar")]
  35. [Arguments(@"\\?\C:\foo\", "foo")]
  36. [Arguments(@"C:\foo", "foo")]
  37. [Arguments(@"C:\foo\", "foo")]
  38. [Arguments(@"https://foo.bar/file\long/pack.zip?arg=1", "pack.zip")]
  39. [Arguments(@"https://foo.bar/file\long\pack.zip?arg=1", "pack.zip")]
  40. [Arguments(@"https://foo.bar/file/long\pack.zip?arg=1", "pack.zip")]
  41. [Arguments(@"https://foo.bar/file/long/pack.zip?arg=1", "pack.zip")]
  42. [Arguments(@"https://foo.bar/file/", "file")]
  43. [Arguments(@"https://foo.bar/file/?arg=1", "file")]
  44. [Arguments(@"https://foo.bar/File?arg=1", "File")]
  45. [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")]
  46. public async Task 路径处理_GetLastPart(string input, string expected)
  47. => await Assert.That(PathUtils.GetLastPart(input)).IsEqualTo(expected);
  48. [Test]
  49. [Arguments(@"\\?\C:\foo\bar.txt", "bar")]
  50. [Arguments(@"C:\foo\bar.2.txt", "bar.2")]
  51. [Arguments(@"\\?\C:\foo\bar", "bar")]
  52. [Arguments(@"C:\foo\bar", "bar")]
  53. [Arguments(@"C:\foo.bar\how/long\path.txt", "path")]
  54. [Arguments(@"C:\foo.bar\how/long/path.txt", "path")]
  55. [Arguments(@"C:\foo.bar\how\long/path.txt", "path")]
  56. [Arguments(@"C:\foo.bar\how\", "how")]
  57. [Arguments(@"\\?\C:\foo\", "foo")]
  58. [Arguments(@"C:\foo", "foo")]
  59. [Arguments(@"C:\foo\", "foo")]
  60. [Arguments(@"cREate.jar.disabled", "cREate.jar")]
  61. [Arguments(@"create.jar", "create")]
  62. [Arguments(@"create", "create")]
  63. [Arguments(@"https://foo.bar/file\long/pack.zip?arg=1", "pack")]
  64. [Arguments(@"https://foo.bar/file\long\pack.zip?arg=1", "pack")]
  65. [Arguments(@"https://foo.bar/file/long\pack.zip?arg=1", "pack")]
  66. [Arguments(@"https://foo.bar/file/long/pack.zip?arg=1", "pack")]
  67. [Arguments(@"https://foo.bar/file/page.xaml.vb?arg=1", "page.xaml")]
  68. [Arguments(@"https://foo.bar/some.how/file/", "file")]
  69. [Arguments(@"https://foo.bar/file/?arg=1", "file")]
  70. [Arguments(@"https://foo.bar/file?arg=1", "file")]
  71. public async Task 路径处理_GetFileNameWithoutExtension(string input, string expected)
  72. => await Assert.That(PathUtils.GetFileNameWithoutExtension(input)).IsEqualTo(expected);
  73. [Test]
  74. [Arguments(@"\\?\C:\FOO\BAR.TXT", "txt")]
  75. [Arguments(@"C:\foo\bar.txt", "txt")]
  76. [Arguments(@"C:\foo.bar\how/long\path.txt", "txt")]
  77. [Arguments(@"C:\foo.bar\how/long/path.txt", "txt")]
  78. [Arguments(@"C:\foo.bar\how\long/path.txt", "txt")]
  79. [Arguments(@"\\?\C:\foo\bar", "")]
  80. [Arguments(@"C:\foo\bar", "")]
  81. [Arguments(@"C:\foo\bar\", "")]
  82. [Arguments(@"\\?\C:\foo\", "")]
  83. [Arguments(@"C:\foo", "")]
  84. [Arguments(@"C:\foo\", "")]
  85. [Arguments("create.jar.diSAbled", "disabled")]
  86. [Arguments(@"https://foo.bar/file\long/pack.zip?arg=1", "zip")]
  87. [Arguments(@"https://foo.bar/file\long\pack.zip?arg=1", "zip")]
  88. [Arguments(@"https://foo.bar/file/long\pack.zip?arg=1", "zip")]
  89. [Arguments("https://foo.bar/file/page.xaml.vb?arg=1", "vb")]
  90. [Arguments("https://foo.bar/file/long/pack.ZIP?arg=1", "zip")]
  91. [Arguments("https://foo.bar/file/", "")]
  92. [Arguments("https://foo.bar/file/?arg=1", "")]
  93. [Arguments("https://foo.bar/file?arg=1", "")]
  94. public async Task 路径处理_GetExtension(string input, string expected)
  95. => await Assert.That(PathUtils.GetExtension(input)).IsEqualTo(expected);
  96. #endregion
  97. }