aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/vlib/dl/dl_test.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/vlib/dl/dl_test.v')
-rw-r--r--v_windows/v/vlib/dl/dl_test.v46
1 files changed, 46 insertions, 0 deletions
diff --git a/v_windows/v/vlib/dl/dl_test.v b/v_windows/v/vlib/dl/dl_test.v
new file mode 100644
index 0000000..c4f0824
--- /dev/null
+++ b/v_windows/v/vlib/dl/dl_test.v
@@ -0,0 +1,46 @@
+import dl
+
+fn test_dl() {
+ $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 run_test_invalid_lib_linux() {
+ // ensure a not-existing dl won't be loaded
+ h := dl.open('not-existing-dynamic-link-library', dl.rtld_now)
+ assert h == 0
+}
+
+fn run_test_invalid_lib_windows() {
+ // ensure a not-existing dl won't be loaded
+ h := dl.open('not-existing-dynamic-link-library', dl.rtld_now)
+ assert h == 0
+}
+
+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
+}