diff --git a/src/test/cases/BasicTestCase.hx b/src/test/cases/BasicTestCase.hx index 55c9a08..019c161 100644 --- a/src/test/cases/BasicTestCase.hx +++ b/src/test/cases/BasicTestCase.hx @@ -7,6 +7,9 @@ import kiss.List; import kiss.Stream; import haxe.ds.Option; import kiss.Kiss; +#if js +import js.lib.Promise; +#end using StringTools; @@ -413,6 +416,12 @@ class BasicTestCase extends Test { } #end + #if js + function testAwaitLet(async:utest.Async) { + _testAwaitLet(async); + } + #end + var aNullToPrint = null; } diff --git a/src/test/cases/BasicTestCase.kiss b/src/test/cases/BasicTestCase.kiss index aaa40bf..32aab52 100644 --- a/src/test/cases/BasicTestCase.kiss +++ b/src/test/cases/BasicTestCase.kiss @@ -770,4 +770,42 @@ From:[(assert false (+ \"false \" \"should \" \"have \" \"been \" \"true\"))]" m (typeCase ["a" 5 5.5 true] ([:String a :Int five :Float fivePointFive :Bool tt] (Assert.equals "a55.5true" "${a}${five}${fivePointFive}${tt}")) - (never otherwise))) \ No newline at end of file + (never otherwise))) + +(function _testAwaitLet [:utest.Async async] + (localFunction :Promise newPromise [:Bool succeed] + (new Promise + ->:Void [ + :Bool->Void resolve + :Dynamic->Void reject + ] (if succeed (resolve true) (reject false)))) + + (awaitLet [result (newPromise true)] + (catch [:Dynamic e] (Assert.fail)) + (Assert.isTrue result) + (awaitLet [res1 (newPromise false) + res2 (newPromise true) + res3 (newPromise true)] + (catch [:Dynamic e] + (Assert.isFalse e) + (awaitLet [res1 (newPromise true) + res2 (newPromise false) + res3 (newPromise true)] + (catch [:Dynamic e] + (Assert.isFalse e) + (awaitLet [res1 (newPromise true) + res2 (newPromise true) + res3 (newPromise false)] + (catch [:Dynamic e] + (Assert.isFalse e) + (awaitLet [res1 (newPromise true) + res2 (newPromise res1) + res3 (newPromise res2)] + (Assert.isTrue ?(and res1 res2 res3)) + (async.done)) + e) + (Assert.fail)) + e) + (Assert.fail)) + e) + (Assert.fail)))) \ No newline at end of file