Cosmos/Tests/Cosmos.Compiler.Tests.SingleEchoTest/Kernel.cs

66 lines
2.6 KiB
C#

//#define COSMOSDEBUG
using System;
using System.Collections.Generic;
using System.Text;
using Cosmos.Debug.Kernel;
using Cosmos.TestRunner;
using Sys = Cosmos.System;
namespace Cosmos.Compiler.Tests.SingleEchoTest
{
public class Kernel : Sys.Kernel
{
protected override void BeforeRun()
{
Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back.");
}
protected override void Run()
{
try
{
// start by faking a b c
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x1E, false);
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x1E, true);
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x30, false);
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x30, true);
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x2E, false);
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x2E, true);
// enter:
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x1C, false);
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x1C, true);
Console.Write("Input: ");
Assert.IsTrue(true, "Before readline");
var input = Console.ReadLine();
Console.Write("Text typed: ");
Console.WriteLine(input);
Assert.AreEqual(3, input.Length, "Length of returned string is not 3!");
Assert.AreEqual(97, (int)input[0], "First char of returned string is not a!");
Assert.AreEqual(98, (int)input[1], "Second char of returned string is not b!");
Assert.AreEqual(99, (int)input[2], "Third char of returned string is not c!");
Assert.AreEqual(3, input.Length, "Length of returned string is not 3!");
Assert.AreEqual(97, (int)input[0], "First char of returned string is not a!");
Assert.AreEqual(98, (int)input[1], "Second char of returned string is not b!");
Assert.AreEqual(99, (int)input[2], "Third char of returned string is not c!");
// now test ReadKey:
// fake a
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x1E, false);
Sys.TestingHelpers.KeyboardAddFakeScanCode(0x1E, true);
var xKey = Console.ReadKey();
Assert.IsTrue(xKey.Key == ConsoleKey.A, "ReadKey didn't return key A!");
TestController.Completed();
}
catch (Exception e)
{
mDebugger.Send("Caught exception: " + e.ToString());
}
}
}
}