mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
89 lines
3.5 KiB
C#
89 lines
3.5 KiB
C#
|
using System.Linq;
|
|||
|
using LibHac.Fs;
|
|||
|
using LibHac.Fs.Shim;
|
|||
|
using LibHac.Ncm;
|
|||
|
using Xunit;
|
|||
|
|
|||
|
namespace LibHac.Tests.Fs.FileSystemClientTests.ShimTests
|
|||
|
{
|
|||
|
public class SaveDataManagement
|
|||
|
{
|
|||
|
[Fact]
|
|||
|
public void CreateCacheStorage_InUserSaveSpace_StorageIsCreated()
|
|||
|
{
|
|||
|
var applicationId = new TitleId(1);
|
|||
|
FileSystemClient fs = FileSystemServerFactory.CreateClient(true);
|
|||
|
|
|||
|
Assert.Success(fs.CreateCacheStorage(applicationId, SaveDataSpaceId.User, applicationId, 0, 0, SaveDataFlags.None));
|
|||
|
|
|||
|
fs.OpenSaveDataIterator(out SaveDataIterator iterator, SaveDataSpaceId.User);
|
|||
|
|
|||
|
var info = new SaveDataInfo[2];
|
|||
|
iterator.ReadSaveDataInfo(out long entriesRead, info);
|
|||
|
|
|||
|
Assert.Equal(1, entriesRead);
|
|||
|
Assert.Equal(applicationId, info[0].TitleId);
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void CreateCacheStorage_InSdCacheSaveSpace_StorageIsCreated()
|
|||
|
{
|
|||
|
var applicationId = new TitleId(1);
|
|||
|
FileSystemClient fs = FileSystemServerFactory.CreateClient(true);
|
|||
|
|
|||
|
Assert.Success(fs.CreateCacheStorage(applicationId, SaveDataSpaceId.SdCache, applicationId, 0, 0, SaveDataFlags.None));
|
|||
|
|
|||
|
fs.OpenSaveDataIterator(out SaveDataIterator iterator, SaveDataSpaceId.SdCache);
|
|||
|
|
|||
|
var info = new SaveDataInfo[2];
|
|||
|
iterator.ReadSaveDataInfo(out long entriesRead, info);
|
|||
|
|
|||
|
Assert.Equal(1, entriesRead);
|
|||
|
Assert.Equal(applicationId, info[0].TitleId);
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void CreateCacheStorage_InSdCacheSaveSpaceWhenNoSdCard_ReturnsSdCardNotFound()
|
|||
|
{
|
|||
|
var applicationId = new TitleId(1);
|
|||
|
FileSystemClient fs = FileSystemServerFactory.CreateClient(false);
|
|||
|
|
|||
|
Assert.Result(ResultFs.SdCardNotFound, fs.CreateCacheStorage(applicationId, SaveDataSpaceId.SdCache, applicationId, 0, 0, SaveDataFlags.None));
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void CreateCacheStorage_AlreadyExists_ReturnsPathAlreadyExists()
|
|||
|
{
|
|||
|
var applicationId = new TitleId(1);
|
|||
|
FileSystemClient fs = FileSystemServerFactory.CreateClient(true);
|
|||
|
|
|||
|
Assert.Success(fs.CreateCacheStorage(applicationId, SaveDataSpaceId.User, applicationId, 0, 0, SaveDataFlags.None));
|
|||
|
Assert.Result(ResultFs.PathAlreadyExists, fs.CreateCacheStorage(applicationId, SaveDataSpaceId.User, applicationId, 0, 0, SaveDataFlags.None));
|
|||
|
}
|
|||
|
|
|||
|
[Fact]
|
|||
|
public void CreateCacheStorage_WithIndex_CreatesMultiple()
|
|||
|
{
|
|||
|
var applicationId = new TitleId(1);
|
|||
|
FileSystemClient fs = FileSystemServerFactory.CreateClient(true);
|
|||
|
|
|||
|
Assert.Success(fs.CreateCacheStorage(applicationId, SaveDataSpaceId.User, applicationId, 0, 0, 0, SaveDataFlags.None));
|
|||
|
Assert.Success(fs.CreateCacheStorage(applicationId, SaveDataSpaceId.User, applicationId, 1, 0, 0, SaveDataFlags.None));
|
|||
|
|
|||
|
fs.OpenSaveDataIterator(out SaveDataIterator iterator, SaveDataSpaceId.User);
|
|||
|
|
|||
|
var info = new SaveDataInfo[3];
|
|||
|
iterator.ReadSaveDataInfo(out long entriesRead, info);
|
|||
|
|
|||
|
Assert.Equal(2, entriesRead);
|
|||
|
Assert.Equal(applicationId, info[0].TitleId);
|
|||
|
Assert.Equal(applicationId, info[1].TitleId);
|
|||
|
|
|||
|
var expectedIndexes = new short[] { 0, 1 };
|
|||
|
short[] actualIndexes = info.Take(2).Select(x => x.Index).OrderBy(x => x).ToArray();
|
|||
|
|
|||
|
Assert.Equal(expectedIndexes, actualIndexes);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|