29 lines
875 B
Plaintext
29 lines
875 B
Plaintext
type FirstProblem { error Failed(message: Text) }
|
|
|
|
type SecondProblem { error Failed(message: Text) }
|
|
|
|
type Captured {
|
|
Done(value: Int)
|
|
error First(problem: FirstProblem)
|
|
error Second(problem: SecondProblem)
|
|
}
|
|
|
|
first() (value: Int) { fail(FirstProblem.Failed("first")) }
|
|
|
|
forwardFirst() (value: Int) { value = first() }
|
|
|
|
second() (value: Int) { fail(SecondProblem.Failed("second")) }
|
|
|
|
forwardSecond() (value: Int) { value = second() }
|
|
|
|
choose(flag: true) (value: Int) { value = forwardFirst() }
|
|
choose(flag: false) (value: Int) { value = forwardSecond() }
|
|
|
|
capture(flag: Bool) (value: Captured) { value = result(choose(flag)) }
|
|
|
|
verify() (answer: Bool) recover("compare both nominal errors") {
|
|
left = capture(true)
|
|
right = capture(false)
|
|
answer = left == Captured.First(FirstProblem.Failed("first")) and right == Captured.Second(SecondProblem.Failed("second"))
|
|
}
|