From ee86a0092fe68506b15ab38bde3cfd033d14a305 Mon Sep 17 00:00:00 2001 From: timofey Date: Sun, 15 Oct 2023 16:31:38 +0000 Subject: [PATCH] select_second --- src/func/instances/future.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/func/instances/future.rs b/src/func/instances/future.rs index 27cc459..5761f68 100644 --- a/src/func/instances/future.rs +++ b/src/func/instances/future.rs @@ -139,11 +139,13 @@ impl<'a> SharedFunctor<'a> for FutureInstance { #[cfg(test)] mod future_tests { + use crate::func::{applicative_select::Selected, tests::Eqr, ApplicativeSelect}; + use super::{test_suite, tests, FutureInstance}; type T = FutureInstance; - impl<'a> tests::Eqr<'a> for T { + impl<'a> Eqr<'a> for T { fn eqr( name: &'a str, left: Self::F, @@ -167,4 +169,15 @@ mod future_tests { fn monad_follows_laws() { test_suite::monad_follows_laws::().unwrap(); } + + #[test] + fn select_second() { + match futures::executor::block_on(T::select( + Box::pin(futures::future::pending::()), + Box::pin(futures::future::ready(2)), + )) { + Selected::A(_, _) => panic!("first future ready"), + Selected::B(_, b) => assert_eq!(b, 2), + } + } }