Add proper test for add function
Some checks failed
timw4mail/rusty-numbers/pipeline/head There was a failure building this commit

This commit is contained in:
Timothy Warren 2020-03-04 09:19:33 -05:00
parent d5d9730607
commit a5e3e88e1e

View File

@ -38,18 +38,18 @@ macro_rules! impl_from_smaller {
#[cfg(target_pointer_width = "16")] #[cfg(target_pointer_width = "16")]
impl_from_smaller!(u8, u16); impl_from_smaller!(u8, u16);
#[cfg(target_pointer_width = "32")]
impl_from_smaller!(u8, u16, u32);
#[cfg(target_pointer_width = "64")]
impl_from_smaller!(u8, u16, u32, u64);
#[cfg(target_pointer_width = "16")] #[cfg(target_pointer_width = "16")]
static BITS:usize = 16; static BITS:usize = 16;
#[cfg(target_pointer_width = "32")]
impl_from_smaller!(u8, u16, u32);
#[cfg(target_pointer_width = "32")] #[cfg(target_pointer_width = "32")]
static BITS:usize = 32; static BITS:usize = 32;
#[cfg(target_pointer_width = "64")]
impl_from_smaller!(u8, u16, u32, u64);
#[cfg(target_pointer_width = "64")] #[cfg(target_pointer_width = "64")]
static BITS:usize = 64; static BITS:usize = 64;
@ -78,7 +78,7 @@ fn add(u: BigInt, v: BigInt) -> BigInt {
} else { } else {
out.inner.push(res); out.inner.push(res);
} }
carry = core::usize::MAX - res + 1; carry = core::usize::MAX - res;
} else { } else {
if res < core::usize::MAX { if res < core::usize::MAX {
out.inner.push(res + carry); out.inner.push(res + carry);
@ -134,18 +134,7 @@ impl BigInt {
todo!(); todo!();
} }
pub fn from_str_radix() { pub fn from_str_radix<T: ToString>(s: T, radix: usize) {
todo!();
}
/// Split an unsigned number into BigInt parts
fn split<T: Unsigned>(&mut self, num: T) -> Vec<usize> {
// Pretty easy if you don't actually need to split the value!
if num < T::max_value() {
todo!();
// return vec![num as usize];
}
todo!(); todo!();
} }
} }
@ -160,13 +149,20 @@ mod tests {
assert_eq!(int.inner[0], 45usize) assert_eq!(int.inner[0], 45usize)
} }
/* #[test] #[test]
fn test_add() { fn test_add() {
let a = BigInt::from(core::u64::MAX); // MAX is 2^Bitsize - 1,
let b = BigInt::from(core::u64::MAX); // so the sum should be
// [MAX -1, 1]
// Compare base 10: 9 + 9 = 18
let a = BigInt::from(core::usize::MAX);
let b = BigInt::from(core::usize::MAX);
let sum = add(a, b); let sum = add(a, b);
assert!(false, "{:#?} should have inner equal to {:?}", sum, core::u64::MAX as u128 + core::u64::MAX as u128); assert_eq!(sum.inner[0], core::usize::MAX - 1, "least significant place should be MAX - 1");
} */ assert_eq!(sum.inner[1], 1usize, "most significant place should be 1");
// assert!(false, "{:#?} should have inner equal to {:?}", sum, core::u64::MAX as u128 + core::u64::MAX as u128);
}
} }