mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 12:30:32 +00:00
107 lines
4.4 KiB
C#
107 lines
4.4 KiB
C#
using System;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace Cosmos.TestRunner
|
|
{
|
|
public static class Assert
|
|
{
|
|
public static void IsTrue(bool condition, string message, [CallerFilePath] string file = null, [CallerLineNumber] int line = 0)
|
|
{
|
|
if (condition)
|
|
{
|
|
TestController.Debugger.Send("Assertion succeeded:");
|
|
TestController.Debugger.Send(message);
|
|
TestController.AssertionSucceeded();
|
|
}
|
|
else
|
|
{
|
|
TestController.Debugger.Send("Assertion failed:");
|
|
TestController.Debugger.Send("File: " + file);
|
|
TestController.Debugger.Send("Line number: " + line);
|
|
TestController.Debugger.Send(message);
|
|
TestController.Failed();
|
|
throw new Exception("Assertion failed!");
|
|
}
|
|
}
|
|
|
|
public static void IsFalse(bool condition, string message, [CallerFilePath] string file = null, [CallerLineNumber] int line = 0)
|
|
{
|
|
IsTrue(!condition, message, file, line);
|
|
}
|
|
|
|
public static void AreEqual(int expected, int actual, string message, [CallerFilePath] string file = null, [CallerLineNumber] int line = 0)
|
|
{
|
|
var xResult = expected == actual;
|
|
if (!xResult)
|
|
{
|
|
TestController.Debugger.Send("Expected value");
|
|
TestController.Debugger.SendNumber((uint) expected);
|
|
TestController.Debugger.Send("Actual value");
|
|
TestController.Debugger.SendNumber((uint)actual);
|
|
|
|
TestController.Debugger.SendNumber("TestAssertion", "Expected", (uint)expected, 32);
|
|
TestController.Debugger.SendNumber("TestAssertion", "Actual", (uint)actual, 32);
|
|
|
|
TestController.Debugger.Send("Numbers sent!");
|
|
}
|
|
IsTrue(xResult, message, file, line);
|
|
}
|
|
|
|
public static void AreEqual(string expected, string actual, string message, [CallerFilePath] string file = null, [CallerLineNumber] int line = 0)
|
|
{
|
|
var xResult = expected == actual;
|
|
if (!xResult)
|
|
{
|
|
TestController.Debugger.Send($"Expected value: '{expected}'");
|
|
TestController.Debugger.Send($"Actual value: '{actual}'");
|
|
}
|
|
IsTrue(xResult, message, file, line);
|
|
}
|
|
|
|
public static void AreEqual(long expected, long actual, string message, [CallerFilePath] string file = null, [CallerLineNumber] int line = 0)
|
|
{
|
|
var xResult = expected == actual;
|
|
if (!xResult)
|
|
{
|
|
TestController.Debugger.Send($"Expected value: '{expected}'");
|
|
TestController.Debugger.Send($"Actual value: '{actual}'");
|
|
}
|
|
IsTrue(xResult, message, file, line);
|
|
}
|
|
|
|
public static void AreEqual(string[] expected, string[] actual, string message, [CallerFilePath] string file = null, [CallerLineNumber] int line = 0)
|
|
{
|
|
if(expected.Length != actual.Length)
|
|
{
|
|
TestController.Debugger.Send($"Array lengths differ: Expected: {expected.Length} Actual: {actual.Length}");
|
|
if (actual.Length < 32 && expected.Length < 32)
|
|
{
|
|
TestController.Debugger.Send("Values in Expected:");
|
|
for (int i = 0; i < expected.Length; i++)
|
|
{
|
|
TestController.Debugger.Send(expected[i]);
|
|
}
|
|
TestController.Debugger.Send("Values in Actual:");
|
|
for (int i = 0; i < actual.Length; i++)
|
|
{
|
|
TestController.Debugger.Send(actual[i]);
|
|
}
|
|
}
|
|
IsTrue(false, message, file, line);
|
|
return;
|
|
}
|
|
for (int i = 0; i < expected.Length; i++)
|
|
{
|
|
if(expected[i] != actual[i])
|
|
{
|
|
TestController.Debugger.Send($"Values differ in row {i}");
|
|
TestController.Debugger.Send($"Expected value: '{expected[i]}'");
|
|
TestController.Debugger.Send($"Actual value: '{actual[i]}'");
|
|
IsTrue(false, message, file, line);
|
|
return;
|
|
}
|
|
}
|
|
IsTrue(true, message, file, line);
|
|
}
|
|
}
|
|
}
|