Add a shrink function to clean up 0s at the end of numbers.
This commit is contained in:
@@ -10,6 +10,23 @@ pub struct UCN {
|
|||||||
contents: Vec<u64>
|
contents: Vec<u64>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl UCN {
|
||||||
|
fn shrink(&mut self) {
|
||||||
|
loop {
|
||||||
|
match self.contents.pop() {
|
||||||
|
None =>
|
||||||
|
break,
|
||||||
|
Some(0) =>
|
||||||
|
continue,
|
||||||
|
Some(x) => {
|
||||||
|
self.contents.push(x);
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// Conversions to/from crypto nums.
|
// Conversions to/from crypto nums.
|
||||||
@@ -104,6 +121,25 @@ mod test {
|
|||||||
use quickcheck::{Arbitrary,Gen};
|
use quickcheck::{Arbitrary,Gen};
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_shrink() {
|
||||||
|
let mut val1 = UCN{ contents: vec![1,0,0] };
|
||||||
|
val1.shrink();
|
||||||
|
assert_eq!(val1, UCN{ contents: vec![1] });
|
||||||
|
//
|
||||||
|
let mut val2 = UCN{ contents: vec![0,0,0] };
|
||||||
|
val2.shrink();
|
||||||
|
assert_eq!(val2, UCN{ contents: vec![] });
|
||||||
|
//
|
||||||
|
let mut val3 = UCN{ contents: vec![1,0,1] };
|
||||||
|
val3.shrink();
|
||||||
|
assert_eq!(val3, UCN{ contents: vec![1,0,1] });
|
||||||
|
//
|
||||||
|
let mut val4 = UCN{ contents: vec![] };
|
||||||
|
val4.shrink();
|
||||||
|
assert_eq!(val4, UCN{ contents: vec![] });
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[allow(overflowing_literals)]
|
#[allow(overflowing_literals)]
|
||||||
fn test_builders() {
|
fn test_builders() {
|
||||||
|
|||||||
Reference in New Issue
Block a user