using LibHac.Fs;
using LibHac.Fs.Fsa;
using Xunit;

namespace LibHac.Tests.Fs.IFileSystemTestBase;

public abstract partial class IFileSystemTests
{
    [Fact]
    public void DeleteDirectoryRecursively_DeletesDirectoryAndChildren()
    {
        IFileSystem fs = CreateFileSystem();

        fs.CreateDirectory("/dir");
        fs.CreateDirectory("/dir/dir2");
        fs.CreateFile("/dir/file1", 0, CreateFileOptions.None);

        Result rcDelete = fs.DeleteDirectoryRecursively("/dir");

        Result rcDir1Type = fs.GetEntryType(out _, "/dir");
        Result rcDir2Type = fs.GetEntryType(out _, "/dir/dir2");
        Result rcFileType = fs.GetEntryType(out _, "/dir/file1");

        Assert.Success(rcDelete);

        Assert.Result(ResultFs.PathNotFound, rcDir1Type);
        Assert.Result(ResultFs.PathNotFound, rcDir2Type);
        Assert.Result(ResultFs.PathNotFound, rcFileType);
    }
}
