32 lines
1.2 KiB
Plaintext
32 lines
1.2 KiB
Plaintext
type Holder { values: List<Int> }
|
|
|
|
identity(values: List<Int>) (result: List<Int>) { result = values }
|
|
|
|
measure(values: List<Int>) (result: Int) { result = length(values) }
|
|
|
|
compare(values: List<Int>, size: Int) (same: Bool) { same = length(values) == size }
|
|
|
|
selected(keep: true, values: List<Int>) (result: List<Int>) { result = values }
|
|
selected(keep: other, values: List<Int>) (result: List<Int>) { result = [] }
|
|
|
|
readField(holder: Holder) (result: List<Int>) {
|
|
result = selected(true, holder.values)
|
|
}
|
|
|
|
verify() (valid: Bool) {
|
|
values = [1, 2, 3]
|
|
direct = compare(values, measure(values))
|
|
holder = Holder { values = [4, 5] }
|
|
field = compare(holder.values, measure(holder.values))
|
|
items = [6]
|
|
forwarded = compare(identity(items), measure(identity(items)))
|
|
consumed = Holder { values = [7, 8, 9, 10] }
|
|
moved = readField(consumed)
|
|
reused = Holder { values = [11, 12] }
|
|
borrowed = readField(reused)
|
|
preserved = compare(reused.values, measure(borrowed))
|
|
repeated = Holder { values = [13, 14, 15] }
|
|
duplicated = compare(repeated.values, measure(selected(true, repeated.values)))
|
|
valid = direct and field and forwarded and length(moved) == 4 and preserved and duplicated
|
|
}
|