extern crate test;
use self::test::Bencher;
use num::BigUint;
use Fibonacci;
#[bench]
fn fib_u64(b: &mut Bencher) {
b.iter(|| Fibonacci::<u64>::default().take(92).collect::<Vec<_>>());
}
#[bench]
fn fib_biguint(b: &mut Bencher) {
b.iter(|| Fibonacci::<BigUint>::default().take(92).collect::<Vec<_>>());
}
#[test]
fn first_ten() {
let ten: Vec<u8> = Fibonacci::default().take(10).collect();
assert_eq!(ten, vec![1, 2, 3, 5, 8, 13, 21, 34, 55, 89]);
}
#[test]
fn overflow() {
assert_eq!(92, Fibonacci::<u64>::default().take(93).collect::<Vec<_>>().len());
}
#[test]
fn non_overflow() {
assert_eq!(300, Fibonacci::<BigUint>::default().take(300).collect::<Vec<_>>().len());
}
#[test]
fn reset() {
let mut fib: Fibonacci<u8> = Fibonacci::default();
for _ in 0..12 {
fib.next();
}
assert_eq!(None, fib.next());
fib.reset();
assert_eq!(Some(1), fib.next());
}