Files
core/test/rust/fixtures/ranges.dever
T
2026-11-03 03:32:07 +00:00

50 lines
1.2 KiB
Plaintext

type Port {
value: Int >= 1 and <= 65535
}
type Rate {
value: Decimal >= 0.0 and <= 1.0
}
type Row { value: Int }
choose(value: Int >= 1 and <= 65535) (answer: Port) pure {
answer = Port { value = value }
}
choose(value: other) (answer: Port) pure {
answer = Port { value = 8080 }
}
step(value: Port) (answer: Int >= 2 and <= 65536) pure {
answer = value.value + 1
}
scaled(value: Rate) (answer: Decimal >= 0.0 and <= 100.0) pure {
answer = value.value * 100.0
}
total(values: List<Port>) (answer: Int) pure {
answer = sum(step, values)
}
rates(values: List<Rate>) (answer: Decimal) pure {
answer = sum(scaled, values)
}
apply(route: handler(value: Int >= 1) (answer: Int >= 2)) (answer: Int >= 2) {
answer = route(1)
}
constant(value: Int) (answer: Int) pure { answer = 2 }
snapshot() (answer: Int >= 1) pure {
original = Row { value = 3 }
saved = original
original.value = 0
answer = saved.value
}
verify() (answer: Bool) {
answer = choose(0).value == 8080 and step(choose(65535)) == 65536 and total([choose(1), choose(2)]) == 5 and rates([Rate { value = 0.25 }, Rate { value = 0.5 }]) == 75.0 and snapshot() == 3 and apply(constant) == 2
}