mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-27 22:12:25 +00:00
177 lines
7.3 KiB
C#
177 lines
7.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Text;
|
|
using Cosmos.Common.Extensions;
|
|
using Cosmos.System.FileSystem;
|
|
using Cosmos.System.FileSystem.VFS;
|
|
using Cosmos.TestRunner;
|
|
using Sys = Cosmos.System;
|
|
|
|
namespace Cosmos.Kernel.Tests.Fat
|
|
{
|
|
public class Kernel : Sys.Kernel
|
|
{
|
|
private VFSBase myVFS;
|
|
|
|
protected override void BeforeRun()
|
|
{
|
|
Console.WriteLine("Cosmos booted successfully, now start testing");
|
|
myVFS = new CosmosVFS();
|
|
VFSManager.RegisterVFS(myVFS);
|
|
}
|
|
|
|
private global::Cosmos.Debug.Kernel.Debugger mDebugger = new global::Cosmos.Debug.Kernel.Debugger("User", "Test");
|
|
|
|
protected override void Run()
|
|
{
|
|
try
|
|
{
|
|
mDebugger.Send("Run");
|
|
|
|
bool xTest;
|
|
string xContents;
|
|
|
|
mDebugger.Send("START TEST: Get parent:");
|
|
var xParent = Directory.GetParent(@"0:\test");
|
|
Assert.IsTrue(xParent != null, "Failed to get directory parent.");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
mDebugger.Send("START TEST: Get parent:");
|
|
xParent = Directory.GetParent(@"0:\test\");
|
|
Assert.IsTrue(xParent != null, "Failed to get directory parent.");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
mDebugger.Send("Get files:");
|
|
var xFiles = Directory.GetFiles(@"0:\");
|
|
mDebugger.Send("Found " + xFiles.Length + " files.");
|
|
if (xFiles.Length > 0)
|
|
{
|
|
mDebugger.Send("-- File list");
|
|
for (int i = 0; i < xFiles.Length; i++)
|
|
{
|
|
mDebugger.Send("File: " + xFiles[i]);
|
|
}
|
|
}
|
|
Assert.IsTrue(xFiles.Length > 0, "Failed to get files from the directory.");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
mDebugger.Send("Get directories:");
|
|
var xDirectories = Directory.GetDirectories(@"0:\");
|
|
mDebugger.Send("Found " + xDirectories.Length + " directories.");
|
|
if (xDirectories.Length > 0)
|
|
{
|
|
mDebugger.Send("-- Directory list");
|
|
for (int i = 0; i < xDirectories.Length; i++)
|
|
{
|
|
mDebugger.Send("Directory: " + xDirectories[i]);
|
|
}
|
|
}
|
|
Assert.IsTrue(xDirectories.Length > 0, "Failed to get directories from the directory.");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
Assert.IsTrue(Path.GetDirectoryName(@"0:\test") == @"0:\", @"Path.GetDirectoryName(@'0:\test') == @'0:\'");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
Assert.IsTrue(Path.GetFileName(@"0:\test") == @"test", @"Path.GetFileName(@'0:\test') == @'test'");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
mDebugger.Send("File exist check:");
|
|
xTest = File.Exists(@"0:\Kudzu.txt");
|
|
Assert.IsTrue(xTest, @"\Kudzu.txt not found!");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
mDebugger.Send("Directory exist check:");
|
|
xTest = Directory.Exists(@"0:\test");
|
|
Assert.IsTrue(xTest, "Folder does not exist!");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
mDebugger.Send("File contents of Kudzu.txt: ");
|
|
xContents = File.ReadAllText(@"0:\Kudzu.txt");
|
|
mDebugger.Send("Contents retrieved");
|
|
mDebugger.Send(xContents);
|
|
Assert.IsTrue(xContents == "Hello Cosmos", "Contents of Kudzu.txt was read incorrectly!");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
using (var xFS = new FileStream(@"0:\Kudzu.txt", FileMode.Open))
|
|
{
|
|
xFS.SetLength(5);
|
|
}
|
|
mDebugger.Send("File made smaller");
|
|
xContents = File.ReadAllText(@"0:\Kudzu.txt");
|
|
mDebugger.Send("Contents retrieved");
|
|
mDebugger.Send(xContents);
|
|
Assert.IsTrue(xContents == "Hello", "Contents of Kudzu.txt was read incorrectly!");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
using (var xFS = new FileStream(@"0:\Kudzu.txt", FileMode.Create))
|
|
{
|
|
xFS.SetLength(5);
|
|
}
|
|
mDebugger.Send("File made smaller");
|
|
xContents = File.ReadAllText(@"0:\Kudzu.txt");
|
|
mDebugger.Send("Contents retrieved");
|
|
mDebugger.Send(xContents);
|
|
Assert.IsTrue(xContents == "Hello", "Contents of Kudzu.txt was read incorrectly!");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
using (var xFS = new FileStream(@"0:\Kudzu.txt", FileMode.Create))
|
|
{
|
|
mDebugger.Send("Start writing");
|
|
var xStr = "Test FAT Write.";
|
|
var xBuff = xStr.GetUtf8Bytes(0, (uint)xStr.Length);
|
|
xFS.Write(xBuff, 0, xBuff.Length);
|
|
mDebugger.Send("---- Data written");
|
|
xFS.Position = 0;
|
|
xFS.Read(xBuff, 0, xBuff.Length);
|
|
mDebugger.Send(xBuff.GetUtf8String(0, (uint)xBuff.Length));
|
|
}
|
|
|
|
mDebugger.Send("Write to file now");
|
|
File.WriteAllText(@"0:\Kudzu.txt", "Test FAT write.");
|
|
mDebugger.Send("Text written");
|
|
|
|
xContents = File.ReadAllText(@"0:\Kudzu.txt");
|
|
mDebugger.Send("Contents retrieved after writing");
|
|
mDebugger.Send(xContents);
|
|
Assert.IsTrue(xContents == "Test FAT write.", "Contents of Kudzu.txt was written incorrectly!");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
mDebugger.Send("START TEST: Create directory:");
|
|
var xDirectory = Directory.CreateDirectory(@"0:\test2");
|
|
Assert.IsTrue(xDirectory != null, "Failed to create a new directory.");
|
|
bool xExists = Directory.Exists(@"0:\test2");
|
|
Assert.IsTrue(xExists, "Failed to create a new directory.");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
|
|
mDebugger.Send("START TEST: Create file:");
|
|
var xFile = File.Create(@"0:\test2.txt");
|
|
Assert.IsTrue(xFile != null, "Failed to create a new file.");
|
|
bool xFileExists = File.Exists(@"0:\test2.txt");
|
|
Assert.IsTrue(xFileExists, "Failed to create a new file.");
|
|
mDebugger.Send("END TEST");
|
|
mDebugger.Send("");
|
|
TestController.Completed();
|
|
}
|
|
catch (Exception E)
|
|
{
|
|
mDebugger.Send("Exception occurred");
|
|
mDebugger.Send(E.Message);
|
|
TestController.Failed();
|
|
}
|
|
}
|
|
}
|
|
}
|