use tlid::{Checked, CheckedError, Pool}; #[test] fn check_overflow() { let mut pool = Pool::>::new(1..4); assert_eq!(pool.next(), Ok(1)); assert_eq!(pool.next(), Ok(2)); assert_eq!(pool.next(), Ok(3)); assert_eq!(pool.next(), Err(CheckedError::PoolEmpty)); assert_eq!(pool.next(), Err(CheckedError::PoolEmpty)); } #[test] fn check_overflow_full() { let mut pool = Pool::>::new_full(); assert_eq!(pool.next(), Ok(0)); assert_eq!(pool.next(), Ok(1)); assert_eq!(pool.next(), Ok(2)); } #[test] fn check_overflow_full_fail() { let mut pool = Pool::>::new_full(); for i in 0..255 { assert_eq!(pool.next(), Ok(i)); } assert_eq!(pool.next(), Err(CheckedError::PoolEmpty)); } #[test] fn check_overflow_u8() { let mut pool = Pool::>::new(254..255); assert_eq!(pool.next(), Ok(254)); assert_eq!(pool.next(), Err(CheckedError::PoolEmpty)); assert_eq!(pool.next(), Err(CheckedError::PoolEmpty)); } #[test] #[should_panic] fn check_overflow_lower() { let mut pool = Pool::>::new(100..99); assert_eq!(pool.next(), Err(CheckedError::PoolEmpty)); } #[test] fn check_overflow_same() { let mut pool = Pool::>::new(100..100); assert_eq!(pool.next(), Err(CheckedError::PoolEmpty)); } #[test] fn check_overflow_one() { let mut pool = Pool::>::new(100..101); assert_eq!(pool.next(), Ok(100)); assert_eq!(pool.next(), Err(CheckedError::PoolEmpty)); }