Initial project import

This commit is contained in:
Agila Forge Importer committed 2026-07-13 15:20:32 +00:00
commit 23f2d29e32
11957 files changed
+1754577

No files matched your search

+83
View File
@@ -0,0 +1,83 @@
import dl.loader
import dl
fn test_dl_loader() ! {
$if linux {
run_test_invalid_lib_linux()!
return
}
$if windows {
run_test_invalid_lib_windows()!
run_test_valid_lib_windows()!
run_test_invalid_sym_windows()!
run_test_valid_sym_windows()!
return
} $else {
eprint('currently not implemented on this platform')
}
}
fn get_or_create_loader(name string, paths []string) !&loader.DynamicLibLoader {
return loader.get_or_create_dynamic_lib_loader(
key: name
paths: paths
flags: dl.rtld_now
)
}
fn run_test_invalid_lib_linux() ! {
// ensure a not-existing dl won't be loaded
mut dl_loader := get_or_create_loader(@MOD + '.' + @FN + '.' + 'lib', [
'not-existing-dynamic-link-library',
])!
defer {
dl_loader.unregister()
}
h := dl_loader.open() or { unsafe { nil } }
assert isnil(h)
}
fn run_test_invalid_lib_windows() ! {
// ensure a not-existing dl won't be loaded
mut dl_loader := get_or_create_loader(@MOD + '.' + @FN + '.' + 'lib', [
'not-existing-dynamic-link-library',
])!
defer {
dl_loader.unregister()
}
h := dl_loader.open() or { unsafe { nil } }
assert isnil(h)
}
fn run_test_valid_lib_windows() ! {
mut dl_loader := get_or_create_loader(@MOD + '.' + @FN + '.' + 'lib', [
'not-existing-dynamic-link-library',
'shell32',
])!
defer {
dl_loader.unregister()
}
h := dl_loader.open() or { unsafe { nil } }
assert !isnil(h)
}
fn run_test_invalid_sym_windows() ! {
mut dl_loader := get_or_create_loader(@MOD + '.' + @FN + '.' + 'lib', ['shell32'])!
defer {
dl_loader.unregister()
}
proc := dl_loader.get_sym('CommandLineToArgvW2') or { unsafe { nil } }
assert isnil(proc)
}
fn run_test_valid_sym_windows() ! {
mut dl_loader := get_or_create_loader(@MOD + '.' + @FN + '.' + 'lib', [
'not-existing-dynamic-link-library',
'shell32',
])!
defer {
dl_loader.unregister()
}
proc := dl_loader.get_sym('CommandLineToArgvW') or { unsafe { nil } }
assert !isnil(proc)
}