-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathasync.spec.lua
63 lines (54 loc) · 1.55 KB
/
async.spec.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
mtt.register("Promise.async", function(callback)
local p = Promise.async(function(await)
local v = await(Promise.after(0, 42))
assert(v == 42)
local v1 = await(Promise.resolve(666))
assert(v1 == 666)
return 99
end)
p:next(function(v)
assert(v == 99)
callback()
end)
end)
mtt.register("Promise.async interop", function()
return Promise.async(function(await)
return await(Promise.async(function(await2)
local v = await2(Promise.resolve(42))
assert(v == 42)
end))
end)
end)
mtt.register("Promise.async simple", function()
return Promise.async(function(await)
local v = await(Promise.resolve(42))
assert(v == 42)
end)
end)
mtt.register("Promise.async with handle_async", function()
return Promise.async(function(await)
local v, err = await(Promise.resolve(42))
assert(v == 42)
assert(not err)
v, err = await(Promise.handle_async(function() return 100 end))
assert(v == 100)
assert(not err)
end)
end)
mtt.register("Promise.async error propagation", function()
return Promise.async(function(await)
local v, err = await(Promise.reject("my-err"))
assert(not v)
assert(err == "my-err")
end)
end)
mtt.register("Promise.async direct error", function(callback)
local p = Promise.async(function()
error("stuff", 0)
end)
p:catch(function(e)
assert(type(e) == "string")
assert(e == "stuff")
callback()
end)
end)