LibHac/tests/LibHac.Tests/Fs/FileSystemClientTests/ShimTests/SaveData.cs

68 lines
2.5 KiB
C#
Raw Normal View History

using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Fsa;
using LibHac.Fs.Shim;
using Xunit;
2021-11-14 20:08:57 +01:00
namespace LibHac.Tests.Fs.FileSystemClientTests.ShimTests;
public class SaveData
{
2021-11-14 20:08:57 +01:00
[Fact]
public void MountCacheStorage_CanMountCreatedCacheStorage()
{
2021-11-14 20:08:57 +01:00
var applicationId = new Ncm.ApplicationId(1);
FileSystemClient fs = FileSystemServerFactory.CreateClient(true);
2021-11-14 20:08:57 +01:00
fs.CreateCacheStorage(applicationId, SaveDataSpaceId.User, applicationId.Value, 0, 0, SaveDataFlags.None);
2021-11-14 20:08:57 +01:00
Assert.Success(fs.MountCacheStorage("cache".ToU8Span(), applicationId));
}
2021-11-14 20:08:57 +01:00
[Fact]
public void MountCacheStorage_WrittenDataPersists()
{
var applicationId = new Ncm.ApplicationId(1);
FileSystemClient fs = FileSystemServerFactory.CreateClient(true);
2021-11-14 20:08:57 +01:00
fs.CreateCacheStorage(applicationId, SaveDataSpaceId.SdCache, applicationId.Value, 0, 0, SaveDataFlags.None);
fs.MountCacheStorage("cache".ToU8Span(), applicationId);
2021-11-14 20:08:57 +01:00
fs.CreateFile("cache:/file".ToU8Span(), 0);
fs.Commit("cache".ToU8Span());
fs.Unmount("cache".ToU8Span());
2021-11-14 20:08:57 +01:00
Assert.Success(fs.MountCacheStorage("cache".ToU8Span(), applicationId));
Assert.Success(fs.GetEntryType(out DirectoryEntryType type, "cache:/file".ToU8Span()));
Assert.Equal(DirectoryEntryType.File, type);
}
2020-04-04 23:19:36 +02:00
2021-11-14 20:08:57 +01:00
[Fact]
public void MountCacheStorage_SdCardIsPreferredOverBis()
{
var applicationId = new Ncm.ApplicationId(1);
FileSystemClient fs = FileSystemServerFactory.CreateClient(true);
2021-11-14 20:08:57 +01:00
Assert.Success(fs.CreateCacheStorage(applicationId, SaveDataSpaceId.SdCache, applicationId.Value, 0, 0, SaveDataFlags.None));
Assert.Success(fs.MountCacheStorage("cache".ToU8Span(), applicationId));
fs.CreateFile("cache:/sd".ToU8Span(), 0);
fs.Commit("cache".ToU8Span());
fs.Unmount("cache".ToU8Span());
2021-11-14 20:08:57 +01:00
// Turn off the SD card so the User save is mounted
fs.SetSdCardAccessibility(false);
2021-11-14 20:08:57 +01:00
fs.CreateCacheStorage(applicationId, SaveDataSpaceId.User, applicationId.Value, 0, 0, SaveDataFlags.None);
fs.MountCacheStorage("cache".ToU8Span(), applicationId);
fs.CreateFile("cache:/bis".ToU8Span(), 0);
fs.Commit("cache".ToU8Span());
fs.Unmount("cache".ToU8Span());
2021-11-14 20:08:57 +01:00
fs.SetSdCardAccessibility(true);
2021-11-14 20:08:57 +01:00
Assert.Success(fs.MountCacheStorage("cache".ToU8String(), applicationId));
Assert.Success(fs.GetEntryType(out _, "cache:/sd".ToU8Span()));
Assert.Failure(fs.GetEntryType(out _, "cache:/bis".ToU8Span()));
}
}