From cf3419c43530af8f4bbac5541052ef28f40d12b2 Mon Sep 17 00:00:00 2001 From: Yoshi Askharoun Date: Sat, 3 Feb 2024 20:51:54 -0600 Subject: [PATCH] Add Assembler tests --- libs/UIX.Test/Assembly.cs | 21 +++++++++++++++++++ libs/UIX.Test/Fixtures/MarkupSystemFixture.cs | 4 +++- libs/UIX.Test/Helpers/TempFile.cs | 11 +++++----- libs/UIX.Test/Resources/testA.uixa | 12 +++++++++++ libs/UIX.Test/TestResources.Designer.cs | 10 +++++++++ libs/UIX.Test/TestResources.resx | 3 +++ 6 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 libs/UIX.Test/Resources/testA.uixa diff --git a/libs/UIX.Test/Assembly.cs b/libs/UIX.Test/Assembly.cs index 1a37296..e37f4a0 100644 --- a/libs/UIX.Test/Assembly.cs +++ b/libs/UIX.Test/Assembly.cs @@ -3,6 +3,7 @@ using Microsoft.Iris.Asm; using Xunit.Abstractions; using Microsoft.Iris.Markup; using UIX.Test.Fixtures; +using Microsoft.Iris; namespace UIX.Test; @@ -36,6 +37,26 @@ main: Assert.Equal(9, ast.Body.Count()); } + [Fact] + public async Task Assemble() + { + using TempFile tempFile = new("testA.uixa", ".uixa"); + await tempFile.InitAsync(); + + CompilerInput[] compilerInputs = [ + new() + { + SourceFileName = tempFile.Path, + OutputFileName = Path.ChangeExtension(tempFile.Path, ".uib") + } + ]; + + foreach (var compilerInput in compilerInputs) + output.WriteLine(compilerInput.OutputFileName); + + MarkupCompiler.Compile(compilerInputs, default); + } + [Theory] [InlineData("text.uib")] [InlineData("text.uix")] diff --git a/libs/UIX.Test/Fixtures/MarkupSystemFixture.cs b/libs/UIX.Test/Fixtures/MarkupSystemFixture.cs index 0a4b681..a719fa1 100644 --- a/libs/UIX.Test/Fixtures/MarkupSystemFixture.cs +++ b/libs/UIX.Test/Fixtures/MarkupSystemFixture.cs @@ -1,4 +1,5 @@ -using Microsoft.Iris.Markup; +using Microsoft.Iris.Asm; +using Microsoft.Iris.Markup; namespace UIX.Test.Fixtures; @@ -7,6 +8,7 @@ public class MarkupSystemFixture : IDisposable public MarkupSystemFixture() { MarkupSystem.Startup(true); + Assembler.RegisterLoader(); } public void Dispose() => MarkupSystem.Shutdown(); diff --git a/libs/UIX.Test/Helpers/TempFile.cs b/libs/UIX.Test/Helpers/TempFile.cs index 96199c1..9e0e96c 100644 --- a/libs/UIX.Test/Helpers/TempFile.cs +++ b/libs/UIX.Test/Helpers/TempFile.cs @@ -5,23 +5,24 @@ namespace UIX.Test.Helpers; internal class TempFile : IDisposable, IAsyncInit { + private const string _defaultFileExtension = ".tmp"; private readonly Func _init; - public TempFile(System.Resources.ResourceManager resourceManager, string resourceName) - : this((byte[])resourceManager.GetObject(resourceName)!) + public TempFile(System.Resources.ResourceManager resourceManager, string resourceName, string fileExtension = _defaultFileExtension) + : this((byte[])resourceManager.GetObject(resourceName)!, fileExtension) { } - public TempFile(string resourceName) : this(TestResources.ResourceManager, resourceName) + public TempFile(string resourceName, string fileExtension = _defaultFileExtension) : this(TestResources.ResourceManager, resourceName, fileExtension) { } - public TempFile(byte[] data) + public TempFile(byte[] data, string fileExtension = _defaultFileExtension) { _init = async delegate { // Copy the test data to a temporary file because Iris can only load from a URI. - Path = System.IO.Path.GetTempFileName(); + Path = System.IO.Path.ChangeExtension(System.IO.Path.GetTempFileName(), fileExtension); await File.WriteAllBytesAsync(Path, data); }; } diff --git a/libs/UIX.Test/Resources/testA.uixa b/libs/UIX.Test/Resources/testA.uixa new file mode 100644 index 0000000..259d1a7 --- /dev/null +++ b/libs/UIX.Test/Resources/testA.uixa @@ -0,0 +1,12 @@ +.import-ns Me as me +.import-ns assembly://UIX/Microsoft.Iris as iris + +main: + COBJ 2 + PSHC 0 + PINI 1 + PSHC 1 + PINI 2 + PINI 0 + RETV + RETV \ No newline at end of file diff --git a/libs/UIX.Test/TestResources.Designer.cs b/libs/UIX.Test/TestResources.Designer.cs index 961fd1c..d8f47ef 100644 --- a/libs/UIX.Test/TestResources.Designer.cs +++ b/libs/UIX.Test/TestResources.Designer.cs @@ -70,6 +70,16 @@ namespace UIX.Test { } } + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] testA_uixa { + get { + object obj = ResourceManager.GetObject("testA.uixa", resourceCulture); + return ((byte[])(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// diff --git a/libs/UIX.Test/TestResources.resx b/libs/UIX.Test/TestResources.resx index 3fd14e2..dbd2d7b 100644 --- a/libs/UIX.Test/TestResources.resx +++ b/libs/UIX.Test/TestResources.resx @@ -121,6 +121,9 @@ Resources\testA.uix;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Resources\testA.uixa;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + Resources\testB.uix;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089