stdrandom 0.3.0-beta.1

Generate random numbers using only Rust standard library
Documentation
// Tests if Rust correctly reports arithmetic overflows

#![allow(arithmetic_overflow)]

#[test]
fn test_u32_overflowing_add() {
    let max_value: u32 = u32::MAX;
    let (result, overflowed) = max_value.overflowing_add(1);
    assert_eq!(result, 0, "Expected wraparound to 0");
    assert!(overflowed, "Expected overflow flag to be set");
}

#[test]
fn test_u32_checked_overflow() {
    let max_value: u32 = u32::MAX;
    // Ensure the overflow condition returns None
    assert!(max_value.checked_add(1).is_none(), "Expected overflow to return None");
}

#[test]
#[should_panic]
fn test_u32_overflow() {
    let max_value: u32 = u32::MAX;
    let _overflowed_value = max_value + 1; // Expected to panic in debug mode
}

#[test]
#[should_panic]
fn test_u16_overflow() {
    let max_value: u16 = u16::MAX;
    let _overflowed_value = max_value + 1; // Expected to panic in debug mode
}

#[test]
#[should_panic]
fn test_i8_overflow_positive() {
    let max_value: i8 = i8::MAX;
    let _overflowed_value = max_value + 1; // Expected to panic in debug mode
}

#[test]
#[should_panic]
fn test_i8_overflow_negative() {
    let min_value: i8 = i8::MIN;
    let _overflowed_value = min_value - 1; // Expected to panic in debug mode
}