diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-07-23 08:08:33 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-07-23 14:01:45 +0800 |
| commit | 68a652ed2f51d366bb8033497e6dfe545895410e (patch) | |
| tree | d463833846248410733e196a0939c59cd67ca8a2 /test/src/test_select.rs | |
feat: scaffold crate structure and implement core macros
Add the project skeleton, LICENSE files, README, Makefile, doc
examples, and the initial implementation of `#[func]`, `invoke!`,
and `select!` procedural macros.
Diffstat (limited to 'test/src/test_select.rs')
| -rw-r--r-- | test/src/test_select.rs | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/test/src/test_select.rs b/test/src/test_select.rs new file mode 100644 index 0000000..2cf3bfe --- /dev/null +++ b/test/src/test_select.rs @@ -0,0 +1,92 @@ +#[cfg(not(feature = "metadata_async"))] +#[test] +fn test_select_explicit() { + let r = might_be_async::select! { "metadata_async" => { 1 } else ! => { 2 } }; + assert_eq!(r, 2); +} + +#[cfg(feature = "metadata_async")] +#[test] +fn test_select_explicit() { + let r = might_be_async::select! { "metadata_async" => { 1 } else ! => { 2 } }; + assert_eq!(r, 1); +} + +#[cfg(not(feature = "metadata_async"))] +#[test] +fn test_select_not() { + let r = might_be_async::select! { "metadata_async" => { 10 } else ! => { 20 } }; + assert_eq!(r, 20); +} + +#[cfg(feature = "metadata_async")] +#[test] +fn test_select_not() { + let r = might_be_async::select! { "metadata_async" => { 10 } else ! => { 20 } }; + assert_eq!(r, 10); +} + +#[cfg(not(feature = "metadata_async"))] +#[test] +fn test_select_not_first() { + let r = might_be_async::select! { ! => { 30 } else "metadata_async" => { 40 } }; + assert_eq!(r, 30); +} + +#[cfg(feature = "metadata_async")] +#[test] +fn test_select_not_first() { + let r = might_be_async::select! { ! => { 30 } else "metadata_async" => { 40 } }; + assert_eq!(r, 40); +} + +#[cfg(feature = "metadata_async")] +#[test] +fn test_select_both_explicit() { + let r = might_be_async::select! { "metadata_async" => { 100 } else "custom_ft" => { 200 } }; + assert_eq!(r, 100); +} + +#[cfg(not(feature = "metadata_async"))] +#[test] +fn test_select_implicit() { + let r = might_be_async::select! { { 1 + 2 } else { 3 + 4 } }; + assert_eq!(r, 7); +} + +#[cfg(feature = "metadata_async")] +#[test] +fn test_select_implicit() { + let r = futures::executor::block_on(async { + might_be_async::select! { { 1 + 2 } else { 3 + 4 } } + }); + assert_eq!(r, 3); +} + +#[cfg(not(feature = "metadata_async"))] +#[test] +fn test_select_mixed_explicit_first() { + let r = might_be_async::select! { "metadata_async" => { 100 } else { 200 } }; + assert_eq!(r, 200); +} + +#[cfg(feature = "metadata_async")] +#[test] +fn test_select_mixed_explicit_first() { + let r = might_be_async::select! { "metadata_async" => { 100 } else { 200 } }; + assert_eq!(r, 100); +} + +#[cfg(not(feature = "metadata_async"))] +#[test] +fn test_select_metadata_default() { + let r = might_be_async::select! { { 50 } else { 60 } }; + assert_eq!(r, 60); +} + +#[cfg(not(feature = "metadata_async"))] +#[test] +fn test_select_metadata_two_not() { + let r = might_be_async::select! { ! => { 70 } else ! => { 80 } }; + assert_eq!(r, 80); +} |
