mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
This commit is contained in:
@ -4,6 +4,7 @@ import time
|
||||
|
||||
// Backends should provide a `new() ?FdNotifier` function
|
||||
pub interface FdNotifier {
|
||||
mut:
|
||||
add(fd int, events FdEventType, conf ...FdConfigFlags) ?
|
||||
modify(fd int, events FdEventType, conf ...FdConfigFlags) ?
|
||||
remove(fd int) ?
|
||||
|
@ -27,8 +27,9 @@ fn test_level_trigger() ? {
|
||||
notifier.add(reader, .read) ?
|
||||
|
||||
os.fd_write(writer, 'foobar')
|
||||
check_read_event(notifier, reader, 'foo')
|
||||
check_read_event(notifier, reader, 'bar')
|
||||
mut n := ¬ifier
|
||||
check_read_event(mut n, reader, 'foo')
|
||||
check_read_event(mut n, reader, 'bar')
|
||||
|
||||
assert notifier.wait(0).len == 0
|
||||
}
|
||||
@ -46,8 +47,10 @@ fn test_edge_trigger() ? {
|
||||
}
|
||||
notifier.add(reader, .read, .edge_trigger) ?
|
||||
|
||||
mut n := ¬ifier
|
||||
|
||||
os.fd_write(writer, 'foobar')
|
||||
check_read_event(notifier, reader, 'foo')
|
||||
check_read_event(mut n, reader, 'foo')
|
||||
|
||||
assert notifier.wait(0).len == 0
|
||||
|
||||
@ -71,15 +74,17 @@ fn test_one_shot() ? {
|
||||
}
|
||||
notifier.add(reader, .read, .one_shot) ?
|
||||
|
||||
mut n := ¬ifier
|
||||
|
||||
os.fd_write(writer, 'foobar')
|
||||
check_read_event(notifier, reader, 'foo')
|
||||
check_read_event(mut n, reader, 'foo')
|
||||
os.fd_write(writer, 'baz')
|
||||
|
||||
assert notifier.wait(0).len == 0
|
||||
|
||||
// rearm
|
||||
notifier.modify(reader, .read) ?
|
||||
check_read_event(notifier, reader, 'barbaz')
|
||||
check_read_event(mut n, reader, 'barbaz')
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,7 +153,7 @@ fn test_remove() ? {
|
||||
}
|
||||
}
|
||||
|
||||
fn check_read_event(notifier notify.FdNotifier, reader_fd int, expected string) {
|
||||
fn check_read_event(mut notifier notify.FdNotifier, reader_fd int, expected string) {
|
||||
events := notifier.wait(0)
|
||||
assert events.len == 1
|
||||
assert events[0].fd == reader_fd
|
||||
|
Reference in New Issue
Block a user