[go: up one dir, main page]

conv 0.1.0

This crate provides a number of conversion traits with more specific semantics than those provided by 'as' or 'From'/'Into'.
extern crate conv;

#[macro_use] mod util;

use conv::*;

use conv::FloatError::Underflow as FU;
use conv::FloatError::Overflow as FO;

#[test]
fn test_f32() {
    check!(f32, f32; fident; qv: *;);
    check!(f32, f64; fident; qv: *;);
}

#[test]
fn test_f32_to_int() {
    check!(f32, i8;  sidenta; qa: i8;  a: -129.0, !FU; a: 128.0, !FO;);
    check!(f32, i16; sidenta; qa: i16; a: -32_769.0, !FU; a: 32_768.0, !FO;);
    check!(f32, i32; sidenta; qa: i32; a: -2_147_500_000.0, !FU; a: 2_147_500_000.0, !FO;);
    check!(f32, i64; sidenta; qa: i64; a: -9_223_373_000_000_000_000.0, !FU; a: 9_223_373_000_000_000_000.0, !FO;);
    check!(f32, u8;  uidenta; qa: u8;  a: -1.0, !FU; a: 256.0, !FO;);
    check!(f32, u16; uidenta; qa: u16; a: -1.0, !FU; a: 65_536.0, !FO;);
    check!(f32, u32; uidenta; qa: u32; a: -1.0, !FU; a: 4_294_968_000.0, !FO;);
    check!(f32, u64; uidenta; qa: u64; a: -1.0, !FU; a: 18_446_746_000_000_000_000.0, !FO;);
}

#[test]
fn test_f64_to_int() {
    check!(f64, i8;  sidenta; qa: i8;  a: -129.0, !FU; a: 128.0, !FO;);
    check!(f64, i16; sidenta; qa: i16; a: -32_769.0, !FU; a: 32_768.0, !FO;);
    check!(f64, i32; sidenta; qa: i32; a: -2_147_483_649.0, !FU; a: 2_147_483_648.0, !FO;);
    check!(f64, i64; sidenta; qa: i64; a: -9_223_372_036_854_778_000.0, !FU; a: 9_223_372_036_854_778_000.0, !FO;);
    check!(f64, u8;  uidenta; qa: u8;  a: -1.0, !FU; a: 256.0, !FO;);
    check!(f64, u16; uidenta; qa: u16; a: -1.0, !FU; a: 65_536.0, !FO;);
    check!(f64, u32; uidenta; qa: u32; a: -1.0, !FU; a: 4_294_967_296.0, !FO;);
    check!(f64, u64; uidenta; qa: u64; a: -1.0, !FU; a: 18_446_744_073_709_560_000.0, !FO;);
}

#[test]
fn test_f64() {
    check!(f64, f32; fidenta; qa: *;);
    check!(f64, f64; fident; qv: *;);
}