StorageProviderHelperTests.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using Avalonia.Platform.Storage.FileIO;
  5. using Avalonia.UnitTests;
  6. using Xunit;
  7. namespace Avalonia.Controls.UnitTests.Platform;
  8. public class StorageProviderHelperTests : ScopedTestBase
  9. {
  10. [Fact]
  11. public void Can_Encode_And_Decode_Bookmark()
  12. {
  13. var platform = "test"u8;
  14. var nativeBookmark = "bookmark"u8;
  15. var bookmark = StorageBookmarkHelper.EncodeBookmark(platform, nativeBookmark);
  16. Assert.NotNull(bookmark);
  17. Assert.Equal(
  18. StorageBookmarkHelper.DecodeResult.Success,
  19. StorageBookmarkHelper.TryDecodeBookmark(platform, bookmark, out var nativeBookmarkRet));
  20. Assert.NotNull(nativeBookmarkRet);
  21. Assert.True(nativeBookmark.SequenceEqual(nativeBookmarkRet));
  22. }
  23. [Theory]
  24. [InlineData("C://file.txt", "YXZhLnYxLnRlc3QAAAAAAEM6Ly9maWxlLnR4dA==")]
  25. public void Can_Encode_Bookmark(string nativeBookmark, string expectedEncodedBookmark)
  26. {
  27. var platform = "test"u8;
  28. var bookmark = StorageBookmarkHelper.EncodeBookmark(platform, nativeBookmark);
  29. Assert.Equal(expectedEncodedBookmark, bookmark);
  30. Assert.NotNull(bookmark);
  31. }
  32. [Theory]
  33. [InlineData("YXZhLnYxLnRlc3QAAAAAAEM6Ly9maWxlLnR4dA==", "C://file.txt")]
  34. public void Can_Decode_Bookmark(string encodedBookmark, string expectedNativeBookmark)
  35. {
  36. var platform = "test"u8;
  37. var expectedNativeBookmarkBytes = Encoding.UTF8.GetBytes(expectedNativeBookmark);
  38. Assert.Equal(
  39. StorageBookmarkHelper.DecodeResult.Success,
  40. StorageBookmarkHelper.TryDecodeBookmark(platform, encodedBookmark, out var nativeBookmark));
  41. Assert.Equal(expectedNativeBookmarkBytes, nativeBookmark);
  42. }
  43. [Theory]
  44. [InlineData("YXZhLnYxLmJjbAAAAAAAAEM6Ly9maWxlLnR4dA==", "C://file.txt")]
  45. [InlineData("C://file.txt", "C://file.txt")]
  46. public void Can_Decode_Bcl_Bookmarks(string bookmark, string expected)
  47. {
  48. var a = StorageBookmarkHelper.EncodeBclBookmark(expected);
  49. Assert.True(StorageBookmarkHelper.TryDecodeBclBookmark(bookmark, out var localPath));
  50. Assert.Equal(expected, localPath);
  51. }
  52. [Theory]
  53. [InlineData("YXZhLnYxLnRlc3QAAAAAAEM6Ly9maWxlLnR4dA==")] // "test" platform passed instead of "bcl"
  54. [InlineData("ZYXasHKJASd87124")]
  55. public void Fails_To_Decode_Invalid_Bcl_Bookmarks(string bookmark)
  56. {
  57. Assert.False(StorageBookmarkHelper.TryDecodeBclBookmark(bookmark, out var localPath));
  58. Assert.Null(localPath);
  59. }
  60. }