type State { Empty Label(text: Text) } label(value: null, active: Bool) (answer: Text) { dever.task.sleep(0) answer = "none" } label(value: Text, active: true) (answer: Text) { pending = run(dever.task.sleep(60000)) dever.task.sleep(0) answer = value + ":on" stop(pending) } label(value: Text, active: false) (answer: Text) { dever.task.sleep(0) answer = value + ":off" } read(value: null) (answer: Text) { dever.task.sleep(0) answer = "absent" } read(value: State.Empty) (answer: Text) { dever.task.sleep(0) answer = "empty" } read(value: State.Label(text)) (answer: Text) { dever.task.sleep(0) answer = text } axis(left: true, right: Int < 0) (answer: Int) { dever.task.sleep(0) answer = 1 } axis(left: true, right: other) (answer: Int) { dever.task.sleep(0) answer = 2 } axis(left: other, right: Int < 0) (answer: Int) { dever.task.sleep(0) answer = 3 } axis(left: other, right: other) (answer: Int) { dever.task.sleep(0) answer = 4 } attempt(fail_now: true) () { pending = run(dever.task.sleep(60000)) fail(dever.time.SleepResult.Failed("expected")) } attempt(fail_now: false) () { pending = run(dever.task.sleep(60000)) stop(pending) } failed(value: dever.time.SleepResult.Done) (answer: Bool) recover("检查捕获结果") { answer = false } failed(value: dever.time.SleepResult.Failed(message)) (answer: Bool) recover("检查捕获结果") { answer = message == "expected" } verify() (answer: Bool) { original = State.Label("雪") missing = label(null, true) enabled = wait(run(label("a", true))) disabled = label("b", false) absent = read(null) empty = read(State.Empty) named = wait(run(read(original))) first = axis(true, -1) second = axis(true, 0) third = axis(false, -1) fourth = axis(false, 0) present_number = wait(run(number(7))) absent_number = wait(run(number(null))) observed = failed(result(attempt(true))) completed = failed(result(attempt(false))) answer = missing == "none" and enabled == "a:on" and disabled == "b:off" and absent == "absent" and empty == "empty" and named == "雪" and original == State.Label("雪") and first == 1 and second == 2 and third == 3 and fourth == 4 and present_number == 7 and absent_number == -1 and observed and not completed } number(value: null) (answer: Int) { dever.task.sleep(0) answer = -1 } number(value: Int) (answer: Int) { dever.task.sleep(0) answer = value }