|
@@ -42,6 +42,30 @@ public class AsyncTests
|
|
Assert.Equal(AsyncTestClass.TestString, result);
|
|
Assert.Equal(AsyncTestClass.TestString, result);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ [Fact]
|
|
|
|
+ public void ShouldUnwrapPromiseWithCustomTimeout()
|
|
|
|
+ {
|
|
|
|
+ Engine engine = new(options => options.ExperimentalFeatures = ExperimentalFeature.TaskInterop);
|
|
|
|
+ engine.SetValue("asyncTestClass", new AsyncTestClass());
|
|
|
|
+ var result = engine.Evaluate("asyncTestClass.ReturnDelayedTaskAsync().then(x=>x)");
|
|
|
|
+ result = result.UnwrapIfPromise(TimeSpan.FromMilliseconds(200));
|
|
|
|
+ Assert.Equal(AsyncTestClass.TestString, result);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Fact]
|
|
|
|
+ public void ShouldAwaitUnwrapPromiseWithCustomTimeout()
|
|
|
|
+ {
|
|
|
|
+ Engine engine = new(options => { options.ExperimentalFeatures = ExperimentalFeature.TaskInterop; options.Constraints.PromiseTimeout = TimeSpan.FromMilliseconds(500); });
|
|
|
|
+ engine.SetValue("asyncTestClass", new AsyncTestClass());
|
|
|
|
+ engine.Execute("""
|
|
|
|
+ async function test() {
|
|
|
|
+ return await asyncTestClass.ReturnDelayedTaskAsync();
|
|
|
|
+ }
|
|
|
|
+ """);
|
|
|
|
+ var result = engine.Invoke("test").UnwrapIfPromise();
|
|
|
|
+ Assert.Equal(AsyncTestClass.TestString, result);
|
|
|
|
+ }
|
|
|
|
+
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldReturnedCompletedTaskConvertedToPromiseInJS()
|
|
public void ShouldReturnedCompletedTaskConvertedToPromiseInJS()
|
|
{
|
|
{
|
|
@@ -230,7 +254,7 @@ public class AsyncTests
|
|
|
|
|
|
Assert.Equal(expected, log.Select(x => x.AsString()).ToArray());
|
|
Assert.Equal(expected, log.Select(x => x.AsString()).ToArray());
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
[Fact]
|
|
[Fact]
|
|
public void ShouldPromiseBeResolved()
|
|
public void ShouldPromiseBeResolved()
|
|
{
|
|
{
|
|
@@ -240,7 +264,7 @@ public class AsyncTests
|
|
{
|
|
{
|
|
log.Add(str);
|
|
log.Add(str);
|
|
});
|
|
});
|
|
-
|
|
|
|
|
|
+
|
|
const string Script = """
|
|
const string Script = """
|
|
async function main() {
|
|
async function main() {
|
|
return new Promise(function (resolve) {
|
|
return new Promise(function (resolve) {
|
|
@@ -268,7 +292,7 @@ public class AsyncTests
|
|
{
|
|
{
|
|
Task.Delay(ms).ContinueWith(_ => action());
|
|
Task.Delay(ms).ContinueWith(_ => action());
|
|
});
|
|
});
|
|
-
|
|
|
|
|
|
+
|
|
const string Script = """
|
|
const string Script = """
|
|
var delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
var delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
async function main() {
|
|
async function main() {
|