From 9e8ba6e00dc4a4137a5187dbe5fe5b1394219735 Mon Sep 17 00:00:00 2001 From: Melodi <62381002+Melodi17@users.noreply.github.com> Date: Fri, 5 Sep 2025 10:20:03 +1000 Subject: stuff --- Compiler.Testing/Compiler.Testing.csproj | 28 +++++++++++++++++++++ Compiler.Testing/SanityTests.cs | 43 ++++++++++++++++++++++++++++++++ Compiler.Testing/TestingHelpers.cs | 14 +++++++++++ 3 files changed, 85 insertions(+) create mode 100644 Compiler.Testing/Compiler.Testing.csproj create mode 100644 Compiler.Testing/SanityTests.cs create mode 100644 Compiler.Testing/TestingHelpers.cs (limited to 'Compiler.Testing') diff --git a/Compiler.Testing/Compiler.Testing.csproj b/Compiler.Testing/Compiler.Testing.csproj new file mode 100644 index 0000000..ed9c322 --- /dev/null +++ b/Compiler.Testing/Compiler.Testing.csproj @@ -0,0 +1,28 @@ + + + + net9.0 + latest + enable + enable + false + + + + + + + + + + + + + + + + + + + + diff --git a/Compiler.Testing/SanityTests.cs b/Compiler.Testing/SanityTests.cs new file mode 100644 index 0000000..46c0323 --- /dev/null +++ b/Compiler.Testing/SanityTests.cs @@ -0,0 +1,43 @@ +namespace Compiler.Testing; + +using Q1; + +[TestFixture] +public class SanityTests +{ + [Test] + public void BlankProgram() + { + string program = """ + int main() { } + """; + + string result = TestingHelpers.CompileString(program).Trim(); + Assert.That( + result, Is.EqualTo( + """ + jmp _main + _main: + mov 0, V0 + ret + """)); + } + + [Test] + public void ReturnConstant() + { + string program = """ + int main() { return 42; } + """; + + string result = TestingHelpers.CompileString(program).Trim(); + Assert.That( + result, Is.EqualTo( + """ + jmp _main + _main: + mov 42, V0 + ret + """)); + } +} \ No newline at end of file diff --git a/Compiler.Testing/TestingHelpers.cs b/Compiler.Testing/TestingHelpers.cs new file mode 100644 index 0000000..a3d85fe --- /dev/null +++ b/Compiler.Testing/TestingHelpers.cs @@ -0,0 +1,14 @@ +namespace Compiler.Testing; + +using Antlr4.Runtime; +using Q1.Compiler; + +public class TestingHelpers +{ + public static string CompileString(string input) + { + CompilerOptions options = new() { CommentCompilationMode = CommentCompilationMode.None }; + IEnumerable lines = Program.Compile(options, new AntlrInputStream(input)); + return Program.Optimize(lines); + } +} \ No newline at end of file -- cgit v1.3.1