v/vlib/arrays/parallel/parallel_test.v

67 lines
1.4 KiB
V

import arrays.parallel
import rand
import time
fn test_parallel_run_with_empty_arrays() {
parallel.run([]int{}, fn (x int) {})
parallel.run([]u8{}, fn (x u8) {})
parallel.run([]u32{}, fn (x u32) {}, workers: 1000)
assert true
}
fn test_parallel_amap_with_empty_arrays() {
assert parallel.amap([]int{}, fn (x int) u8 {
return 0
}) == []
assert parallel.amap([]u8{}, fn (x u8) int {
return 0
}) == []
assert parallel.amap([]u8{}, fn (x u8) int {
return 0
}, workers: 1000) == []
assert true
}
fn test_parallel_run() {
counters := []int{len: 10, init: index}
dump(counters)
mut res := []string{len: 10}
mut pres := &res
parallel.run(counters, fn [mut pres] (i int) {
delay := rand.intn(250) or { 250 }
time.sleep(delay * time.millisecond)
unsafe {
pres[i] = 'task ${i}, delay=${delay}ms'
}
assert true
})
dump(res)
assert res.len == counters.len
}
fn test_parallel_amap() {
input := [1, 2, 3, 4, 5, 6, 7, 8, 9]
dump(input)
dump(input.len)
output := parallel.amap(input, fn (i int) int {
delay := rand.intn(250) or { 250 }
time.sleep(delay * time.millisecond)
return i * i
})
dump(output)
dump(output.len)
assert input.len == output.len
for i, _ in output {
assert output[i] == input[i] * input[i]
}
// unordered output validation
assert output.len == input.len
op_sorted := output.sorted()
dump(op_sorted)
for i, op in op_sorted {
assert op == input[i] * input[i]
}
}