57 lines
2.1 KiB
Plaintext
57 lines
2.1 KiB
Plaintext
type ValueResult { Ready(value: Int)
|
|
error Failed(message: Text) }
|
|
|
|
work(delay: Int, number: Int) (value: Int) { dever.task.sleep(delay)
|
|
value = number }
|
|
|
|
fallback() (value: Int) { value = 7 }
|
|
|
|
bad(delay: Int) (value: Int) { dever.task.sleep(delay)
|
|
fail(ValueResult.Failed("worker")) }
|
|
|
|
fallbackFault() (value: Int) { fail(ValueResult.Failed("fallback")) }
|
|
|
|
nothing() (value: Int?) { value = null }
|
|
|
|
nullableFallback() (value: Int?) { value = 9 }
|
|
|
|
pair(delay: Int) (first: Int, second: Text) { dever.task.sleep(delay)
|
|
first = 4
|
|
second = "pair" }
|
|
|
|
pairFallback() (first: Int, second: Text) { first = 7
|
|
second = "fallback" }
|
|
|
|
empty() () {}
|
|
|
|
duration() (value: Int) { dever.task.sleep(0)
|
|
value = 10000 }
|
|
|
|
badDuration() (value: Int) { dever.task.sleep(0)
|
|
fail(ValueResult.Failed("argument")) }
|
|
|
|
timeoutFault() (value: Int) { value = timeout(run(bad(0)), 10000, fallbackFault) }
|
|
|
|
raceFault() (value: Int) { value = race(run(bad(0)), run(work(60000, 3))) }
|
|
|
|
invalidTimeout() () { timeout(run(dever.task.sleep(60000)), 0, empty) }
|
|
|
|
argumentFault() (value: Int) { value = timeout(run(work(60000, 3)), badDuration(), fallback) }
|
|
|
|
raceArgumentFault() (value: Int) { value = race(run(work(60000, 1)), run(work(badDuration(), 2))) }
|
|
|
|
verify() (answer: Bool) {
|
|
ready = timeout(run(work(0, 1)), 10000, fallback)
|
|
expired = timeout(run(work(60000, 2)), 1, fallback)
|
|
nullable = timeout(run(nothing()), 10000, nullableFallback)
|
|
evaluated = timeout(run(work(0, 3)), duration(), fallback)
|
|
pair_value = timeout(run(pair(0)), 10000, pairFallback)
|
|
pair_expired = timeout(run(pair(60000)), 1, pairFallback)
|
|
pair_winner = race(run(pair(60000)), run(pair(0)))
|
|
winner = race(run(work(60000, 1)), run(work(60000, 2)), run(work(0, 3)))
|
|
timeout(run(dever.task.sleep(0)), 10000, empty)
|
|
timeout(run(dever.task.sleep(60000)), 1, empty)
|
|
race(run(dever.task.sleep(60000)), run(dever.task.sleep(0)))
|
|
answer = ready == 1 and expired == 7 and nullable == null and evaluated == 3 and pair_value.first == 4 and pair_value.second == "pair" and pair_expired.first == 7 and pair_expired.second == "fallback" and pair_winner.first == 4 and pair_winner.second == "pair" and winner == 3
|
|
}
|