summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/func_ptr.rs17
-rw-r--r--tests/headers/func_ptr.h1
-rw-r--r--tests/headers/func_ptr_in_struct.h3
3 files changed, 21 insertions, 0 deletions
diff --git a/tests/func_ptr.rs b/tests/func_ptr.rs
new file mode 100644
index 00000000..7851c4ff
--- /dev/null
+++ b/tests/func_ptr.rs
@@ -0,0 +1,17 @@
+extern crate bindgen;
+extern crate regex;
+extern crate syntax;
+
+mod util;
+
+#[test]
+fn test_func_ptr() {
+ let output = util::generate_unpretty_output("tests/headers/func_ptr.h");
+ assert_eq!(output, r##"extern "C" { pub static mut foo: ::std::option::Option<extern "C" fn(x: ::libc::c_int, y: ::libc::c_int) -> ::libc::c_int>; }"##);
+}
+
+#[test]
+fn test_func_ptr_in_struct() {
+ let output = util::generate_unpretty_output("tests/headers/func_ptr_in_struct.h");
+ assert_eq!(output, r##"#[repr(C)] #[deriving(Copy)] pub struct Struct_Foo { pub bar: ::std::option::Option<extern "C" fn(x: ::libc::c_int, y: ::libc::c_int) -> Enum_baz>, } extern "C" { }"##);
+}
diff --git a/tests/headers/func_ptr.h b/tests/headers/func_ptr.h
new file mode 100644
index 00000000..a4662f3d
--- /dev/null
+++ b/tests/headers/func_ptr.h
@@ -0,0 +1 @@
+int (*foo) (int x, int y);
diff --git a/tests/headers/func_ptr_in_struct.h b/tests/headers/func_ptr_in_struct.h
new file mode 100644
index 00000000..8e9bf60c
--- /dev/null
+++ b/tests/headers/func_ptr_in_struct.h
@@ -0,0 +1,3 @@
+struct Foo {
+ enum baz (*bar) (int x, int y);
+};