pocketlang/tests/lang/fibers.pk
Thakee Nathees 29be68fc86 classes were removed temproarly
to implement classes properly and support methods I had to remove
the older class syntax temproarly.
2022-04-20 13:54:45 +05:30

39 lines
797 B
Plaintext

def f0()
yield("yield value")
end
import _Fiber
fiber = _Fiber.new(f0)
yield_value = _Fiber.run(fiber)
assert(yield_value == "yield value")
assert(!fiber.is_done)
def f1()
assert(yield("y") == "r")
yield()
end
fiber = _Fiber.new(f1)
assert(_Fiber.run(fiber) == "y")
_Fiber.resume(fiber, "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.new(f2)
p3 = _Fiber.run(fiber, 1, 2, 3); assert(p3 == 3)
p2 = _Fiber.resume(fiber, 'r1'); assert(p2 == 2)
p1 = _Fiber.resume(fiber, 'r2'); assert(p1 == 1)
pa = _Fiber.resume(fiber, 'r3'); assert(pa == 7)
assert(fiber.is_done)
# If we got here, that means all test were passed.
print('All TESTS PASSED')