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

65 lines
2.9 KiB
C#
Raw Normal View History

2022-05-01 08:58:19 +02:00
using LibHac.Common;
using LibHac.Fs;
using LibHac.Fs.Shim;
using LibHac.FsSrv.Impl;
using Xunit;
namespace LibHac.Tests.Fs.FileSystemClientTests.ShimTests;
public class DeviceSaveData
{
[Fact]
public static void MountDeviceSaveData_SaveDoesNotExist_ReturnsTargetNotFound()
{
var applicationId = new Ncm.ApplicationId(1234);
HorizonServerSet hos = FileSystemServerFactory.CreateHorizon(applicationId, fsAcBits: AccessControlBits.Bits.FullPermission);
Assert.Result(ResultFs.TargetNotFound, hos.Client.Fs.MountDeviceSaveData("device".ToU8Span(), applicationId));
Assert.Result(ResultFs.TargetNotFound, hos.Client.Fs.MountDeviceSaveData("device2".ToU8Span()));
}
[Fact]
public static void MountDeviceSaveData_OwnDeviceSaveExists_ReturnsSuccess()
{
var applicationId = new Ncm.ApplicationId(1234);
HorizonServerSet hos = FileSystemServerFactory.CreateHorizon(applicationId, fsAcBits: AccessControlBits.Bits.FullPermission);
Assert.Success(hos.Client.Fs.CreateDeviceSaveData(applicationId, applicationId.Value, 0, 0, SaveDataFlags.None));
Assert.Success(hos.Client.Fs.MountDeviceSaveData("device".ToU8Span()));
Assert.Success(hos.Client.Fs.MountDeviceSaveData("device2".ToU8Span(), applicationId));
}
[Fact]
public static void MountDeviceSaveData_OtherDeviceSaveExists_ReturnsSuccess()
{
var ownApplicationId = new Ncm.ApplicationId(1234);
var otherApplicationId = new Ncm.ApplicationId(12345);
HorizonServerSet hos = FileSystemServerFactory.CreateHorizon(ownApplicationId, fsAcBits: AccessControlBits.Bits.FullPermission);
Assert.Success(hos.Client.Fs.CreateDeviceSaveData(otherApplicationId, otherApplicationId.Value, 0, 0, SaveDataFlags.None));
Assert.Success(hos.Client.Fs.MountDeviceSaveData("device".ToU8Span(), otherApplicationId));
// Try to open missing own device save data
Assert.Result(ResultFs.TargetNotFound, hos.Client.Fs.MountDeviceSaveData("device2".ToU8Span()));
}
[Fact]
public static void IsDeviceSaveDataExisting_ReturnsCorrectState()
{
var applicationId = new ApplicationId(1234);
var ncmApplicationId = new Ncm.ApplicationId(applicationId.Value);
HorizonServerSet hos = FileSystemServerFactory.CreateHorizon(ncmApplicationId);
FileSystemClient fs = hos.InitialProcessClient.Fs;
// Should return false when there aren't any saves.
Assert.False(fs.IsDeviceSaveDataExisting(applicationId));
// Should return true after creating the save.
Assert.Success(fs.CreateDeviceSaveData(ncmApplicationId, applicationId.Value, 0, 0, SaveDataFlags.None));
Assert.True(fs.IsDeviceSaveDataExisting(applicationId));
// Should return false after deleting the save.
Assert.Success(fs.DeleteDeviceSaveData(applicationId));
Assert.False(fs.IsDeviceSaveDataExisting(applicationId));
}
}