49 lines
1.5 KiB
Plaintext
49 lines
1.5 KiB
Plaintext
type Problem {
|
|
error Denied(message: Text)
|
|
}
|
|
|
|
key(item: 0) (answer: Text) { fail(Problem.Denied("key first")) }
|
|
key(item: other) (answer: Text) { answer = "ok" }
|
|
|
|
checkedValue(value: Int) (answer: Int) { answer = value + 1 }
|
|
|
|
write(item: Int, state: Map<Text, Int>) (answer: Map<Text, Int>) {
|
|
answer = put(state, key(item), checkedValue(9223372036854775807))
|
|
}
|
|
|
|
present(value: Int) (answer: Int) { answer = value }
|
|
present(value: null) (answer: Int) { answer = 0 }
|
|
|
|
bump(item: Id, state: Map<Id, Int>) (answer: Map<Id, Int>) {
|
|
answer = put(state, item, present(get(state, item)) + 1)
|
|
}
|
|
|
|
add(item: Int, state: Int) (answer: Int) { answer = state + item }
|
|
|
|
nestedValue(item: Int, state: Map<Int, Int>) (answer: Map<Int, Int>) {
|
|
answer = put(state, item, reduce(add, [item, 1], present(get(state, item))))
|
|
}
|
|
|
|
keyFailure() (answer: Map<Text, Int>) {
|
|
answer = reduce(write, [0], {})
|
|
}
|
|
|
|
valueFault() (answer: Map<Text, Int>) {
|
|
answer = reduce(write, [1], {})
|
|
}
|
|
|
|
seedFailure() (answer: Map<Text, Int>) {
|
|
answer = reduce(write, [], put({}, key(0), 0))
|
|
}
|
|
|
|
verify() (answer: Bool) {
|
|
seed = { dever.id.fromText("a") = 4 }
|
|
ids = each(dever.id.fromText, ["a", "b", "a"])
|
|
values = reduce(bump, ids, seed)
|
|
answer = get(values, dever.id.fromText("a")) == 6 and get(values, dever.id.fromText("b")) == 1
|
|
answer = answer and get(seed, dever.id.fromText("a")) == 4 and length(seed) == 1
|
|
answer = answer and reduce(bump, [], seed) == seed
|
|
answer = answer and length(reduce(write, [], {})) == 0
|
|
answer = answer and get(reduce(nestedValue, [2, 2], {}), 2) == 6
|
|
}
|