Test Box returned from C++ to Rust
diff --git a/tests/ffi/lib.rs b/tests/ffi/lib.rs
index 098253a..d1b33c2 100644
--- a/tests/ffi/lib.rs
+++ b/tests/ffi/lib.rs
@@ -13,7 +13,7 @@
 
         fn c_return_primitive() -> usize;
         fn c_return_shared() -> Shared;
-        //TODO fn c_return_box() -> Box<R>;
+        fn c_return_box() -> Box<R>;
         fn c_return_unique_ptr() -> UniquePtr<C>;
         fn c_return_ref(shared: &Shared) -> &usize;
         fn c_return_str(shared: &Shared) -> &str;
@@ -55,7 +55,7 @@
     }
 }
 
-type R = ();
+pub type R = usize;
 
 fn r_return_primitive() -> usize {
     2020
diff --git a/tests/ffi/tests.cc b/tests/ffi/tests.cc
index c94e34d..adbf945 100644
--- a/tests/ffi/tests.cc
+++ b/tests/ffi/tests.cc
@@ -2,6 +2,7 @@
 #include "tests/ffi/lib.rs"
 
 extern "C" void cxx_test_suite_set_correct();
+extern "C" tests::R *cxx_test_suite_get_box();
 
 namespace tests {
 
@@ -13,6 +14,10 @@
 
 Shared c_return_shared() { return Shared{2020}; }
 
+rust::Box<R> c_return_box() {
+  return rust::Box<R>::from_raw(cxx_test_suite_get_box());
+}
+
 std::unique_ptr<C> c_return_unique_ptr() {
   return std::unique_ptr<C>(new C{2020});
 }
diff --git a/tests/test.rs b/tests/test.rs
index 28e5c3b..eb06481 100644
--- a/tests/test.rs
+++ b/tests/test.rs
@@ -25,6 +25,7 @@
 
     assert_eq!(2020, ffi::c_return_primitive());
     assert_eq!(2020, ffi::c_return_shared().z);
+    assert_eq!(2020, *ffi::c_return_box());
     ffi::c_return_unique_ptr();
     assert_eq!(2020, *ffi::c_return_ref(&shared));
     assert_eq!("2020", ffi::c_return_str(&shared));
@@ -45,7 +46,7 @@
 
     check!(ffi::c_take_primitive(2020));
     check!(ffi::c_take_shared(ffi::Shared { z: 2020 }));
-    check!(ffi::c_take_box(Box::new(())));
+    check!(ffi::c_take_box(Box::new(2020)));
     check!(ffi::c_take_ref_c(unique_ptr.as_ref().unwrap()));
     check!(ffi::c_take_unique_ptr(unique_ptr));
     check!(ffi::c_take_str("2020"));
@@ -69,3 +70,8 @@
     }
     check!(cxx_run_test());
 }
+
+#[no_mangle]
+extern "C" fn cxx_test_suite_get_box() -> *mut cxx_test_suite::R {
+    Box::into_raw(Box::new(2020usize))
+}