2020-04-28 12:53:55 +03:00
|
|
|
import dl
|
|
|
|
|
|
|
|
fn test_dl() {
|
|
|
|
$if linux {
|
2020-04-29 22:01:19 +03:00
|
|
|
run_test_invalid_lib_linux()
|
2020-04-28 12:53:55 +03:00
|
|
|
return
|
|
|
|
}
|
|
|
|
$if windows {
|
2020-04-29 22:01:19 +03:00
|
|
|
run_test_invalid_lib_windows()
|
|
|
|
run_test_valid_lib_windows()
|
|
|
|
run_test_invalid_sym_windows()
|
|
|
|
run_test_valid_sym_windows()
|
2020-04-28 12:53:55 +03:00
|
|
|
return
|
|
|
|
} $else {
|
|
|
|
eprint('currently not implemented on this platform')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-29 22:01:19 +03:00
|
|
|
fn run_test_invalid_lib_linux() {
|
2020-04-28 12:53:55 +03:00
|
|
|
// ensure a not-existing dl won't be loaded
|
|
|
|
h := dl.open('not-existing-dynamic-link-library', dl.RTLD_NOW)
|
|
|
|
assert h == 0
|
|
|
|
}
|
|
|
|
|
2020-04-29 22:01:19 +03:00
|
|
|
fn run_test_invalid_lib_windows() {
|
2020-04-28 12:53:55 +03:00
|
|
|
// ensure a not-existing dl won't be loaded
|
|
|
|
h := dl.open('not-existing-dynamic-link-library', dl.RTLD_NOW)
|
|
|
|
assert h == 0
|
|
|
|
}
|
2020-04-29 22:01:19 +03:00
|
|
|
|
|
|
|
fn run_test_valid_lib_windows() {
|
|
|
|
h := dl.open('shell32', dl.RTLD_NOW)
|
|
|
|
assert h != 0
|
|
|
|
}
|
|
|
|
|
|
|
|
fn run_test_invalid_sym_windows() {
|
|
|
|
h := dl.open('shell32', dl.RTLD_NOW)
|
|
|
|
proc := dl.sym(h, 'CommandLineToArgvW2')
|
|
|
|
assert proc == 0
|
|
|
|
}
|
|
|
|
|
|
|
|
fn run_test_valid_sym_windows() {
|
|
|
|
h := dl.open('shell32', dl.RTLD_NOW)
|
|
|
|
proc := dl.sym(h, 'CommandLineToArgvW')
|
|
|
|
assert proc != 0
|
|
|
|
}
|