Lines Matching full:ffi

15 use cxx_test_suite::{cast, ffi, R};
17 use std::ffi::CStr;
38 let shared = ffi::Shared { z: 2020 }; in test_c_return()
39 let ns_shared = ffi::AShared { z: 2020 }; in test_c_return()
40 let nested_ns_shared = ffi::ABShared { z: 2020 }; in test_c_return()
42 assert_eq!(2020, ffi::c_return_primitive()); in test_c_return()
43 assert_eq!(2020, ffi::c_return_shared().z); in test_c_return()
44 assert_eq!(2020, ffi::c_return_box().0); in test_c_return()
45 ffi::c_return_unique_ptr(); in test_c_return()
47 assert_eq!(2020, *ffi::c_return_ref(&shared)); in test_c_return()
48 assert_eq!(2020, *ffi::c_return_ns_ref(&ns_shared)); in test_c_return()
49 assert_eq!(2020, *ffi::c_return_nested_ns_ref(&nested_ns_shared)); in test_c_return()
50 assert_eq!("2020", ffi::c_return_str(&shared)); in test_c_return()
53 cast::c_char_to_unsigned(ffi::c_return_slice_char(&shared)), in test_c_return()
55 assert_eq!("2020", ffi::c_return_rust_string()); in test_c_return()
56 assert_eq!("Hello \u{fffd}World", ffi::c_return_rust_string_lossy()); in test_c_return()
57 assert_eq!("2020", ffi::c_return_unique_ptr_string().to_str().unwrap()); in test_c_return()
58 assert_eq!(4, ffi::c_return_unique_ptr_vector_u8().len()); in test_c_return()
61 ffi::c_return_unique_ptr_vector_u8().into_iter().sum(), in test_c_return()
65 ffi::c_return_unique_ptr_vector_f64().into_iter().sum(), in test_c_return()
67 assert_eq!(2, ffi::c_return_unique_ptr_vector_shared().len()); in test_c_return()
70 ffi::c_return_unique_ptr_vector_shared() in test_c_return()
75 assert_eq!(b"\x02\0\x02\0"[..], ffi::c_return_rust_vec_u8()); in test_c_return()
76 assert_eq!([true, true, false][..], ffi::c_return_rust_vec_bool()); in test_c_return()
77 assert_eq!(2020, ffi::c_return_identity(2020)); in test_c_return()
78 assert_eq!(2021, ffi::c_return_sum(2020, 1)); in test_c_return()
79 match ffi::c_return_enum(0) { in test_c_return()
80 enm @ ffi::Enum::AVal => assert_eq!(0, enm.repr), in test_c_return()
83 match ffi::c_return_enum(1) { in test_c_return()
84 enm @ ffi::Enum::BVal => assert_eq!(2020, enm.repr), in test_c_return()
87 match ffi::c_return_enum(2021) { in test_c_return()
88 enm @ ffi::Enum::LastVal => assert_eq!(2021, enm.repr), in test_c_return()
91 match ffi::c_return_ns_enum(0) { in test_c_return()
92 enm @ ffi::AEnum::AAVal => assert_eq!(0, enm.repr), in test_c_return()
95 match ffi::c_return_nested_ns_enum(0) { in test_c_return()
96 enm @ ffi::ABEnum::ABAVal => assert_eq!(0, enm.repr), in test_c_return()
103 assert_eq!((), ffi::c_try_return_void().unwrap()); in test_c_try_return()
104 assert_eq!(2020, ffi::c_try_return_primitive().unwrap()); in test_c_try_return()
107 ffi::c_fail_return_primitive().unwrap_err().what(), in test_c_try_return()
109 assert_eq!(2020, ffi::c_try_return_box().unwrap().0); in test_c_try_return()
110 assert_eq!("2020", *ffi::c_try_return_ref(&"2020".to_owned()).unwrap()); in test_c_try_return()
111 assert_eq!("2020", ffi::c_try_return_str("2020").unwrap()); in test_c_try_return()
112 assert_eq!(b"2020", ffi::c_try_return_sliceu8(b"2020").unwrap()); in test_c_try_return()
113 assert_eq!("2020", ffi::c_try_return_rust_string().unwrap()); in test_c_try_return()
114 assert_eq!("2020", &*ffi::c_try_return_unique_ptr_string().unwrap()); in test_c_try_return()
119 let unique_ptr = ffi::c_return_unique_ptr(); in test_c_take()
122 check!(ffi::c_take_primitive(2020)); in test_c_take()
123 check!(ffi::c_take_shared(ffi::Shared { z: 2020 })); in test_c_take()
124 check!(ffi::c_take_ns_shared(ffi::AShared { z: 2020 })); in test_c_take()
125 check!(ffi::ns_c_take_ns_shared(ffi::AShared { z: 2020 })); in test_c_take()
126 check!(ffi::c_take_nested_ns_shared(ffi::ABShared { z: 2020 })); in test_c_take()
127 check!(ffi::c_take_box(Box::new(R(2020)))); in test_c_take()
128 check!(ffi::c_take_ref_c(&unique_ptr)); in test_c_take()
130 check!(cxx_test_suite::module::ffi::c_take_unique_ptr(unique_ptr)); in test_c_take()
131 check!(ffi::c_take_str("2020")); in test_c_take()
132 check!(ffi::c_take_slice_char(cast::unsigned_to_c_char(b"2020"))); in test_c_take()
133 check!(ffi::c_take_slice_shared(&[ in test_c_take()
134 ffi::Shared { z: 2020 }, in test_c_take()
135 ffi::Shared { z: 2021 }, in test_c_take()
138 ffi::Shared { z: 2 }, in test_c_take()
139 ffi::Shared { z: 0 }, in test_c_take()
140 ffi::Shared { z: 7 }, in test_c_take()
141 ffi::Shared { z: 4 }, in test_c_take()
143 check!(ffi::c_take_slice_shared_sort(shared_sort_slice)); in test_c_take()
149 check!(ffi::c_take_slice_r(r_sort_slice)); in test_c_take()
150 check!(ffi::c_take_slice_r_sort(r_sort_slice)); in test_c_take()
154 check!(ffi::c_take_rust_string("2020".to_owned())); in test_c_take()
155 check!(ffi::c_take_unique_ptr_string( in test_c_take()
156 ffi::c_return_unique_ptr_string() in test_c_take()
158 let mut vector = ffi::c_return_unique_ptr_vector_u8(); in test_c_take()
160 check!(ffi::c_take_unique_ptr_vector_u8(vector)); in test_c_take()
161 let mut vector = ffi::c_return_unique_ptr_vector_f64(); in test_c_take()
163 check!(ffi::c_take_unique_ptr_vector_f64(vector)); in test_c_take()
164 let mut vector = ffi::c_return_unique_ptr_vector_shared(); in test_c_take()
165 vector.pin_mut().push(ffi::Shared { z: 9 }); in test_c_take()
166 check!(ffi::c_take_unique_ptr_vector_shared(vector)); in test_c_take()
167 check!(ffi::c_take_ref_vector(&ffi::c_return_unique_ptr_vector_u8())); in test_c_take()
169 check!(ffi::c_take_rust_vec(test_vec.clone())); in test_c_take()
170 check!(ffi::c_take_rust_vec_index(test_vec.clone())); in test_c_take()
171 let shared_test_vec = vec![ffi::Shared { z: 1010 }, ffi::Shared { z: 1011 }]; in test_c_take()
172 check!(ffi::c_take_rust_vec_shared(shared_test_vec.clone())); in test_c_take()
173 check!(ffi::c_take_rust_vec_shared_index(shared_test_vec.clone())); in test_c_take()
174 check!(ffi::c_take_rust_vec_shared_push(shared_test_vec.clone())); in test_c_take()
175 check!(ffi::c_take_rust_vec_shared_truncate( in test_c_take()
178 check!(ffi::c_take_rust_vec_shared_clear(shared_test_vec.clone())); in test_c_take()
179 check!(ffi::c_take_rust_vec_shared_forward_iterator( in test_c_take()
183 ffi::Shared { z: 2 }, in test_c_take()
184 ffi::Shared { z: 0 }, in test_c_take()
185 ffi::Shared { z: 7 }, in test_c_take()
186 ffi::Shared { z: 4 }, in test_c_take()
188 check!(ffi::c_take_rust_vec_shared_sort(shared_sort_vec)); in test_c_take()
189 check!(ffi::c_take_ref_rust_vec(&test_vec)); in test_c_take()
190 check!(ffi::c_take_ref_rust_vec_index(&test_vec)); in test_c_take()
191 check!(ffi::c_take_ref_rust_vec_copy(&test_vec)); in test_c_take()
192 check!(ffi::c_take_ref_shared_string(&ffi::SharedString { in test_c_take()
195 let ns_shared_test_vec = vec![ffi::AShared { z: 1010 }, ffi::AShared { z: 1011 }]; in test_c_take()
196 check!(ffi::c_take_rust_vec_ns_shared(ns_shared_test_vec)); in test_c_take()
197 let nested_ns_shared_test_vec = vec![ffi::ABShared { z: 1010 }, ffi::ABShared { z: 1011 }]; in test_c_take()
198 check!(ffi::c_take_rust_vec_nested_ns_shared( in test_c_take()
202 check!(ffi::c_take_enum(ffi::Enum::AVal)); in test_c_take()
203 check!(ffi::c_take_ns_enum(ffi::AEnum::AAVal)); in test_c_take()
204 check!(ffi::c_take_nested_ns_enum(ffi::ABEnum::ABAVal)); in test_c_take()
229 check!(ffi::c_take_callback(callback)); in test_c_callback()
230 check!(ffi::c_take_callback_ref(callback_ref)); in test_c_callback()
231 check!(ffi::c_take_callback_ref_lifetime(callback_ref)); in test_c_callback()
232 check!(ffi::c_take_callback_mut(callback_mut)); in test_c_callback()
252 let mut unique_ptr = ffi::c_return_unique_ptr(); in test_c_method_calls()
263 assert_eq!(2021, ffi::Shared { z: 0 }.c_method_on_shared()); in test_c_method_calls()
264 assert_eq!(2022, *ffi::Shared { z: 2022 }.c_method_ref_on_shared()); in test_c_method_calls()
265 assert_eq!(2023, *ffi::Shared { z: 2023 }.c_method_mut_on_shared()); in test_c_method_calls()
268 let mut array = ffi::Array { in test_c_method_calls()
270 b: ffi::Buffer::default(), in test_c_method_calls()
278 let shared_ptr = ffi::c_return_shared_ptr(); in test_shared_ptr_weak_ptr()
280 assert_eq!(1, ffi::c_get_use_count(&weak_ptr)); in test_shared_ptr_weak_ptr()
283 assert_eq!(1, ffi::c_get_use_count(&weak_ptr)); in test_shared_ptr_weak_ptr()
286 assert_eq!(0, ffi::c_get_use_count(&weak_ptr)); in test_shared_ptr_weak_ptr()
300 assert_eq!(0, ffi::Enum::AVal.repr); in test_enum_representations()
301 assert_eq!(2020, ffi::Enum::BVal.repr); in test_enum_representations()
302 assert_eq!(2021, ffi::Enum::LastVal.repr); in test_enum_representations()
307 assert_eq!("Shared { z: 1 }", format!("{:?}", ffi::Shared { z: 1 })); in test_debug()
308 assert_eq!("BVal", format!("{:?}", ffi::Enum::BVal)); in test_debug()
309 assert_eq!("Enum(9)", format!("{:?}", ffi::Enum { repr: 9 })); in test_debug()
324 assert_eq!("2020", ffi::i32_overloaded_function(2020)); in test_rust_name_attribute()
325 assert_eq!("2020", ffi::str_overloaded_function("2020")); in test_rust_name_attribute()
326 let unique_ptr = ffi::c_return_unique_ptr(); in test_rust_name_attribute()
369 let c = ffi::c_return_mut_ptr(2023); in test_raw_ptr()
374 let c2 = ffi::c_return_mut_ptr(2024); in test_raw_ptr()
375 assert_eq!(2024, unsafe { ffi::c_take_const_ptr(c2) }); in test_raw_ptr()
376 assert_eq!(2024, unsafe { ffi::c_take_mut_ptr(c2) }); // deletes c2 in test_raw_ptr()
378 let c3 = ffi::c_return_const_ptr(2025); in test_raw_ptr()
379 assert_eq!(2025, unsafe { ffi::c_take_const_ptr(c3) }); in test_raw_ptr()
380 assert_eq!(2025, unsafe { ffi::c_take_mut_ptr(c3 as *mut ffi::C) }); // deletes c3 in test_raw_ptr()