v / vlib / dl
Raw file | 46 loc (40 sloc) | 990 bytes | Latest commit hash dda875a9c
1import dl
2
3fn test_dl() {
4 $if linux {
5 run_test_invalid_lib_linux()
6 return
7 }
8 $if windows {
9 run_test_invalid_lib_windows()
10 run_test_valid_lib_windows()
11 run_test_invalid_sym_windows()
12 run_test_valid_sym_windows()
13 return
14 } $else {
15 eprint('currently not implemented on this platform')
16 }
17}
18
19fn run_test_invalid_lib_linux() {
20 // ensure a not-existing dl won't be loaded
21 h := dl.open('not-existing-dynamic-link-library', dl.rtld_now)
22 assert h == 0
23}
24
25fn run_test_invalid_lib_windows() {
26 // ensure a not-existing dl won't be loaded
27 h := dl.open('not-existing-dynamic-link-library', dl.rtld_now)
28 assert h == 0
29}
30
31fn run_test_valid_lib_windows() {
32 h := dl.open('shell32', dl.rtld_now)
33 assert h != 0
34}
35
36fn run_test_invalid_sym_windows() {
37 h := dl.open('shell32', dl.rtld_now)
38 proc := dl.sym(h, 'CommandLineToArgvW2')
39 assert proc == 0
40}
41
42fn run_test_valid_sym_windows() {
43 h := dl.open('shell32', dl.rtld_now)
44 proc := dl.sym(h, 'CommandLineToArgvW')
45 assert proc != 0
46}