aboutsummaryrefslogtreecommitdiff
path: root/test/src/test_fallback.rs
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/test_fallback.rs')
-rw-r--r--test/src/test_fallback.rs54
1 files changed, 54 insertions, 0 deletions
diff --git a/test/src/test_fallback.rs b/test/src/test_fallback.rs
new file mode 100644
index 0000000..1f729fb
--- /dev/null
+++ b/test/src/test_fallback.rs
@@ -0,0 +1,54 @@
+#[might_be_async::func]
+fn fallback_id(x: i32) -> i32 {
+ x
+}
+
+#[cfg(not(feature = "async"))]
+#[test]
+fn test_fallback_func_sync() {
+ assert_eq!(fallback_id(42), 42);
+}
+
+#[cfg(feature = "async")]
+#[test]
+fn test_fallback_func_async() {
+ let r = futures::executor::block_on(fallback_id(42));
+ assert_eq!(r, 42);
+}
+
+#[cfg(not(feature = "async"))]
+#[test]
+fn test_fallback_select_implicit_sync() {
+ let r = might_be_async::select! { { 1 } else { 2 } };
+ assert_eq!(r, 2);
+}
+
+#[cfg(feature = "async")]
+#[test]
+fn test_fallback_select_implicit_async() {
+ let r = might_be_async::select! { { 1 } else { 2 } };
+ assert_eq!(r, 1);
+}
+
+#[cfg(not(feature = "async"))]
+fn fallback_double(x: i32) -> i32 {
+ x * 2
+}
+
+#[cfg(feature = "async")]
+async fn fallback_double(x: i32) -> i32 {
+ x * 2
+}
+
+#[cfg(not(feature = "async"))]
+#[test]
+fn test_fallback_invoke_sync() {
+ assert_eq!(might_be_async::invoke!(fallback_double(5)), 10);
+}
+
+#[cfg(feature = "async")]
+#[test]
+fn test_fallback_invoke_async() {
+ let r = futures::executor::block_on(async { might_be_async::invoke!(fallback_double(5)) });
+ assert_eq!(r, 10);
+}