Cosmos/Tests/Cosmos.System.Tests/FatFileSystem_Should.cs

84 lines
3.1 KiB
C#

using System.Collections.Generic;
using System.Text;
using Cosmos.Debug.Kernel;
using Cosmos.HAL.BlockDevice;
using Cosmos.System.FileSystem;
using Cosmos.System.FileSystem.FAT;
using Cosmos.System.FileSystem.VFS;
using NUnit.Framework;
namespace Cosmos.System.Tests
{
public class FatFileSystem_Should
{
private FatFileSystem mFS;
[SetUp]
public void Setup()
{
DebuggerFactory.WriteToConsole = true;
var xDevice = new TestBlockDevice();
var xPartition = new Partition(xDevice, 0, xDevice.BlockCount);
var xFactory = new FatFileSystemFactory();
mFS = (FatFileSystem)xFactory.Create(xPartition, "0:\\", (long)(xPartition.BlockSize * xPartition.BlockCount));
}
[Test]
public void Load_Root_Directory_Entry()
{
var xRootDirectory = mFS.GetRootDirectory();
Assert.NotNull(xRootDirectory);
}
[Test]
public void Create_A_Directory_Entry()
{
string xNewDirectoryEntryName = "NEW";
var xRootDirectory = mFS.GetRootDirectory();
Assert.NotNull(xRootDirectory);
var xRootDirectoryListing = mFS.GetDirectoryListing(xRootDirectory);
Assert.AreEqual(xRootDirectoryListing.Count, 0);
mFS.CreateDirectory(xRootDirectory, xNewDirectoryEntryName);
xRootDirectoryListing = mFS.GetDirectoryListing(xRootDirectory);
Assert.AreEqual(xRootDirectoryListing.Count, 1);
var xNewDirectoryEntry = xRootDirectoryListing[0];
Assert.AreEqual(xNewDirectoryEntry.mName, xNewDirectoryEntryName);
var dirDirectoryListing = mFS.GetDirectoryListing(xNewDirectoryEntry);
Assert.AreEqual(0, dirDirectoryListing.Count); //the . and .. directories should not be included
}
[Test]
public void Create_A_Subdirectory_Entry()
{
var xRootDirectory = mFS.GetRootDirectory();
mFS.CreateDirectory(xRootDirectory, "First");
var root = mFS.GetDirectoryListing(xRootDirectory);
mFS.CreateDirectory(root[0], "Sub");
Assert.AreEqual(mFS.GetDirectoryListing(root[0]).Count, 1);
}
[Test]
public void Create_A_Subdirectory_Entry_With_Files()
{
var xRootDirectory = mFS.GetRootDirectory();
mFS.CreateDirectory(xRootDirectory, "First");
var root = mFS.GetDirectoryListing(xRootDirectory);
mFS.CreateDirectory(root[0], "Sub");
Assert.AreEqual(mFS.GetDirectoryListing(root[0]).Count, 1);
var dir = root[0];
Assert.AreEqual("First", dir.mName);
mFS.CreateFile(dir, "test.txt");
Assert.AreEqual(mFS.GetDirectoryListing(dir).Count, 2);
mFS.CreateFile(dir, "test2.txt");
Assert.AreEqual(mFS.GetDirectoryListing(dir).Count, 3);
Assert.AreEqual("test.txt", mFS.GetDirectoryListing(dir)[1].mName);
Assert.AreEqual(@"0:\First\test.txt", mFS.GetDirectoryListing(dir)[1].mFullPath);
}
}
}