Sfoglia il codice sorgente

activate js promise tests

see #4
Simon Krajewski 5 mesi fa
parent
commit
d46b667e49

+ 4 - 4
tests/misc/coroutines/src/Main.hx

@@ -6,11 +6,11 @@ function main() {
 		new TestTricky(),
 		new TestControlFlow(),
 		new TestHoisting(),
-		new TestMisc()
+		new TestMisc(),
 		// new TestGenerator(),
-		// #if js
-		// new TestJsPromise(),
-		// #end
+		#if js
+		new TestJsPromise(),
+		#end
 		// new TestYieldBasic(),
 		// new TestYieldIf(),
 		// new TestYieldFor(),

+ 46 - 34
tests/misc/coroutines/src/TestJsPromise.hx

@@ -1,9 +1,21 @@
 import js.lib.Error;
 import js.lib.Promise;
 
+using TestJsPromise.CoroTools;
+
+class CoroTools {
+	static public function start<T, E>(c:Coroutine<() -> T>, f:(T, E) -> Void) {
+		try {
+			f(Coroutine.run(c), null);
+		} catch(e:Dynamic) {
+			f(null, e);
+		}
+	}
+}
+
 @:coroutine
 private function await<T>(p:Promise<T>):T {
-	return Coroutine.suspend(cont -> p.then(r -> cont(r, Normal), e -> cont(e, Error)));
+	return Coroutine.suspend(cont -> p.then(r -> cont.resume(r, null), e -> cont.resume(null, e)));
 }
 
 private function promise<T>(c:Coroutine<()->T>):Promise<T> {
@@ -11,19 +23,19 @@ private function promise<T>(c:Coroutine<()->T>):Promise<T> {
 }
 
 class TestJsPromise extends utest.Test {
-	function testAwait(async:Async) {
-		var p = Promise.resolve(41);
+	// function testAwait(async:Async) {
+	// 	var p = Promise.resolve(41);
 
-		@:coroutine function awaiting() {
-			var x = await(p);
-			return x + 1;
-		}
+	// 	@:coroutine function awaiting() {
+	// 		var x = await(p);
+	// 		return x + 1;
+	// 	}
 
-		awaiting.start((result,error) -> {
-			Assert.equals(42, result);
-			async.done();
-		});
-	}
+	// 	awaiting.start((result,error) -> {
+	// 		Assert.equals(42, result);
+	// 		async.done();
+	// 	});
+	// }
 
 	function testPromise(async:Async) {
 		var p = promise(() -> 42);
@@ -33,33 +45,33 @@ class TestJsPromise extends utest.Test {
 		});
 	}
 
-	function testAsyncAwait(async:Async) {
-		var p1 = Promise.resolve(41);
+	// function testAsyncAwait(async:Async) {
+	// 	var p1 = Promise.resolve(41);
 
-		var p2 = promise(() -> {
-			var x = await(p1);
-			return x + 1;
-		});
+	// 	var p2 = promise(() -> {
+	// 		var x = await(p1);
+	// 		return x + 1;
+	// 	});
 
-		p2.then(result -> {
-			Assert.equals(42, result);
-			async.done();
-		});
-	}
+	// 	p2.then(result -> {
+	// 		Assert.equals(42, result);
+	// 		async.done();
+	// 	});
+	// }
 
-	function testAwaitRejected(async:Async) {
-		var p = Promise.reject("oh no");
+	// function testAwaitRejected(async:Async) {
+	// 	var p = Promise.reject("oh no");
 
-		@:coroutine function awaiting() {
-			var x = await(p);
-			return x + 1;
-		}
+	// 	@:coroutine function awaiting() {
+	// 		var x = await(p);
+	// 		return x + 1;
+	// 	}
 
-		awaiting.start((result,error) -> {
-			Assert.equals("oh no", error);
-			async.done();
-		});
-	}
+	// 	awaiting.start((result,error) -> {
+	// 		Assert.equals("oh no", error);
+	// 		async.done();
+	// 	});
+	// }
 
 	function testThrowInPromise(async:Async) {
 		var p = promise(() -> throw new Error("oh no"));