mirror of
https://github.com/vlang/v.git
synced 2025-08-04 10:17:22 -04:00
68 lines
1.4 KiB
V
68 lines
1.4 KiB
V
// vtest build: !musl?
|
|
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]
|
|
}
|
|
}
|