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

108 lines
3.4 KiB
Plaintext

type Row { values: List<Int>
count: Int }
appendValue(item: Int, state: Row) (next: Row) {
values = append(state.values, item)
next = Row { values = values
count = state.count + 1 }
}
preserved(state: Row) (next: Row) {
added = append(state.values, 99)
next = state
next.count = length(added)
}
appendObserved(item: Int, state: Row) (next: Row) {
values = append(state.values, item + length(state.values))
next = Row { values = values
count = length(state.values) }
}
appendCounted(item: Int, state: Row) (next: Row) {
values = append(state.values, item)
next = Row { values = values
count = length(values) }
}
type Pair { values: List<Int>
first: Int
second: Int }
appendPair(item: Int, state: Pair) (next: Pair) {
values = append(state.values, item + state.first)
next = Pair { second = state.first
values = values
first = state.second + item }
}
appendFault(item: Int, state: Pair) (next: Pair) {
values = append(state.values, item * state.first)
next = Pair { second = state.second + 1
values = values
first = state.first + 1 }
}
prefixFault() (answer: Pair) {
answer = reduce(appendFault, [2], Pair { values = [1]
first = 9223372036854775807
second = 9223372036854775807 })
}
firstFieldFault() (answer: Pair) {
answer = reduce(appendFault, [0], Pair { values = [1]
first = 9223372036854775807
second = 9223372036854775807 })
}
lastFieldFault() (answer: Pair) {
answer = reduce(appendFault, [0], Pair { values = [1]
first = 9223372036854775807
second = 0 })
}
type Table { values: Map<Text, Int>
total: Int }
readTable(item: Int, state: Table) (next: Table) {
next = Table { values = state.values
total = state.total + item + length(state.values) }
}
verify() (answer: Bool) {
original = Row { values = [1]
count = 1 }
changed = reduce(appendValue, [2, 3, 4], original)
answer = changed.values == [1, 2, 3, 4] and changed.count == 4
answer = answer and original.values == [1] and original.count == 1
answer = answer and reduce(appendValue, [], original) == original
copy = preserved(original)
answer = answer and copy.values == [1] and copy.count == 2
row = appendValue(5, original)
first = append(row.values, row.count)
second = append(row.values, 8)
answer = answer and first == [1, 5, 2] and second == [1, 5, 8]
row.values = [9]
answer = answer and row.values == [9] and row.count == 2
observed = reduce(appendObserved, [2, 3], original)
counted = reduce(appendCounted, [2, 3], original)
answer = answer and observed.values == [1, 3, 5] and observed.count == 2
answer = answer and counted.values == [1, 2, 3] and counted.count == 3
bytes = reduce(appendValue, dever.bytes.fromText("AB"), original)
answer = answer and bytes.values == [1, 65, 66] and bytes.count == 3
pair = Pair { values = [1]
first = 10
second = 20 }
swapped = reduce(appendPair, [2, 3], pair)
answer = answer and swapped.values == [1, 12, 25]
answer = answer and swapped.first == 13 and swapped.second == 22
answer = answer and pair.values == [1] and pair.first == 10 and pair.second == 20
answer = answer and reduce(appendPair, [], pair) == pair
table = Table { values = {"key" = 1}
total = 1 }
counted_table = reduce(readTable, [2, 3], table)
answer = answer and counted_table.total == 8 and counted_table.values == table.values
answer = answer and table.total == 1 and table.values == {"key" = 1}
answer = answer and reduce(readTable, [], table) == table
}