summaryrefslogtreecommitdiffstats
path: root/tokio/tests/stream_merge.rs
diff options
context:
space:
mode:
authorMikail Bagishov <bagishov.mikail@yandex.ru>2020-04-23 21:19:56 +0300
committerGitHub <noreply@github.com>2020-04-23 20:19:56 +0200
commit236629d1be7208612cbe5388e7ffebf85b73c157 (patch)
tree73ca0d102a5220d7693c4cacbdc0523fe7d1b1aa /tokio/tests/stream_merge.rs
parentf83f6388c42aa62c2096073b1dd80459189d7ea9 (diff)
stream: fix panic in Merge and Chain size_hint (#2430)
Diffstat (limited to 'tokio/tests/stream_merge.rs')
-rw-r--r--tokio/tests/stream_merge.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/tokio/tests/stream_merge.rs b/tokio/tests/stream_merge.rs
index f0168d72..45ecdcb6 100644
--- a/tokio/tests/stream_merge.rs
+++ b/tokio/tests/stream_merge.rs
@@ -52,3 +52,27 @@ async fn merge_async_streams() {
assert!(rx.is_woken());
assert_eq!(None, assert_ready!(rx.poll_next()));
}
+
+#[test]
+fn size_overflow() {
+ struct Monster;
+
+ impl tokio::stream::Stream for Monster {
+ type Item = ();
+ fn poll_next(
+ self: std::pin::Pin<&mut Self>,
+ _cx: &mut std::task::Context<'_>,
+ ) -> std::task::Poll<Option<()>> {
+ panic!()
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (usize::max_value(), Some(usize::max_value()))
+ }
+ }
+
+ let m1 = Monster;
+ let m2 = Monster;
+ let m = m1.merge(m2);
+ assert_eq!(m.size_hint(), (usize::max_value(), None));
+}