pocketlang/tests/lang/fibers.pk
Thakee Nathees 1951b3d5f7 self initialization and constructor calls implemented
fibers are moved to builtin class and the fiber
module has removed.

native docstring support required to move math to cli
modules (TODO)
2022-04-21 15:17:32 +05:30

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')