mirror of
https://github.com/zekexiao/pocketlang.git
synced 2025-02-05 20:26:53 +08:00
![Thakee Nathees](/assets/img/avatar_default.png)
fibers are moved to builtin class and the fiber module has removed. native docstring support required to move math to cli modules (TODO)
38 lines
716 B
Plaintext
38 lines
716 B
Plaintext
|
|
def f0()
|
|
yield("yield value")
|
|
end
|
|
|
|
fiber = Fiber(f0)
|
|
yield_value = fiber.run()
|
|
assert(yield_value == "yield value")
|
|
assert(!fiber.is_done)
|
|
|
|
def f1()
|
|
assert(yield("y") == "r")
|
|
yield()
|
|
end
|
|
|
|
fiber = Fiber(f1)
|
|
assert(fiber.run() == "y")
|
|
fiber.resume("r")
|
|
assert(!fiber.is_done)
|
|
|
|
def f2(p1, p2, p3)
|
|
r1 = yield(p3); assert(r1 == 'r1')
|
|
r2 = yield(p2); assert(r2 == 'r2')
|
|
r3 = yield(p1); assert(r3 == 'r3')
|
|
|
|
return p1 + p2 * p3
|
|
end
|
|
|
|
fiber = Fiber(f2)
|
|
p3 = fiber.run(1, 2, 3); assert(p3 == 3)
|
|
p2 = fiber.resume('r1'); assert(p2 == 2)
|
|
p1 = fiber.resume('r2'); assert(p1 == 1)
|
|
pa = fiber.resume('r3'); assert(pa == 7)
|
|
assert(fiber.is_done)
|
|
|
|
# If we got here, that means all test were passed.
|
|
print('All TESTS PASSED')
|