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 {
|
ch3 <- 5 {
|
||||||
a = 1
|
a = 1
|
||||||
}
|
}
|
||||||
ch2 <- St{a: 37} {
|
ch2 <- St{
|
||||||
|
a: 37
|
||||||
|
} {
|
||||||
a = 2
|
a = 2
|
||||||
}
|
}
|
||||||
ch4 <- (6 + 7 * 9) {
|
ch4 <- (6 + 7 * 9) {
|
||||||
@ -56,7 +58,7 @@ fn f2(ch1 chan St, ch2 chan int, sem sync.Semaphore) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
sem.post()
|
sem.post()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_select_blocks() {
|
fn test_select_blocks() {
|
||||||
ch1 := chan int{cap: 1}
|
ch1 := chan int{cap: 1}
|
||||||
@ -67,7 +69,7 @@ fn test_select_blocks() {
|
|||||||
sem := sync.new_semaphore()
|
sem := sync.new_semaphore()
|
||||||
mut r := false
|
mut r := false
|
||||||
t := select {
|
t := select {
|
||||||
b := <- ch1 {
|
b := <-ch1 {
|
||||||
println(b)
|
println(b)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -80,20 +82,26 @@ fn test_select_blocks() {
|
|||||||
go f2(ch2, ch3, sem)
|
go f2(ch2, ch3, sem)
|
||||||
n := <-ch3
|
n := <-ch3
|
||||||
assert n == 23
|
assert n == 23
|
||||||
ch2 <- St{a: 13}
|
ch2 <- St{
|
||||||
|
a: 13
|
||||||
|
}
|
||||||
sem.wait()
|
sem.wait()
|
||||||
stopwatch := time.new_stopwatch({})
|
stopwatch := time.new_stopwatch({})
|
||||||
go f1(ch1, ch2, ch3, ch4, ch5, sem)
|
go f1(ch1, ch2, ch3, ch4, ch5, sem)
|
||||||
sem.wait()
|
sem.wait()
|
||||||
elapsed_ms := f64(stopwatch.elapsed()) / time.millisecond
|
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()
|
ch1.close()
|
||||||
ch2.close()
|
ch2.close()
|
||||||
mut h := 7
|
mut h := 7
|
||||||
mut is_open := true
|
mut is_open := true
|
||||||
if select {
|
if select {
|
||||||
b := <- ch2 {
|
_ := <-ch2 {
|
||||||
h = 0
|
h = 0
|
||||||
}
|
}
|
||||||
ch1 <- h {
|
ch1 <- h {
|
||||||
@ -112,5 +120,3 @@ fn test_select_blocks() {
|
|||||||
// since all channels are closed `select` should return `false`
|
// since all channels are closed `select` should return `false`
|
||||||
assert is_open == false
|
assert is_open == false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user