Skip to content

Commit 69bdfef

Browse files
authored
[nfc] merging all kj-rs tests together (#31)
1 parent 3bc5939 commit 69bdfef

File tree

7 files changed

+33
-121
lines changed

7 files changed

+33
-121
lines changed

kj-rs/tests/lib.rs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ type Error = std::io::Error;
1616

1717
#[cxx::bridge(namespace = "kj_rs_demo")]
1818
mod ffi {
19-
// -----------------------------------------------------
20-
// Test functions
19+
struct Shared {
20+
i: i64,
21+
}
2122

22-
// Helper functions to create Promises for testing purposes.
2323
unsafe extern "C++" {
2424
include!("kj-rs-demo/test-promises.h");
2525

@@ -29,6 +29,7 @@ mod ffi {
2929

3030
async fn new_errored_promise_void();
3131
async fn new_ready_promise_i32(value: i32) -> i32;
32+
async fn new_ready_promise_shared_type() -> Shared;
3233
}
3334

3435
enum CloningAction {
@@ -50,6 +51,7 @@ mod ffi {
5051
extern "Rust" {
5152
async fn new_pending_future_void();
5253
async fn new_ready_future_void();
54+
async fn new_ready_future_shared_type() -> Shared;
5355
async fn new_waking_future_void(cloning_action: CloningAction, waking_action: WakingAction);
5456
async fn new_threaded_delay_future_void();
5557
async fn new_layered_ready_future_void() -> Result<()>;
@@ -62,6 +64,7 @@ mod ffi {
6264

6365
async fn new_awaiting_future_i32() -> Result<()>;
6466
async fn new_ready_future_i32(value: i32) -> Result<i32>;
67+
async fn new_pass_through_feature_shared() -> Shared;
6568
}
6669

6770
// these are used to check compilation only
@@ -77,3 +80,27 @@ pub async fn lifetime_arg_void<'a>(_buf: &'a [u8]) {}
7780
pub async fn lifetime_arg_result<'a>(_buf: &'a [u8]) -> Result<()> {
7881
Ok(())
7982
}
83+
84+
/// # Panics
85+
/// - if c++ side throws exception
86+
pub async fn new_pass_through_feature_shared() -> ffi::Shared {
87+
ffi::new_ready_promise_shared_type().await.unwrap()
88+
}
89+
90+
async fn new_ready_future_shared_type() -> ffi::Shared {
91+
ffi::Shared { i: 42 }
92+
}
93+
94+
#[cfg(test)]
95+
mod tests {
96+
use crate::ffi;
97+
98+
#[allow(clippy::let_underscore_future)]
99+
#[test]
100+
fn compilation() {
101+
// these promises can't be driven by rust side, just check that everything compiles.
102+
let _ = ffi::new_ready_promise_void();
103+
let _ = ffi::new_ready_promise_i32(42);
104+
let _ = ffi::new_ready_promise_shared_type();
105+
}
106+
}

kj-rs/tests/test-promises.c++

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,6 @@ kj::Promise<void> new_errored_promise_void() {
2828
return KJ_EXCEPTION(FAILED, "test error");
2929
}
3030

31+
kj::Promise<Shared> new_ready_promise_shared_type() { return Shared{42}; }
32+
3133
} // namespace kj_rs_demo

kj-rs/tests/test-promises.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ kj::Promise<void> new_coroutine_promise_void();
1212

1313
kj::Promise<void> new_errored_promise_void();
1414
kj::Promise<int32_t> new_ready_promise_i32(int32_t);
15+
kj::Promise<Shared> new_ready_promise_shared_type();
1516

1617
} // namespace kj_rs_demo

tests/kj-rs/BUILD.bazel

Lines changed: 0 additions & 39 deletions
This file was deleted.

tests/kj-rs/lib.rs

Lines changed: 0 additions & 55 deletions
This file was deleted.

tests/kj-rs/tests.cc

Lines changed: 0 additions & 11 deletions
This file was deleted.

tests/kj-rs/tests.h

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)