sum_range 0.1.0

The sum of all consecutive numbers, both even and odd.
Documentation
use sum_range::SumRange;

#[test]
fn test_sum_range() {
    assert_eq!((0..0_u8).sum_range(), (0..0).sum());
    assert_eq!((0..0_i8).sum_range(), (0..0).sum());
    assert_eq!((0..1_i8).sum_range(), (0..1).sum());
    assert_eq!((0..1_u8).sum_range(), (0..1).sum());
    assert_eq!((-1..0_i8).sum_range(), (-1..0).sum());
    assert_eq!((-1..1_i8).sum_range(), (-1..1).sum());
    assert_eq!((0..10_u16).sum_range(), (0..10).sum());
    assert_eq!((10..10_u32).sum_range(), (10..10).sum());
    assert_eq!((10..10_i32).sum_range(), (10..10).sum());
    assert_eq!((10..11_u64).sum_range(), (10..11).sum());
    assert_eq!((10..1_usize).sum_range(), (10..1).sum());
    assert_eq!((10..1_isize).sum_range(), (10..1).sum());
    assert_eq!((2..11_u128).sum_range(), (2..11).sum());
    assert_eq!((-2..11_i8).sum_range(), (-2..11).sum());
    assert_eq!((2..-1_i16).sum_range(), (2..-1).sum());
    assert_eq!((-20..110_i32).sum_range(), (-20..110).sum());
    assert_eq!((-20..0_i64).sum_range(), (-20..0).sum());
    assert_eq!((-20..-10_isize).sum_range(), (-20..-10).sum());
    assert_eq!((-20..-20_i128).sum_range(), (-20..-20).sum());
    assert_eq!((-5..-20_i8).sum_range(), (-5..-20).sum());
}

#[test]
fn test_sum_range_inc() {
    assert_eq!((0..=0_u8).sum_range(), (0..=0).sum());
    assert_eq!((0..=0_i8).sum_range(), (0..=0).sum());
    assert_eq!((1..=1_u16).sum_range(), (1..=1).sum());
    assert_eq!((1..=1_i16).sum_range(), (1..=1).sum());
    assert_eq!((20..=100u32).sum_range(), (20..=100).sum());
    assert_eq!((200..=100u32).sum_range(), (200..=100).sum());
    assert_eq!((1..=0_u64).sum_range(), (1..=0).sum());
    assert_eq!((1..=0_i64).sum_range(), (1..=0).sum());
    assert_eq!((1..=2_usize).sum_range(), (1..=2).sum());
    assert_eq!((100..=1000_u128).sum_range(), (100..=1000).sum());
    assert_eq!((10..=-2_i8).sum_range(), (10..=-2).sum());
    assert_eq!((-1..=5_i16).sum_range(), (-1..=5).sum());
    assert_eq!((-5..=-20_i32).sum_range(), (-5..=-20).sum());
    assert_eq!((-20..=-20_i128).sum_range(), (-20..=-20).sum());
    assert_eq!((-20..=-10_isize).sum_range(), (-20..=-10).sum());
    assert_eq!((-5..=-5_i32).sum_range(), (-5..=-5).sum());
}

#[test]
fn test_sum_range_to() {
    assert_eq!((..0_u8).sum_range(), (0..0).sum());
    assert_eq!((..1_u16).sum_range(), (0..1).sum());
    assert_eq!((..11_u16).sum_range(), (0..11).sum());
    assert_eq!((..255_u32).sum_range(), (0..255).sum());
    assert_eq!((..2550_u64).sum_range(), (0..2550).sum());
    assert_eq!((..2500_usize).sum_range(), (0..2500).sum());
    assert_eq!((..25000_u128).sum_range(), (0..25000).sum());
}

#[test]
fn test_sum_range_to_inc() {
    assert_eq!((..=0_u8).sum_range(), (0..=0).sum());
    assert_eq!((..=1_u16).sum_range(), (0..=1).sum());
    assert_eq!((..=255_u32).sum_range(), (0..=255).sum());
    assert_eq!((..=2550_u64).sum_range(), (0..=2550).sum());
    assert_eq!((..=2500_usize).sum_range(), (0..=2500).sum());
    assert_eq!((..=25000_u128).sum_range(), (0..=25000).sum());
}

#[test]
fn test_sum_even_range() {
    assert_eq!(
        (0..0_u8).sum_even_range(),
        (0..0).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (0..10_u16).sum_even_range(),
        (0..10).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (10..10_u32).sum_even_range(),
        (10..10).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (10..11_u64).sum_even_range(),
        (10..11).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (10..1_usize).sum_even_range(),
        (10..1).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (2..11_u128).sum_even_range(),
        (2..11).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (200..110_u32).sum_even_range(),
        (200..110).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (201..110_u32).sum_even_range(),
        (201..110).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (201..111_u32).sum_even_range(),
        (201..111).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (200..111_u32).sum_even_range(),
        (200..111).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-2..11_i8).sum_even_range(),
        (-2..11).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-1..11_i8).sum_even_range(),
        (-1..11).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-1..12_i8).sum_even_range(),
        (-1..12).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-2..12_i8).sum_even_range(),
        (-2..12).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (2..-1_i16).sum_even_range(),
        (2..-1).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-20..110_i32).sum_even_range(),
        (-20..110).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (200..110_i32).sum_even_range(),
        (200..110).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (201..110_i32).sum_even_range(),
        (201..110).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (201..111_i32).sum_even_range(),
        (201..111).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (200..111_i32).sum_even_range(),
        (200..111).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-20..0_i64).sum_even_range(),
        (-20..0).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-20..-10_isize).sum_even_range(),
        (-20..-10).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-20..-20_i128).sum_even_range(),
        (-20..-20).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-5..-20_i8).sum_even_range(),
        (-5..-20).filter(|x| { x % 2 == 0 }).sum()
    );
}

#[test]
fn test_sum_even_range_inc() {
    assert_eq!(
        (0..=0_u8).sum_even_range(),
        (0..=0).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (0..=10_u16).sum_even_range(),
        (0..=10).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (10..=10_u32).sum_even_range(),
        (10..=10).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (10..=11_u64).sum_even_range(),
        (10..=11).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (10..=1_usize).sum_even_range(),
        (10..=1).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (2..=11_u128).sum_even_range(),
        (2..=11).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-2..=11_i8).sum_even_range(),
        (-2..=11).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-1..11_i8).sum_even_range(),
        (-1..11).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-1..12_i8).sum_even_range(),
        (-1..12).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-2..12_i8).sum_even_range(),
        (-2..12).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (2..=-1_i16).sum_even_range(),
        (2..=-1).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-20..=110_i32).sum_even_range(),
        (-20..=110).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-20..=0_i64).sum_even_range(),
        (-20..=0).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-20..=-10_isize).sum_even_range(),
        (-20..=-10).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-20..=-20_i128).sum_even_range(),
        (-20..=-20).filter(|x| { x % 2 == 0 }).sum()
    );
    assert_eq!(
        (-5..=-20_i8).sum_even_range(),
        (-5..=-20).filter(|x| { x % 2 == 0 }).sum()
    );
}

#[test]
fn test_sum_even_range_to() {
    assert_eq!((..0_u8).sum_even_range(), (0..0).step_by(2).sum::<_>());
    assert_eq!((..1_u16).sum_even_range(), (0..1).step_by(2).sum::<_>());
    assert_eq!((..2_u32).sum_even_range(), (0..2).step_by(2).sum::<_>());
    assert_eq!((..5_usize).sum_even_range(), (0..5).step_by(2).sum::<_>());
    assert_eq!((..6_u64).sum_even_range(), (0..6).step_by(2).sum::<_>());
    assert_eq!((..7_u128).sum_even_range(), (0..7).step_by(2).sum::<_>());
}

#[test]
fn test_sum_even_range_to_inc() {
    assert_eq!((..=0_u8).sum_even_range(), (0..=0).step_by(2).sum::<_>());
    assert_eq!((..=1_u16).sum_even_range(), (0..=1).step_by(2).sum::<_>());
    assert_eq!((..=2_u32).sum_even_range(), (0..=2).step_by(2).sum::<_>());
    assert_eq!((..=10_u64).sum_even_range(), (0..=10).step_by(2).sum::<_>());
    assert_eq!(
        (..=11_usize).sum_even_range(),
        (0..=11).step_by(2).sum::<_>()
    );
    assert_eq!(
        (..=12_u128).sum_even_range(),
        (0..=12).step_by(2).sum::<_>()
    );
}

#[test]
fn test_sum_odd_range() {
    assert_eq!(
        (0..0_u8).sum_odd_range(),
        (0..0).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (0..10_u16).sum_odd_range(),
        (0..10).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (10..10_u32).sum_odd_range(),
        (10..10).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (10..11_u64).sum_odd_range(),
        (10..11).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (10..1_usize).sum_odd_range(),
        (10..1).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (2..11_u128).sum_odd_range(),
        (2..11).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (-2..11_i8).sum_odd_range(),
        (-2..11).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (2..-1_i16).sum_odd_range(),
        (2..-1).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (-20..110_i32).sum_odd_range(),
        (-20..110).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (-20..0_i64).sum_odd_range(),
        (-20..0).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (-20..-10_isize).sum_odd_range(),
        (-20..-10).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (-20..-20_i128).sum_odd_range(),
        (-20..-20).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (-5..-20_i8).sum_odd_range(),
        (-5..-20).filter(|x| { x % 2 != 0 }).sum()
    );

    assert_eq!(
        (..0_u8).sum_odd_range(),
        (0..0).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..1_usize).sum_odd_range(),
        (0..1).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..2_u16).sum_odd_range(),
        (0..2).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..10_u32).sum_odd_range(),
        (0..10).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..11_u64).sum_odd_range(),
        (0..11).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..12_u128).sum_odd_range(),
        (0..12).filter(|x| { x % 2 != 0 }).sum()
    );
}

#[test]
fn test_sum_odd_range_to() {
    assert_eq!(
        (..0_u8).sum_odd_range(),
        (0..0).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..1_usize).sum_odd_range(),
        (0..1).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..2_u16).sum_odd_range(),
        (0..2).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..10_u32).sum_odd_range(),
        (0..10).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..11_u64).sum_odd_range(),
        (0..11).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..12_u128).sum_odd_range(),
        (0..12).filter(|x| { x % 2 != 0 }).sum()
    );
}

#[test]
fn test_sum_odd_range_to_inc() {
    assert_eq!(
        (..=0_u8).sum_odd_range(),
        (0..=0).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..=1_usize).sum_odd_range(),
        (0..=1).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..=2_u16).sum_odd_range(),
        (0..=2).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..=10_u32).sum_odd_range(),
        (0..=10).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..=11_u64).sum_odd_range(),
        (0..=11).filter(|x| { x % 2 != 0 }).sum()
    );
    assert_eq!(
        (..=12_u128).sum_odd_range(),
        (0..=12).filter(|x| { x % 2 != 0 }).sum()
    );
}