csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.5 KiB
75 lines
2.5 KiB
using System;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Avalonia.Platform.Storage.FileIO;
|
|
using Avalonia.UnitTests;
|
|
using Xunit;
|
|
|
|
namespace Avalonia.Controls.UnitTests.Platform;
|
|
|
|
public class StorageProviderHelperTests : ScopedTestBase
|
|
{
|
|
[Fact]
|
|
public void Can_Encode_And_Decode_Bookmark()
|
|
{
|
|
var platform = "test"u8;
|
|
var nativeBookmark = "bookmark"u8;
|
|
|
|
var bookmark = StorageBookmarkHelper.EncodeBookmark(platform, nativeBookmark);
|
|
|
|
Assert.NotNull(bookmark);
|
|
|
|
Assert.Equal(
|
|
StorageBookmarkHelper.DecodeResult.Success,
|
|
StorageBookmarkHelper.TryDecodeBookmark(platform, bookmark, out var nativeBookmarkRet));
|
|
|
|
Assert.NotNull(nativeBookmarkRet);
|
|
|
|
Assert.True(nativeBookmark.SequenceEqual(nativeBookmarkRet));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("C://file.txt", "YXZhLnYxLnRlc3QAAAAAAEM6Ly9maWxlLnR4dA==")]
|
|
public void Can_Encode_Bookmark(string nativeBookmark, string expectedEncodedBookmark)
|
|
{
|
|
var platform = "test"u8;
|
|
|
|
var bookmark = StorageBookmarkHelper.EncodeBookmark(platform, nativeBookmark);
|
|
|
|
Assert.Equal(expectedEncodedBookmark, bookmark);
|
|
Assert.NotNull(bookmark);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("YXZhLnYxLnRlc3QAAAAAAEM6Ly9maWxlLnR4dA==", "C://file.txt")]
|
|
public void Can_Decode_Bookmark(string encodedBookmark, string expectedNativeBookmark)
|
|
{
|
|
var platform = "test"u8;
|
|
var expectedNativeBookmarkBytes = Encoding.UTF8.GetBytes(expectedNativeBookmark);
|
|
|
|
Assert.Equal(
|
|
StorageBookmarkHelper.DecodeResult.Success,
|
|
StorageBookmarkHelper.TryDecodeBookmark(platform, encodedBookmark, out var nativeBookmark));
|
|
|
|
Assert.Equal(expectedNativeBookmarkBytes, nativeBookmark);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("YXZhLnYxLmJjbAAAAAAAAEM6Ly9maWxlLnR4dA==", "C://file.txt")]
|
|
[InlineData("C://file.txt", "C://file.txt")]
|
|
public void Can_Decode_Bcl_Bookmarks(string bookmark, string expected)
|
|
{
|
|
var a = StorageBookmarkHelper.EncodeBclBookmark(expected);
|
|
Assert.True(StorageBookmarkHelper.TryDecodeBclBookmark(bookmark, out var localPath));
|
|
Assert.Equal(expected, localPath);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("YXZhLnYxLnRlc3QAAAAAAEM6Ly9maWxlLnR4dA==")] // "test" platform passed instead of "bcl"
|
|
[InlineData("ZYXasHKJASd87124")]
|
|
public void Fails_To_Decode_Invalid_Bcl_Bookmarks(string bookmark)
|
|
{
|
|
Assert.False(StorageBookmarkHelper.TryDecodeBclBookmark(bookmark, out var localPath));
|
|
Assert.Null(localPath);
|
|
}
|
|
}
|
|
|