]> git.lizzy.rs Git - rust.git/commitdiff
Grouping ABI tests (2) #62401
authorKevin Per <kevin.per@protonmail.com>
Tue, 9 Jul 2019 07:05:45 +0000 (09:05 +0200)
committerKevin Per <kevin.per@protonmail.com>
Thu, 15 Aug 2019 09:39:48 +0000 (11:39 +0200)
src/test/run-pass/abi/extern/extern-pass-TwoU32s.rs [new file with mode: 0644]
src/test/run-pass/abi/extern/extern-pass-TwoU64s.rs [new file with mode: 0644]
src/test/run-pass/abi/extern/extern-pass-u32.rs [new file with mode: 0644]
src/test/run-pass/abi/extern/extern-pass-u64.rs [new file with mode: 0644]

diff --git a/src/test/run-pass/abi/extern/extern-pass-TwoU32s.rs b/src/test/run-pass/abi/extern/extern-pass-TwoU32s.rs
new file mode 100644 (file)
index 0000000..fb18aa8
--- /dev/null
@@ -0,0 +1,25 @@
+// run-pass
+#![allow(improper_ctypes)]
+
+// ignore-wasm32-bare no libc for ffi testing
+
+// Test a foreign function that accepts and returns a struct
+// by value.
+
+#[derive(Copy, Clone, PartialEq, Debug)]
+pub struct TwoU32s {
+    one: u32, two: u32
+}
+
+#[link(name = "rust_test_helpers", kind = "static")]
+extern {
+    pub fn rust_dbg_extern_identity_TwoU32s(v: TwoU32s) -> TwoU32s;
+}
+
+pub fn main() {
+    unsafe {
+        let x = TwoU32s {one: 22, two: 23};
+        let y = rust_dbg_extern_identity_TwoU32s(x);
+        assert_eq!(x, y);
+    }
+}
diff --git a/src/test/run-pass/abi/extern/extern-pass-TwoU64s.rs b/src/test/run-pass/abi/extern/extern-pass-TwoU64s.rs
new file mode 100644 (file)
index 0000000..4196482
--- /dev/null
@@ -0,0 +1,25 @@
+// run-pass
+#![allow(improper_ctypes)]
+
+// ignore-wasm32-bare no libc for ffi testing
+
+// Test a foreign function that accepts and returns a struct
+// by value.
+
+#[derive(Copy, Clone, PartialEq, Debug)]
+pub struct TwoU64s {
+    one: u64, two: u64
+}
+
+#[link(name = "rust_test_helpers", kind = "static")]
+extern {
+    pub fn rust_dbg_extern_identity_TwoU64s(v: TwoU64s) -> TwoU64s;
+}
+
+pub fn main() {
+    unsafe {
+        let x = TwoU64s {one: 22, two: 23};
+        let y = rust_dbg_extern_identity_TwoU64s(x);
+        assert_eq!(x, y);
+    }
+}
diff --git a/src/test/run-pass/abi/extern/extern-pass-u32.rs b/src/test/run-pass/abi/extern/extern-pass-u32.rs
new file mode 100644 (file)
index 0000000..f2efdb7
--- /dev/null
@@ -0,0 +1,16 @@
+// run-pass
+// ignore-wasm32-bare no libc for ffi testing
+
+// Test a function that takes/returns a u32.
+
+
+#[link(name = "rust_test_helpers", kind = "static")]
+extern {
+    pub fn rust_dbg_extern_identity_u32(v: u32) -> u32;
+}
+
+pub fn main() {
+    unsafe {
+        assert_eq!(22, rust_dbg_extern_identity_u32(22));
+    }
+}
diff --git a/src/test/run-pass/abi/extern/extern-pass-u64.rs b/src/test/run-pass/abi/extern/extern-pass-u64.rs
new file mode 100644 (file)
index 0000000..975446d
--- /dev/null
@@ -0,0 +1,16 @@
+// run-pass
+// ignore-wasm32-bare no libc for ffi testing
+
+// Test a call to a function that takes/returns a u64.
+
+
+#[link(name = "rust_test_helpers", kind = "static")]
+extern {
+    pub fn rust_dbg_extern_identity_u64(v: u64) -> u64;
+}
+
+pub fn main() {
+    unsafe {
+        assert_eq!(22, rust_dbg_extern_identity_u64(22));
+    }
+}