summaryrefslogtreecommitdiff
path: root/Compiler.Testing
diff options
context:
space:
mode:
authorMelodi <62381002+Melodi17@users.noreply.github.com>2025-09-05 10:20:03 +1000
committerMelodi <62381002+Melodi17@users.noreply.github.com>2025-09-05 10:20:03 +1000
commit9e8ba6e00dc4a4137a5187dbe5fe5b1394219735 (patch)
treee5a54706a8a85243fdb0fe0f2ed73fb7b7566bcd /Compiler.Testing
parent4ea967c6089bbcaba5d71145546d288e186fba40 (diff)
stuff
Diffstat (limited to 'Compiler.Testing')
-rw-r--r--Compiler.Testing/Compiler.Testing.csproj28
-rw-r--r--Compiler.Testing/SanityTests.cs43
-rw-r--r--Compiler.Testing/TestingHelpers.cs14
3 files changed, 85 insertions, 0 deletions
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 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net9.0</TargetFramework>
+ <LangVersion>latest</LangVersion>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ <IsPackable>false</IsPackable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="coverlet.collector" Version="6.0.2"/>
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0"/>
+ <PackageReference Include="NUnit" Version="4.2.2"/>
+ <PackageReference Include="NUnit.Analyzers" Version="4.4.0"/>
+ <PackageReference Include="NUnit3TestAdapter" Version="4.6.0"/>
+ </ItemGroup>
+
+ <ItemGroup>
+ <Using Include="NUnit.Framework"/>
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Compiler\Compiler.csproj" />
+ <ProjectReference Include="..\Orchestrator\Orchestrator.csproj" />
+ </ItemGroup>
+
+</Project>
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<string> lines = Program.Compile(options, new AntlrInputStream(input));
+ return Program.Optimize(lines);
+ }
+} \ No newline at end of file