Initial Dever 0.0.1
This commit is contained in:
commit
81233d098c
1479 files changed
+163782
No files matched your search
@@ -0,0 +1,107 @@
|
||||
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
|
||||
}
|
||||
Reference in new issue
Block a user