b807be35ff
* add tests for threadcontext * add test for extensions * remove needed usage
94 lines
2.4 KiB
C#
94 lines
2.4 KiB
C#
using FluentAssertions;
|
|
using NUnit.Framework;
|
|
using Speckle.Testing;
|
|
|
|
namespace Speckle.Connectors.Common.Tests.Threading;
|
|
|
|
public class ThreadContextTests : MoqTest
|
|
{
|
|
[Test]
|
|
[TestCase(true, true, Funcs.RunMain)]
|
|
[TestCase(true, false, Funcs.MainToWorker)]
|
|
[TestCase(false, true, Funcs.WorkerToMain)]
|
|
[TestCase(false, false, Funcs.RunWorker)]
|
|
public async Task RunOnThread(bool isMain, bool useMain, Funcs? result)
|
|
{
|
|
var tc = new TestThreadContext(isMain);
|
|
bool resultRan = false;
|
|
await tc.RunOnThread(
|
|
() =>
|
|
{
|
|
resultRan = true;
|
|
},
|
|
useMain
|
|
);
|
|
resultRan.Should().BeTrue();
|
|
tc.Func.Should().Be(result);
|
|
}
|
|
|
|
[Test]
|
|
[TestCase(true, true, Funcs.RunMainAsync_T)]
|
|
[TestCase(true, false, Funcs.MainToWorker)]
|
|
[TestCase(false, true, Funcs.WorkerToMain)]
|
|
[TestCase(false, false, Funcs.RunWorkerAsync_T)]
|
|
public async Task RunOnThread_T(bool isMain, bool useMain, Funcs? result)
|
|
{
|
|
var tc = new TestThreadContext(isMain);
|
|
bool resultRan = false;
|
|
var x = await tc.RunOnThread(
|
|
() =>
|
|
{
|
|
resultRan = true;
|
|
return false;
|
|
},
|
|
useMain
|
|
);
|
|
resultRan.Should().BeTrue();
|
|
x.Should().BeFalse();
|
|
tc.Func.Should().Be(result);
|
|
}
|
|
|
|
[Test]
|
|
[TestCase(true, true, Funcs.RunMainAsync)]
|
|
[TestCase(true, false, Funcs.MainToWorkerAsync)]
|
|
[TestCase(false, true, Funcs.WorkerToMainAsync)]
|
|
[TestCase(false, false, Funcs.RunWorkerAsync)]
|
|
public async Task RunOnThreadAsync(bool isMain, bool useMain, Funcs? result)
|
|
{
|
|
var tc = new TestThreadContext(isMain);
|
|
bool resultRan = false;
|
|
await tc.RunOnThreadAsync(
|
|
() =>
|
|
{
|
|
resultRan = true;
|
|
return Task.CompletedTask;
|
|
},
|
|
useMain
|
|
);
|
|
resultRan.Should().BeTrue();
|
|
tc.Func.Should().Be(result);
|
|
}
|
|
|
|
[Test]
|
|
[TestCase(true, true, Funcs.RunMainAsync_T)]
|
|
[TestCase(true, false, Funcs.MainToWorkerAsync)]
|
|
[TestCase(false, true, Funcs.WorkerToMainAsync)]
|
|
[TestCase(false, false, Funcs.RunWorkerAsync_T)]
|
|
public async Task RunOnThreadAsync_T(bool isMain, bool useMain, Funcs? result)
|
|
{
|
|
var tc = new TestThreadContext(isMain);
|
|
bool resultRan = false;
|
|
var x = await tc.RunOnThreadAsync(
|
|
() =>
|
|
{
|
|
resultRan = true;
|
|
return Task.FromResult(false);
|
|
},
|
|
useMain
|
|
);
|
|
resultRan.Should().BeTrue();
|
|
x.Should().BeFalse();
|
|
tc.Func.Should().Be(result);
|
|
}
|
|
}
|