mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
tests: make test more tolerant to windows low precision timer default interval
This commit is contained in:
parent
e0ed224a8d
commit
ea11488339
@ -21,7 +21,9 @@ fn f1(ch1 chan int, ch2 chan St, ch3 chan int, ch4 chan int, ch5 chan int, sem s
|
||||
ch3 <- 5 {
|
||||
a = 1
|
||||
}
|
||||
ch2 <- St{a: 37} {
|
||||
ch2 <- St{
|
||||
a: 37
|
||||
} {
|
||||
a = 2
|
||||
}
|
||||
ch4 <- (6 + 7 * 9) {
|
||||
@ -67,7 +69,7 @@ fn test_select_blocks() {
|
||||
sem := sync.new_semaphore()
|
||||
mut r := false
|
||||
t := select {
|
||||
b := <- ch1 {
|
||||
b := <-ch1 {
|
||||
println(b)
|
||||
}
|
||||
else {
|
||||
@ -80,20 +82,26 @@ fn test_select_blocks() {
|
||||
go f2(ch2, ch3, sem)
|
||||
n := <-ch3
|
||||
assert n == 23
|
||||
ch2 <- St{a: 13}
|
||||
ch2 <- St{
|
||||
a: 13
|
||||
}
|
||||
sem.wait()
|
||||
stopwatch := time.new_stopwatch({})
|
||||
go f1(ch1, ch2, ch3, ch4, ch5, sem)
|
||||
sem.wait()
|
||||
elapsed_ms := f64(stopwatch.elapsed()) / time.millisecond
|
||||
assert elapsed_ms >= 295.0
|
||||
// https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/high-resolution-timers
|
||||
// > For example, for Windows running on an x86 processor, the default interval between
|
||||
// > system clock ticks is typically about 15 milliseconds, and the minimum interval
|
||||
// > between system clock ticks is about 1 millisecond.
|
||||
assert elapsed_ms >= 280.0 // 300 - (15ms + 5ms just in case)
|
||||
|
||||
ch1.close()
|
||||
ch2.close()
|
||||
mut h := 7
|
||||
mut is_open := true
|
||||
if select {
|
||||
b := <- ch2 {
|
||||
_ := <-ch2 {
|
||||
h = 0
|
||||
}
|
||||
ch1 <- h {
|
||||
@ -112,5 +120,3 @@ fn test_select_blocks() {
|
||||
// since all channels are closed `select` should return `false`
|
||||
assert is_open == false
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user