This file was deleted.

@@ -14,7 +14,7 @@ public class RenderTestContext
public RenderTestContext()
{
Trace.Assert(TestReporter.Instance != null);
RenderTestHarness = new RenderTestHarness(TestReporter.Instance);
RenderTestHarness = new RenderTestHarness();
}
}
}

This file was deleted.

@@ -8,18 +8,17 @@
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Xunit;
using SRPScripting;
using NUnit.Framework;

namespace SRPTests.TestRenderer
{
public class RenderTestHarness : IDisposable, IClassFixture<TestReporter>
public class RenderTestHarness : IDisposable
{
private readonly TestRenderer _renderer;
private readonly TestWorkspace _workspace;
private readonly SyrupRenderer _sr;
private readonly Scripting _scripting;
private readonly TestReporter _reporter;

private static readonly string _baseDir = Path.Combine(GlobalConfig.BaseDir, @"SRPTests\TestScripts");
private static readonly string _expectedResultDir = Path.Combine(_baseDir, "ExpectedResults");
@@ -29,10 +28,8 @@ public class RenderTestHarness : IDisposable, IClassFixture<TestReporter>

public IRenderInterface RenderInterface => _sr.ScriptInterface;

public RenderTestHarness(TestReporter reporter)
public RenderTestHarness()
{
_reporter = reporter;

_renderer = new TestRenderer(64, 64);
_workspace = new TestWorkspace(_baseDir);
_scripting = new Scripting(_workspace);
@@ -61,10 +58,12 @@ public async Task Go(string name)
bool bSuccess = false;
Bitmap result = null;

name = TestContext.CurrentContext.Test.Name;

try
{
// This should never fire, as the exception should propagate out of RunScript.
Assert.False(_sr.HasScriptError, "Error executing script");
Assert.That(_sr.HasScriptError, Is.False, "Error executing script");

// Render it.
result = _renderer.Render(_sr);
@@ -81,7 +80,7 @@ public async Task Go(string name)
finally
{
// Report result.
await _reporter.TestCompleteAsync(name, bSuccess, result);
await TestReporter.Instance.TestCompleteAsync(name, bSuccess, result);
}
}
}

This file was deleted.

@@ -1,11 +1,11 @@
using System;
using System.Diagnostics;
using System.Drawing;
using System.Reactive.Disposables;
using System.Runtime.InteropServices;
using SlimDX;
using SlimDX.Direct3D11;
using SRPRendering;
using Xunit;

namespace SRPTests.TestRenderer
{
@@ -69,7 +69,7 @@ public void Dispose()

public Bitmap Render(SyrupRenderer sr)
{
Assert.NotNull(sr);
Trace.Assert(sr != null);

var context = device.Device.ImmediateContext;

@@ -5,8 +5,13 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using SRPTests.Util;

// In reality, this would have to go in the test assembly.
[assembly: SRPTests.TestRenderer.UseTestReporter]

namespace SRPTests.TestRenderer
{
// Interface for a test reporter implementation.
@@ -86,4 +91,23 @@ public async Task TestCompleteAsync(string name, bool bSuccess, Bitmap result)
}
}
}

// Class for handling initialisation and disposal of the reporter.
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)]
public class UseTestReporterAttribute : Attribute, ITestAction
{
public ActionTargets Targets => ActionTargets.Suite;

public void BeforeTest(ITest test)
{
// TODO: Async?
TestReporter.StaticInitAsync().Wait();
}

public void AfterTest(ITest test)
{
// TODO: Async?
TestReporter.StaticDisposeAsync().Wait();
}
}
}
@@ -6,19 +6,12 @@
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net45" userInstalled="true" />
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net45" userInstalled="true" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" userInstalled="true" />
<package id="NSubstitute" version="1.9.1.0" targetFramework="net45" />
<package id="NUnit" version="3.0.1" targetFramework="net45" />
<package id="NUnit.Console" version="3.0.1" targetFramework="net45" />
<package id="Rx-Core" version="2.2.5" targetFramework="net45" userInstalled="true" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" userInstalled="true" />
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" userInstalled="true" />
<package id="Rx-Main" version="2.2.5" targetFramework="net45" userInstalled="true" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" userInstalled="true" />
<package id="SlimDX" version="4.0.13.44" targetFramework="net45" userInstalled="true" />
<package id="xunit" version="2.1.0" targetFramework="net45" userInstalled="true" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" userInstalled="true" />
<package id="xunit.assert" version="2.1.0" targetFramework="net45" userInstalled="true" />
<package id="xunit.core" version="2.1.0" targetFramework="net45" userInstalled="true" />
<package id="xunit.extensibility.core" version="2.1.0" targetFramework="net45" userInstalled="true" />
<package id="xunit.extensibility.execution" version="2.1.0" targetFramework="net45" />
<package id="xunit.runner.console" version="2.1.0" targetFramework="net45" />
<package id="xunit.runner.visualstudio" version="2.1.0" targetFramework="net45" userInstalled="true" />
</packages>

This file was deleted.

@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<test-run id="2" testcasecount="3" result="Failed" total="3" passed="0" failed="3" inconclusive="0" skipped="0" asserts="6" engine-version="3.0.5813.39036" clr-version="4.0.30319.42000" start-time="2016-02-20 16:40:20Z" end-time="2016-02-20 16:40:21Z" duration="1.353508">
<command-line><![CDATA[.\packages\NUnit.Console.3.0.1\tools\nunit3-console.exe .\SRPTests\bin\x86\Debug\SRPTests.dll]]></command-line>
<test-suite type="Assembly" id="0-1005" name="SRPTests.dll" fullname="C:\GitHub\ShaderUnit\SRPTests\bin\x86\Debug\SRPTests.dll" runstate="Runnable" testcasecount="3" result="Failed" site="Child" start-time="2016-02-20 16:40:20Z" end-time="2016-02-20 16:40:21Z" duration="1.315060" total="3" passed="0" failed="3" inconclusive="0" skipped="0" asserts="6">
<environment framework-version="3.0.5813.39031" clr-version="4.0.30319.42000" os-version="Microsoft Windows NT 10.0.10565.0" platform="Win32NT" cwd="C:\GitHub\ShaderUnit" machine-name="KIWI" user="Simon" user-domain="KIWI" culture="en-GB" uiculture="en-GB" os-architecture="x86" />
<settings>
<setting name="WorkDirectory" value="C:\GitHub\ShaderUnit" />
<setting name="NumberOfTestWorkers" value="8" />
</settings>
<properties>
<property name="_PID" value="19824" />
<property name="_APPDOMAIN" value="test-domain-" />
</properties>
<failure>
<message><![CDATA[One or more child tests had errors]]></message>
</failure>
<output><![CDATA[Result images written to C:\Users\Simon\AppData\Local\Temp\ShaderUnitOutput
AfterTest (0) for SRPTests.dll
]]></output>
<test-suite type="TestSuite" id="0-1006" name="SRPTests" fullname="SRPTests" runstate="Runnable" testcasecount="3" result="Failed" site="Child" start-time="2016-02-20 16:40:20Z" end-time="2016-02-20 16:40:21Z" duration="1.303588" total="3" passed="0" failed="3" inconclusive="0" skipped="0" asserts="6">
<failure>
<message><![CDATA[One or more child tests had errors]]></message>
</failure>
<test-suite type="TestSuite" id="0-1007" name="ShaderTests" fullname="SRPTests.ShaderTests" runstate="Runnable" testcasecount="3" result="Failed" site="Child" start-time="2016-02-20 16:40:20Z" end-time="2016-02-20 16:40:21Z" duration="1.302833" total="3" passed="0" failed="3" inconclusive="0" skipped="0" asserts="6">
<failure>
<message><![CDATA[One or more child tests had errors]]></message>
</failure>
<test-suite type="TestFixture" id="0-1000" name="MyPixelShaderTest" fullname="SRPTests.ShaderTests.MyPixelShaderTest" classname="SRPTests.ShaderTests.MyPixelShaderTest" runstate="Runnable" testcasecount="3" result="Failed" site="Child" start-time="2016-02-20 16:40:20Z" end-time="2016-02-20 16:40:21Z" duration="1.301870" total="3" passed="0" failed="3" inconclusive="0" skipped="0" asserts="6">
<failure>
<message><![CDATA[One or more child tests had errors]]></message>
</failure>
<output><![CDATA[RenderTestHarness: Using device 'Microsoft Basic Render Driver'
]]></output>
<test-suite type="ParameterizedMethod" id="0-1004" name="MyParameterisedTest" fullname="SRPTests.ShaderTests.MyPixelShaderTest.MyParameterisedTest" runstate="Runnable" testcasecount="2" result="Failed" site="Child" start-time="2016-02-20 16:40:20Z" end-time="2016-02-20 16:40:21Z" duration="0.664301" total="2" passed="0" failed="2" inconclusive="0" skipped="0" asserts="4">
<failure>
<message><![CDATA[One or more child tests had errors]]></message>
</failure>
<test-case id="0-1002" name="MyParameterisedTest(0.0f,1.0f,0.0f,1.0f)" fullname="SRPTests.ShaderTests.MyPixelShaderTest.MyParameterisedTest(0.0f,1.0f,0.0f,1.0f)" methodname="MyParameterisedTest" classname="SRPTests.ShaderTests.MyPixelShaderTest" runstate="Runnable" seed="1396928079" result="Failed" start-time="2016-02-20 16:40:20Z" end-time="2016-02-20 16:40:21Z" duration="0.652049" asserts="2">
<failure>
<message><![CDATA[ No expected image to compare against.
Expected: True
But was: False
]]></message>
<stack-trace><![CDATA[at SRPTests.TestRenderer.RenderTestHarness.<Go>d__12.MoveNext() in C:\GitHub\ShaderUnit\SRPTests\TestRenderer\RenderTestHarness.cs:line 73
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at SRPTests.TestRenderer.RenderTestHarness.<Go>d__12.MoveNext() in C:\GitHub\ShaderUnit\SRPTests\TestRenderer\RenderTestHarness.cs:line 84
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at SRPTests.ShaderTests.MyPixelShaderTest.<MyParameterisedTest>d__5.MoveNext() in C:\GitHub\ShaderUnit\SRPTests\ShaderTests\MyPixelShaderTest.cs:line 63
--- End of stack trace from previous location where exception was thrown ---
at NUnit.Framework.Internal.AsyncInvocationRegion.AsyncTaskInvocationRegion.WaitForPendingOperationsToComplete(Object invocationResult)
at NUnit.Framework.Internal.Commands.TestMethodCommand.RunAsyncTestMethod(TestExecutionContext context)
]]></stack-trace>
</failure>
</test-case>
<test-case id="0-1003" name="MyParameterisedTest(0.0f,0.0f,1.0f,1.0f)" fullname="SRPTests.ShaderTests.MyPixelShaderTest.MyParameterisedTest(0.0f,0.0f,1.0f,1.0f)" methodname="MyParameterisedTest" classname="SRPTests.ShaderTests.MyPixelShaderTest" runstate="Runnable" seed="202129304" result="Failed" start-time="2016-02-20 16:40:21Z" end-time="2016-02-20 16:40:21Z" duration="0.009392" asserts="2">
<failure>
<message><![CDATA[ No expected image to compare against.
Expected: True
But was: False
]]></message>
<stack-trace><![CDATA[at SRPTests.TestRenderer.RenderTestHarness.<Go>d__12.MoveNext() in C:\GitHub\ShaderUnit\SRPTests\TestRenderer\RenderTestHarness.cs:line 73
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at SRPTests.TestRenderer.RenderTestHarness.<Go>d__12.MoveNext() in C:\GitHub\ShaderUnit\SRPTests\TestRenderer\RenderTestHarness.cs:line 84
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at SRPTests.ShaderTests.MyPixelShaderTest.<MyParameterisedTest>d__5.MoveNext() in C:\GitHub\ShaderUnit\SRPTests\ShaderTests\MyPixelShaderTest.cs:line 63
--- End of stack trace from previous location where exception was thrown ---
at NUnit.Framework.Internal.AsyncInvocationRegion.AsyncTaskInvocationRegion.WaitForPendingOperationsToComplete(Object invocationResult)
at NUnit.Framework.Internal.Commands.TestMethodCommand.RunAsyncTestMethod(TestExecutionContext context)
]]></stack-trace>
</failure>
</test-case>
</test-suite>
<test-case id="0-1001" name="MyTest" fullname="SRPTests.ShaderTests.MyPixelShaderTest.MyTest" methodname="MyTest" classname="SRPTests.ShaderTests.MyPixelShaderTest" runstate="Runnable" seed="2031539648" result="Failed" start-time="2016-02-20 16:40:21Z" end-time="2016-02-20 16:40:21Z" duration="0.029441" asserts="2">
<failure>
<message><![CDATA[ No expected image to compare against.
Expected: True
But was: False
]]></message>
<stack-trace><![CDATA[at SRPTests.TestRenderer.RenderTestHarness.<Go>d__12.MoveNext() in C:\GitHub\ShaderUnit\SRPTests\TestRenderer\RenderTestHarness.cs:line 73
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at SRPTests.TestRenderer.RenderTestHarness.<Go>d__12.MoveNext() in C:\GitHub\ShaderUnit\SRPTests\TestRenderer\RenderTestHarness.cs:line 84
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at SRPTests.ShaderTests.MyPixelShaderTest.<MyTest>d__4.MoveNext() in C:\GitHub\ShaderUnit\SRPTests\ShaderTests\MyPixelShaderTest.cs:line 43
--- End of stack trace from previous location where exception was thrown ---
at NUnit.Framework.Internal.AsyncInvocationRegion.AsyncTaskInvocationRegion.WaitForPendingOperationsToComplete(Object invocationResult)
at NUnit.Framework.Internal.Commands.TestMethodCommand.RunAsyncTestMethod(TestExecutionContext context)
]]></stack-trace>
</failure>
</test-case>
</test-suite>
</test-suite>
</test-suite>
</test-suite>
</test-run>