Skip to content

Commit

Permalink
Reworked fat file system. Added conditionals for debug output. Implem…
Browse files Browse the repository at this point in the history
…ented some System.IO plugs.
  • Loading branch information
charlesbetros committed Nov 26, 2015
1 parent 417df82 commit fd54c66
Show file tree
Hide file tree
Showing 21 changed files with 556 additions and 774 deletions.
Binary file added Artwork/Cosmos.ico
Binary file not shown.
207 changes: 117 additions & 90 deletions Tests/Cosmos.Kernel.Tests.Fat/Kernel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,103 +34,130 @@ protected override void Run()
bool xTest;
string xContents;

mDebugger.Send("Get parent:");
mDebugger.Send("START TEST: Get parent:");
var xParent = Directory.GetParent(@"0:\test");
Assert.IsTrue(xParent == null, "Failed to get directory parent.");
Assert.IsTrue(xParent != null, "Failed to get directory parent.");
mDebugger.Send("END TEST");
mDebugger.Send("");

mDebugger.Send("Get parent:");
mDebugger.Send("START TEST: Get parent:");
xParent = Directory.GetParent(@"0:\test\");
Assert.IsTrue(xParent == null, "Failed to get directory parent.");

mDebugger.Send("Create directory:");
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("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("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.");

//Assert.IsTrue(Path.GetDirectoryName(@"0:\test") == @"0:\", @"Path.GetDirectoryName(@'0:\test') == @'0:\'");
//Assert.IsTrue(Path.GetFileName(@"0:\test") == @"test", @"Path.GetFileName(@'0:\test') == @'test'");

//mDebugger.Send("File exist check:");
//xTest = File.Exists(@"0:\Kudzu.txt");
//Assert.IsTrue(xTest, @"\Kudzu.txt not found!");

//mDebugger.Send("Directory exist check:");
//xTest = Directory.Exists(@"0:\test");
//Assert.IsTrue(xTest, "Folder does not exist!");

//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!");

//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!");

//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!");

//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("");

TestController.Completed();
}
Expand Down
4 changes: 2 additions & 2 deletions Tests/Cosmos.TestRunner.Core/DefaultEngineConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public static void Apply(Engine engine)

// Select kernels to be tested by adding them to the engine
//engine.AddKernel(typeof(VGACompilerCrash.Kernel).Assembly.Location);
engine.AddKernel(typeof(Cosmos.Compiler.Tests.Bcl.Kernel).Assembly.Location);
//engine.AddKernel(typeof(Cosmos.Compiler.Tests.Bcl.Kernel).Assembly.Location);
//engine.AddKernel(typeof(Cosmos.Compiler.Tests.SingleEchoTest.Kernel).Assembly.Location);
//engine.AddKernel(typeof(Cosmos.Compiler.Tests.SimpleWriteLine.Kernel.Kernel).Assembly.Location);
//engine.AddKernel(typeof(SimpleStructsAndArraysTest.Kernel).Assembly.Location);
Expand All @@ -41,7 +41,7 @@ public static void Apply(Engine engine)
//engine.AddKernel(typeof(Cosmos.Compiler.Tests.MultidimensionalArrays.Kernel).Assembly.Location);

// Experimental stuff:
//engine.AddKernel(typeof(Cosmos.Kernel.Tests.Fat.Kernel).Assembly.Location);
engine.AddKernel(typeof(Cosmos.Kernel.Tests.Fat.Kernel).Assembly.Location);
//engine.AddKernel(typeof(Cosmos.Kernel.Tests.FileSystemPlugs.Kernel).Assembly.Location);

// end of known bugs
Expand Down
4 changes: 0 additions & 4 deletions source/Cosmos.Common/StringHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,19 @@ public static class StringHelper
{
public static string GetCharArrayString(char[] aArray)
{
Debugger.DoSend("-- StringHelper.GetCharArrayString --");
if (aArray == null)
{
Debugger.DoSend("-- StringHelper.GetCharArrayString : aArray is null --");
return string.Empty;
}

if (aArray.Length == 0)
{
Debugger.DoSend("-- StringHelper.GetCharArrayString : aArray is empty --");
return string.Empty;
}

string xString = string.Empty;
for (int i = 0; i < aArray.Length; i++)
{
Debugger.DoSend("-- StringHelper.GetCharArrayString : i = " + i + ", aArray[i] = " + aArray[i].ToString() + " --");
//xString = string.Concat(xString, aArray[i].ToString());
}

Expand Down
54 changes: 54 additions & 0 deletions source/Cosmos.IL2CPU/CompilerHelpers.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using global::System.Diagnostics;

namespace Cosmos.IL2CPU
{
public static class CompilerHelpers
{
private static global::Cosmos.Debug.Kernel.Debugger mDebugger = new global::Cosmos.Debug.Kernel.Debugger("IL2CPU", "Debug");

[Conditional("COSMOSDEBUG")]
public static void Debug(string aMessage, params object[] aParams)
{
string xMessage = aMessage;

if (aParams != null)
{
aMessage = aMessage + " : ";
for (int i = 0; i < aParams.Length; i++)
{
string xParam = aParams[i].ToString();
if (!string.IsNullOrWhiteSpace(xParam))
{
aMessage = aMessage + " " + xParam;
}
}
}

mDebugger.Send("FileSystem Trace: " + aMessage);
}

[Conditional("COSMOSDEBUG")]
public static void Debug(string aMessage)
{
mDebugger.Send("FAT Debug: " + aMessage);
}

[Conditional("COSMOSDEBUG")]
public static void DebugNumber(uint aValue)
{
mDebugger.SendNumber(aValue);
}

[Conditional("COSMOSDEBUG")]
public static void DebugNumber(ulong aValue)
{
mDebugger.Send(((uint)aValue).ToString() + ((uint)aValue >> 32).ToString());
}

[Conditional("COSMOSDEBUG")]
public static void DevDebug(string message)
{
mDebugger.Send("FAT DevDebug: " + message);
}
}
}
1 change: 1 addition & 0 deletions source/Cosmos.IL2CPU/Cosmos.IL2CPU.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@
<Compile Include="ElfHash.cs" />
<Compile Include="ExceptionHelper.cs" />
<Compile Include="Extensions.cs" />
<Compile Include="CompilerHelpers.cs" />
<Compile Include="GCImplementation.cs" />
<Compile Include="GCImplementationRefs.cs" />
<Compile Include="Heap.cs" />
Expand Down
Loading

0 comments on commit fd54c66

Please sign in to comment.