57 lines
1.9 KiB
Plaintext
57 lines
1.9 KiB
Plaintext
type Result { Done
|
|
error Failed(message: Text) }
|
|
|
|
type Message { Value(value: Int?) }
|
|
|
|
produce(values: Channel<Int>) () { send(values, 10)
|
|
send(values, 20)
|
|
close(values) }
|
|
|
|
handled(value: null) (answer: Bool) recover("处理接收错误") { answer = false }
|
|
handled(value: Result.Done) (answer: Bool) recover("处理接收错误") { answer = false }
|
|
handled(value: Result.Failed(message)) (answer: Bool) recover("处理接收错误") { answer = message == "reason" }
|
|
|
|
nested(value: null) (answer: Bool) { answer = false }
|
|
nested(value: Channel<Int>) (answer: Bool) { answer = receive(value) == 7 }
|
|
|
|
verify() (answer: Bool) {
|
|
values = channel(Int, 1)
|
|
pending = run(produce(values))
|
|
first = receive(values)
|
|
second = receive(values)
|
|
end = receive(values)
|
|
wait(pending)
|
|
nullable_values = channel(Message, 2)
|
|
send(nullable_values, Message.Value(null))
|
|
send(nullable_values, Message.Value(30))
|
|
nullable_item = receive(nullable_values)
|
|
present = receive(nullable_values)
|
|
alias = nullable_values
|
|
close(alias)
|
|
nullable_end = receive(nullable_values)
|
|
lists = channel(List<Int>, 1)
|
|
original = [1, 2]
|
|
send(lists, original)
|
|
original = append(original, 3)
|
|
copied = receive(lists)
|
|
nested_values = channel(Channel<Int>, 1)
|
|
child = channel(Int, 1)
|
|
send(child, 7)
|
|
send(nested_values, child)
|
|
nested_ok = nested(receive(nested_values))
|
|
failures = channel(Result, 1)
|
|
send(failures, Result.Failed("reason"))
|
|
error_ok = handled(receive(failures))
|
|
answer = first == 10 and second == 20 and end == null and nullable_item == Message.Value(null) and present == Message.Value(30) and nullable_end == null and copied == [1, 2] and original == [1, 2, 3] and nested_ok and error_ok
|
|
}
|
|
|
|
creation() (value: Channel<Int>) { value = channel(Int, 1) }
|
|
|
|
nullable() (value: Channel<Int>?) { value = null }
|
|
|
|
invalid() () { values = channel(Int, 0) }
|
|
|
|
closed() () { values = channel(Int, 1)
|
|
close(values)
|
|
send(values, 42) }
|