Sha256: e1694e0b3804c61ee9b6754f54c25e3a5d4f98dd4999502bc9bfcb76bf9bb2c4

Contents?: true

Size: 1.98 KB

Versions: 15

Compression:

Stored size: 1.98 KB

Contents

use error_code::{ErrorCode, defs};

use core::mem;

#[test]
fn check_would_block() {
    let mut error = ErrorCode::new_posix(defs::EAGAIN);
    assert!(error.is_would_block());
    error = ErrorCode::new_posix(defs::EWOULDBLOCK);
    assert!(error.is_would_block());

    error = ErrorCode::new_system(defs::EAGAIN);
    assert!(error.is_would_block());
    error = ErrorCode::new_system(defs::EWOULDBLOCK);
    assert!(error.is_would_block());

    #[cfg(windows)]
    {
        error = ErrorCode::new_system(10035);
        assert!(error.is_would_block());
    }
}

#[cfg(target_pointer_width = "64")]
#[test]
fn size_check_64bit() {
    //On 64bit we suffer from alignment, but Rust optimizes enums quite well so ErrorCode benefits
    //of this optimization, letting its padding to be consumed by Result
    assert_eq!(mem::size_of::<ErrorCode>(), 16);
    //This optimization is enabled in latest rust compiler
    //assert_eq!(mem::size_of::<Result<bool, ErrorCode>>(), 16);
}

#[test]
fn it_works() {
    let error = ErrorCode::new_posix(11);
    eprintln!("{:?}", error.to_string());
    eprintln!("{:?}", error);

    let error = ErrorCode::last_posix();
    eprintln!("{}", error);

    let error = ErrorCode::new_system(11);
    eprintln!("{:?}", error.to_string());

    let error = ErrorCode::last_system();
    eprintln!("{}", error);
}

#[test]
fn check_error_code_range() {
    for code in 0..=15999 {
        let error = ErrorCode::new_posix(code);
        eprintln!("{:?}", error.to_string());

        let error = ErrorCode::new_system(code);
        eprintln!("{:?}", error.to_string());

        if code == defs::EWOULDBLOCK || code == defs::EAGAIN {
            assert!(error.is_would_block());
        } else {
            #[cfg(windows)]
            if code == 10035 {
                assert!(error.is_would_block());
            } else {
                assert!(!error.is_would_block());
            }

            #[cfg(not(windows))]
            assert!(!error.is_would_block());
        }
    }
}

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
wasmtime-23.0.2 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-22.0.0 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-21.0.1 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-20.0.2 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-20.0.0 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-18.0.3 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-17.0.1 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-17.0.0 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-16.0.0 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-15.0.1 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-15.0.0 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-14.0.4 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-14.0.3 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-14.0.1 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs
wasmtime-14.0.0 ./ext/cargo-vendor/error-code-3.0.0/tests/error_code.rs