diff options
Diffstat (limited to 'Compiler.Testing')
| -rw-r--r-- | Compiler.Testing/Compiler.Testing.csproj | 28 | ||||
| -rw-r--r-- | Compiler.Testing/SanityTests.cs | 43 | ||||
| -rw-r--r-- | Compiler.Testing/TestingHelpers.cs | 14 |
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 |
