Add the ability to ignore tests, so that day-to-day testing only takes a little while.
This commit is contained in:
46
generate.hs
46
generate.hs
@@ -104,9 +104,9 @@ numberOfTests :: Int
|
||||
numberOfTests = 1000
|
||||
|
||||
generateTestBlock :: Handle ->
|
||||
String -> Operation -> Bool -> [Int -> Int] ->
|
||||
String -> Operation -> Bool -> Int -> [Int -> Int] ->
|
||||
IO ()
|
||||
generateTestBlock hndl name level useRT addOns =
|
||||
generateTestBlock hndl name level useRT ignoreAt addOns =
|
||||
do hPutStrLn hndl (" mod " ++ name ++ " {")
|
||||
when useRT $
|
||||
do hPutStrLn hndl (" use super::super::*;")
|
||||
@@ -115,7 +115,9 @@ generateTestBlock hndl name level useRT addOns =
|
||||
forM_ requirements $ \ (Req size kind) ->
|
||||
when (kind == level) $
|
||||
hPutStrLn hndl (" generate_" ++ name ++
|
||||
"_tests!(U" ++ show size ++ ", " ++
|
||||
"_tests!(" ++
|
||||
(if size >= ignoreAt then "ignore " else "") ++
|
||||
"U" ++ show size ++ ", " ++
|
||||
"u" ++ show size ++
|
||||
concatMap (\ f -> ", U" ++ show (f size)) addOns ++
|
||||
");")
|
||||
@@ -142,25 +144,25 @@ generateInvocs =
|
||||
hPutStrLn hndl ""
|
||||
hPutStrLn hndl "\n#[cfg(test)]"
|
||||
hPutStrLn hndl "mod tests {"
|
||||
generateTestBlock hndl "base" BaseOps True []
|
||||
generateTestBlock hndl "conversion" BaseOps False []
|
||||
generateTestBlock hndl "codec" BaseOps False []
|
||||
generateTestBlock hndl "cmp" BaseOps True []
|
||||
generateTestBlock hndl "sub" Sub True []
|
||||
generateTestBlock hndl "shiftl" Shifts True []
|
||||
generateTestBlock hndl "shiftr" Shifts True []
|
||||
generateTestBlock hndl "add" Add True [(+ 64)]
|
||||
generateTestBlock hndl "mul" Mul True [(* 2)]
|
||||
generateTestBlock hndl "div" Div True []
|
||||
generateTestBlock hndl "barrett_gen" Barretts True [(+ 64)]
|
||||
generateTestBlock hndl "barrett_red" Barretts True [(+ 64), (* 2)]
|
||||
generateTestBlock hndl "modsq" ModSq True []
|
||||
generateTestBlock hndl "modmul" ModMul True []
|
||||
generateTestBlock hndl "modexp" ModExp True []
|
||||
generateTestBlock hndl "square" Square True [(* 2)]
|
||||
generateTestBlock hndl "barrett_modsq" Barretts True [(+ 64)]
|
||||
generateTestBlock hndl "barrett_modmul" Barretts True [(+ 64)]
|
||||
generateTestBlock hndl "barrett_modexp" Barretts True [(+ 64)]
|
||||
generateTestBlock hndl "base" BaseOps True 16384 []
|
||||
generateTestBlock hndl "conversion" BaseOps False 90000 []
|
||||
generateTestBlock hndl "codec" BaseOps False 90000 []
|
||||
generateTestBlock hndl "cmp" BaseOps True 16384 []
|
||||
generateTestBlock hndl "sub" Sub True 9000 []
|
||||
generateTestBlock hndl "shiftl" Shifts True 9000 []
|
||||
generateTestBlock hndl "shiftr" Shifts True 9000 []
|
||||
generateTestBlock hndl "add" Add True 9000 [(+ 64)]
|
||||
generateTestBlock hndl "mul" Mul True 9000 [(* 2)]
|
||||
generateTestBlock hndl "div" Div True 2049 []
|
||||
generateTestBlock hndl "barrett_gen" Barretts True 2000 [(+ 64)]
|
||||
generateTestBlock hndl "barrett_red" Barretts True 4000 [(+ 64), (* 2)]
|
||||
generateTestBlock hndl "modsq" ModSq True 4000 []
|
||||
generateTestBlock hndl "modmul" ModMul True 4000 []
|
||||
generateTestBlock hndl "modexp" ModExp True 512 []
|
||||
generateTestBlock hndl "square" Square True 4000 [(* 2)]
|
||||
generateTestBlock hndl "barrett_modsq" Barretts True 4000 [(+ 64)]
|
||||
generateTestBlock hndl "barrett_modmul" Barretts True 4000 [(+ 64)]
|
||||
generateTestBlock hndl "barrett_modexp" Barretts True 1024 [(+ 64)]
|
||||
hPutStrLn hndl "}"
|
||||
|
||||
log :: String -> IO ()
|
||||
|
||||
@@ -103,6 +103,17 @@ macro_rules! generate_add_tests {
|
||||
($name: ident, $lname: ident, $plus1: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_add_tests!(body $name, $lname, $plus1);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident, $plus1: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_add_tests!(body $name, $lname, $plus1);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident, $plus1: ident) => {
|
||||
let fname = format!("testdata/add/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 3, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -121,6 +132,5 @@ macro_rules! generate_add_tests {
|
||||
assert_eq!($name::from(c), aprime);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -75,6 +75,17 @@ macro_rules! generate_barrett_gen_tests {
|
||||
($name: ident, $lname: ident, $bname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_barrett_gen_tests!(body $name, $lname, $bname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident, $bname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_barrett_gen_tests!(body $name, $lname, $bname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident, $bname: ident) => {
|
||||
let fname = format!("testdata/barrett_gen/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 3, |case| {
|
||||
let (neg0, mbytes) = case.get("m").unwrap();
|
||||
@@ -94,7 +105,6 @@ macro_rules! generate_barrett_gen_tests {
|
||||
assert_eq!(mbig, bar.m);
|
||||
assert_eq!(mu, bar.mu);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -103,6 +113,17 @@ macro_rules! generate_barrett_red_tests {
|
||||
($name: ident, $lname: ident, $bname: ident, $dbl: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_barrett_red_tests!(body $name, $lname, $bname, $dbl);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident, $bname: ident, $dbl: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_barrett_red_tests!(body $name, $lname, $bname, $dbl);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident, $bname: ident, $dbl: ident) => {
|
||||
let fname = format!("testdata/barrett_reduce/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 5, |case| {
|
||||
let (neg0, mbytes) = case.get("m").unwrap();
|
||||
@@ -122,6 +143,5 @@ macro_rules! generate_barrett_red_tests {
|
||||
//
|
||||
assert_eq!(r, bar.reduce(&x));
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -69,6 +69,17 @@ macro_rules! generate_base_tests
|
||||
($name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_base_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_base_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident) => {
|
||||
let fname = format!("testdata/base/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 6, |case| {
|
||||
let (neg0, xbytes) = case.get("x").unwrap();
|
||||
@@ -91,5 +102,4 @@ macro_rules! generate_base_tests
|
||||
assert_eq!(x, r);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -46,6 +46,17 @@ macro_rules! generate_cmp_tests {
|
||||
($name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_cmp_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_cmp_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident) => {
|
||||
let fname = format!("testdata/cmp/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 5, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -67,6 +78,5 @@ macro_rules! generate_cmp_tests {
|
||||
assert_eq!(e || g, a >= b);
|
||||
assert_eq!(e || l, a <= b);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -226,6 +226,17 @@ macro_rules! generate_div_tests {
|
||||
($name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_div_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_div_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident) => {
|
||||
let fname = format!("testdata/div/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 4, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -242,6 +253,5 @@ macro_rules! generate_div_tests {
|
||||
assert_eq!(q, myq);
|
||||
assert_eq!(r, myr);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -470,22 +470,22 @@ mod tests {
|
||||
generate_base_tests!(U15360, u15360);
|
||||
generate_base_tests!(U15424, u15424);
|
||||
generate_base_tests!(U15488, u15488);
|
||||
generate_base_tests!(U16384, u16384);
|
||||
generate_base_tests!(U16448, u16448);
|
||||
generate_base_tests!(U16512, u16512);
|
||||
generate_base_tests!(U16576, u16576);
|
||||
generate_base_tests!(U30720, u30720);
|
||||
generate_base_tests!(U30784, u30784);
|
||||
generate_base_tests!(U30848, u30848);
|
||||
generate_base_tests!(U30912, u30912);
|
||||
generate_base_tests!(U32768, u32768);
|
||||
generate_base_tests!(U32832, u32832);
|
||||
generate_base_tests!(U32896, u32896);
|
||||
generate_base_tests!(U32960, u32960);
|
||||
generate_base_tests!(U61440, u61440);
|
||||
generate_base_tests!(U61504, u61504);
|
||||
generate_base_tests!(U61568, u61568);
|
||||
generate_base_tests!(U61632, u61632);
|
||||
generate_base_tests!(ignore U16384, u16384);
|
||||
generate_base_tests!(ignore U16448, u16448);
|
||||
generate_base_tests!(ignore U16512, u16512);
|
||||
generate_base_tests!(ignore U16576, u16576);
|
||||
generate_base_tests!(ignore U30720, u30720);
|
||||
generate_base_tests!(ignore U30784, u30784);
|
||||
generate_base_tests!(ignore U30848, u30848);
|
||||
generate_base_tests!(ignore U30912, u30912);
|
||||
generate_base_tests!(ignore U32768, u32768);
|
||||
generate_base_tests!(ignore U32832, u32832);
|
||||
generate_base_tests!(ignore U32896, u32896);
|
||||
generate_base_tests!(ignore U32960, u32960);
|
||||
generate_base_tests!(ignore U61440, u61440);
|
||||
generate_base_tests!(ignore U61504, u61504);
|
||||
generate_base_tests!(ignore U61568, u61568);
|
||||
generate_base_tests!(ignore U61632, u61632);
|
||||
}
|
||||
mod conversion {
|
||||
generate_conversion_tests!(U192, u192);
|
||||
@@ -680,22 +680,22 @@ mod tests {
|
||||
generate_cmp_tests!(U15360, u15360);
|
||||
generate_cmp_tests!(U15424, u15424);
|
||||
generate_cmp_tests!(U15488, u15488);
|
||||
generate_cmp_tests!(U16384, u16384);
|
||||
generate_cmp_tests!(U16448, u16448);
|
||||
generate_cmp_tests!(U16512, u16512);
|
||||
generate_cmp_tests!(U16576, u16576);
|
||||
generate_cmp_tests!(U30720, u30720);
|
||||
generate_cmp_tests!(U30784, u30784);
|
||||
generate_cmp_tests!(U30848, u30848);
|
||||
generate_cmp_tests!(U30912, u30912);
|
||||
generate_cmp_tests!(U32768, u32768);
|
||||
generate_cmp_tests!(U32832, u32832);
|
||||
generate_cmp_tests!(U32896, u32896);
|
||||
generate_cmp_tests!(U32960, u32960);
|
||||
generate_cmp_tests!(U61440, u61440);
|
||||
generate_cmp_tests!(U61504, u61504);
|
||||
generate_cmp_tests!(U61568, u61568);
|
||||
generate_cmp_tests!(U61632, u61632);
|
||||
generate_cmp_tests!(ignore U16384, u16384);
|
||||
generate_cmp_tests!(ignore U16448, u16448);
|
||||
generate_cmp_tests!(ignore U16512, u16512);
|
||||
generate_cmp_tests!(ignore U16576, u16576);
|
||||
generate_cmp_tests!(ignore U30720, u30720);
|
||||
generate_cmp_tests!(ignore U30784, u30784);
|
||||
generate_cmp_tests!(ignore U30848, u30848);
|
||||
generate_cmp_tests!(ignore U30912, u30912);
|
||||
generate_cmp_tests!(ignore U32768, u32768);
|
||||
generate_cmp_tests!(ignore U32832, u32832);
|
||||
generate_cmp_tests!(ignore U32896, u32896);
|
||||
generate_cmp_tests!(ignore U32960, u32960);
|
||||
generate_cmp_tests!(ignore U61440, u61440);
|
||||
generate_cmp_tests!(ignore U61504, u61504);
|
||||
generate_cmp_tests!(ignore U61568, u61568);
|
||||
generate_cmp_tests!(ignore U61632, u61632);
|
||||
}
|
||||
mod sub {
|
||||
use super::super::*;
|
||||
@@ -724,19 +724,19 @@ mod tests {
|
||||
generate_sub_tests!(U8192, u8192);
|
||||
generate_sub_tests!(U8256, u8256);
|
||||
generate_sub_tests!(U8320, u8320);
|
||||
generate_sub_tests!(U12288, u12288);
|
||||
generate_sub_tests!(U12416, u12416);
|
||||
generate_sub_tests!(U15424, u15424);
|
||||
generate_sub_tests!(U16384, u16384);
|
||||
generate_sub_tests!(U16448, u16448);
|
||||
generate_sub_tests!(U16512, u16512);
|
||||
generate_sub_tests!(U30720, u30720);
|
||||
generate_sub_tests!(U30784, u30784);
|
||||
generate_sub_tests!(U30848, u30848);
|
||||
generate_sub_tests!(U32768, u32768);
|
||||
generate_sub_tests!(U32896, u32896);
|
||||
generate_sub_tests!(U61440, u61440);
|
||||
generate_sub_tests!(U61568, u61568);
|
||||
generate_sub_tests!(ignore U12288, u12288);
|
||||
generate_sub_tests!(ignore U12416, u12416);
|
||||
generate_sub_tests!(ignore U15424, u15424);
|
||||
generate_sub_tests!(ignore U16384, u16384);
|
||||
generate_sub_tests!(ignore U16448, u16448);
|
||||
generate_sub_tests!(ignore U16512, u16512);
|
||||
generate_sub_tests!(ignore U30720, u30720);
|
||||
generate_sub_tests!(ignore U30784, u30784);
|
||||
generate_sub_tests!(ignore U30848, u30848);
|
||||
generate_sub_tests!(ignore U32768, u32768);
|
||||
generate_sub_tests!(ignore U32896, u32896);
|
||||
generate_sub_tests!(ignore U61440, u61440);
|
||||
generate_sub_tests!(ignore U61568, u61568);
|
||||
}
|
||||
mod shiftl {
|
||||
use super::super::*;
|
||||
@@ -767,15 +767,15 @@ mod tests {
|
||||
generate_shiftl_tests!(U8192, u8192);
|
||||
generate_shiftl_tests!(U8256, u8256);
|
||||
generate_shiftl_tests!(U8320, u8320);
|
||||
generate_shiftl_tests!(U15360, u15360);
|
||||
generate_shiftl_tests!(U15424, u15424);
|
||||
generate_shiftl_tests!(U15488, u15488);
|
||||
generate_shiftl_tests!(U16384, u16384);
|
||||
generate_shiftl_tests!(U16448, u16448);
|
||||
generate_shiftl_tests!(U16512, u16512);
|
||||
generate_shiftl_tests!(U30720, u30720);
|
||||
generate_shiftl_tests!(U30784, u30784);
|
||||
generate_shiftl_tests!(U30848, u30848);
|
||||
generate_shiftl_tests!(ignore U15360, u15360);
|
||||
generate_shiftl_tests!(ignore U15424, u15424);
|
||||
generate_shiftl_tests!(ignore U15488, u15488);
|
||||
generate_shiftl_tests!(ignore U16384, u16384);
|
||||
generate_shiftl_tests!(ignore U16448, u16448);
|
||||
generate_shiftl_tests!(ignore U16512, u16512);
|
||||
generate_shiftl_tests!(ignore U30720, u30720);
|
||||
generate_shiftl_tests!(ignore U30784, u30784);
|
||||
generate_shiftl_tests!(ignore U30848, u30848);
|
||||
}
|
||||
mod shiftr {
|
||||
use super::super::*;
|
||||
@@ -806,15 +806,15 @@ mod tests {
|
||||
generate_shiftr_tests!(U8192, u8192);
|
||||
generate_shiftr_tests!(U8256, u8256);
|
||||
generate_shiftr_tests!(U8320, u8320);
|
||||
generate_shiftr_tests!(U15360, u15360);
|
||||
generate_shiftr_tests!(U15424, u15424);
|
||||
generate_shiftr_tests!(U15488, u15488);
|
||||
generate_shiftr_tests!(U16384, u16384);
|
||||
generate_shiftr_tests!(U16448, u16448);
|
||||
generate_shiftr_tests!(U16512, u16512);
|
||||
generate_shiftr_tests!(U30720, u30720);
|
||||
generate_shiftr_tests!(U30784, u30784);
|
||||
generate_shiftr_tests!(U30848, u30848);
|
||||
generate_shiftr_tests!(ignore U15360, u15360);
|
||||
generate_shiftr_tests!(ignore U15424, u15424);
|
||||
generate_shiftr_tests!(ignore U15488, u15488);
|
||||
generate_shiftr_tests!(ignore U16384, u16384);
|
||||
generate_shiftr_tests!(ignore U16448, u16448);
|
||||
generate_shiftr_tests!(ignore U16512, u16512);
|
||||
generate_shiftr_tests!(ignore U30720, u30720);
|
||||
generate_shiftr_tests!(ignore U30784, u30784);
|
||||
generate_shiftr_tests!(ignore U30848, u30848);
|
||||
}
|
||||
mod add {
|
||||
use super::super::*;
|
||||
@@ -843,19 +843,19 @@ mod tests {
|
||||
generate_add_tests!(U8192, u8192, U8256);
|
||||
generate_add_tests!(U8256, u8256, U8320);
|
||||
generate_add_tests!(U8320, u8320, U8384);
|
||||
generate_add_tests!(U12288, u12288, U12352);
|
||||
generate_add_tests!(U12416, u12416, U12480);
|
||||
generate_add_tests!(U15424, u15424, U15488);
|
||||
generate_add_tests!(U16384, u16384, U16448);
|
||||
generate_add_tests!(U16448, u16448, U16512);
|
||||
generate_add_tests!(U16512, u16512, U16576);
|
||||
generate_add_tests!(U30720, u30720, U30784);
|
||||
generate_add_tests!(U30784, u30784, U30848);
|
||||
generate_add_tests!(U30848, u30848, U30912);
|
||||
generate_add_tests!(U32768, u32768, U32832);
|
||||
generate_add_tests!(U32896, u32896, U32960);
|
||||
generate_add_tests!(U61440, u61440, U61504);
|
||||
generate_add_tests!(U61568, u61568, U61632);
|
||||
generate_add_tests!(ignore U12288, u12288, U12352);
|
||||
generate_add_tests!(ignore U12416, u12416, U12480);
|
||||
generate_add_tests!(ignore U15424, u15424, U15488);
|
||||
generate_add_tests!(ignore U16384, u16384, U16448);
|
||||
generate_add_tests!(ignore U16448, u16448, U16512);
|
||||
generate_add_tests!(ignore U16512, u16512, U16576);
|
||||
generate_add_tests!(ignore U30720, u30720, U30784);
|
||||
generate_add_tests!(ignore U30784, u30784, U30848);
|
||||
generate_add_tests!(ignore U30848, u30848, U30912);
|
||||
generate_add_tests!(ignore U32768, u32768, U32832);
|
||||
generate_add_tests!(ignore U32896, u32896, U32960);
|
||||
generate_add_tests!(ignore U61440, u61440, U61504);
|
||||
generate_add_tests!(ignore U61568, u61568, U61632);
|
||||
}
|
||||
mod mul {
|
||||
use super::super::*;
|
||||
@@ -887,12 +887,12 @@ mod tests {
|
||||
generate_mul_tests!(U7744, u7744, U15488);
|
||||
generate_mul_tests!(U8192, u8192, U16384);
|
||||
generate_mul_tests!(U8256, u8256, U16512);
|
||||
generate_mul_tests!(U15360, u15360, U30720);
|
||||
generate_mul_tests!(U15424, u15424, U30848);
|
||||
generate_mul_tests!(U16384, u16384, U32768);
|
||||
generate_mul_tests!(U16448, u16448, U32896);
|
||||
generate_mul_tests!(U30720, u30720, U61440);
|
||||
generate_mul_tests!(U30784, u30784, U61568);
|
||||
generate_mul_tests!(ignore U15360, u15360, U30720);
|
||||
generate_mul_tests!(ignore U15424, u15424, U30848);
|
||||
generate_mul_tests!(ignore U16384, u16384, U32768);
|
||||
generate_mul_tests!(ignore U16448, u16448, U32896);
|
||||
generate_mul_tests!(ignore U30720, u30720, U61440);
|
||||
generate_mul_tests!(ignore U30784, u30784, U61568);
|
||||
}
|
||||
mod div {
|
||||
use super::super::*;
|
||||
@@ -909,19 +909,19 @@ mod tests {
|
||||
generate_div_tests!(U1152, u1152);
|
||||
generate_div_tests!(U1216, u1216);
|
||||
generate_div_tests!(U2048, u2048);
|
||||
generate_div_tests!(U2112, u2112);
|
||||
generate_div_tests!(U4096, u4096);
|
||||
generate_div_tests!(U4160, u4160);
|
||||
generate_div_tests!(U6144, u6144);
|
||||
generate_div_tests!(U6208, u6208);
|
||||
generate_div_tests!(U8192, u8192);
|
||||
generate_div_tests!(U8256, u8256);
|
||||
generate_div_tests!(U15360, u15360);
|
||||
generate_div_tests!(U15424, u15424);
|
||||
generate_div_tests!(U16384, u16384);
|
||||
generate_div_tests!(U16448, u16448);
|
||||
generate_div_tests!(U30720, u30720);
|
||||
generate_div_tests!(U30784, u30784);
|
||||
generate_div_tests!(ignore U2112, u2112);
|
||||
generate_div_tests!(ignore U4096, u4096);
|
||||
generate_div_tests!(ignore U4160, u4160);
|
||||
generate_div_tests!(ignore U6144, u6144);
|
||||
generate_div_tests!(ignore U6208, u6208);
|
||||
generate_div_tests!(ignore U8192, u8192);
|
||||
generate_div_tests!(ignore U8256, u8256);
|
||||
generate_div_tests!(ignore U15360, u15360);
|
||||
generate_div_tests!(ignore U15424, u15424);
|
||||
generate_div_tests!(ignore U16384, u16384);
|
||||
generate_div_tests!(ignore U16448, u16448);
|
||||
generate_div_tests!(ignore U30720, u30720);
|
||||
generate_div_tests!(ignore U30784, u30784);
|
||||
}
|
||||
mod barrett_gen {
|
||||
use super::super::*;
|
||||
@@ -933,12 +933,12 @@ mod tests {
|
||||
generate_barrett_gen_tests!(U512, u512, U576);
|
||||
generate_barrett_gen_tests!(U576, u576, U640);
|
||||
generate_barrett_gen_tests!(U1024, u1024, U1088);
|
||||
generate_barrett_gen_tests!(U2048, u2048, U2112);
|
||||
generate_barrett_gen_tests!(U3072, u3072, U3136);
|
||||
generate_barrett_gen_tests!(U4096, u4096, U4160);
|
||||
generate_barrett_gen_tests!(U7680, u7680, U7744);
|
||||
generate_barrett_gen_tests!(U8192, u8192, U8256);
|
||||
generate_barrett_gen_tests!(U15360, u15360, U15424);
|
||||
generate_barrett_gen_tests!(ignore U2048, u2048, U2112);
|
||||
generate_barrett_gen_tests!(ignore U3072, u3072, U3136);
|
||||
generate_barrett_gen_tests!(ignore U4096, u4096, U4160);
|
||||
generate_barrett_gen_tests!(ignore U7680, u7680, U7744);
|
||||
generate_barrett_gen_tests!(ignore U8192, u8192, U8256);
|
||||
generate_barrett_gen_tests!(ignore U15360, u15360, U15424);
|
||||
}
|
||||
mod barrett_red {
|
||||
use super::super::*;
|
||||
@@ -952,10 +952,10 @@ mod tests {
|
||||
generate_barrett_red_tests!(U1024, u1024, U1088, U2048);
|
||||
generate_barrett_red_tests!(U2048, u2048, U2112, U4096);
|
||||
generate_barrett_red_tests!(U3072, u3072, U3136, U6144);
|
||||
generate_barrett_red_tests!(U4096, u4096, U4160, U8192);
|
||||
generate_barrett_red_tests!(U7680, u7680, U7744, U15360);
|
||||
generate_barrett_red_tests!(U8192, u8192, U8256, U16384);
|
||||
generate_barrett_red_tests!(U15360, u15360, U15424, U30720);
|
||||
generate_barrett_red_tests!(ignore U4096, u4096, U4160, U8192);
|
||||
generate_barrett_red_tests!(ignore U7680, u7680, U7744, U15360);
|
||||
generate_barrett_red_tests!(ignore U8192, u8192, U8256, U16384);
|
||||
generate_barrett_red_tests!(ignore U15360, u15360, U15424, U30720);
|
||||
}
|
||||
mod modsq {
|
||||
use super::super::*;
|
||||
@@ -969,10 +969,10 @@ mod tests {
|
||||
generate_modsq_tests!(U1024, u1024);
|
||||
generate_modsq_tests!(U2048, u2048);
|
||||
generate_modsq_tests!(U3072, u3072);
|
||||
generate_modsq_tests!(U4096, u4096);
|
||||
generate_modsq_tests!(U7680, u7680);
|
||||
generate_modsq_tests!(U8192, u8192);
|
||||
generate_modsq_tests!(U15360, u15360);
|
||||
generate_modsq_tests!(ignore U4096, u4096);
|
||||
generate_modsq_tests!(ignore U7680, u7680);
|
||||
generate_modsq_tests!(ignore U8192, u8192);
|
||||
generate_modsq_tests!(ignore U15360, u15360);
|
||||
}
|
||||
mod modmul {
|
||||
use super::super::*;
|
||||
@@ -986,10 +986,10 @@ mod tests {
|
||||
generate_modmul_tests!(U1024, u1024);
|
||||
generate_modmul_tests!(U2048, u2048);
|
||||
generate_modmul_tests!(U3072, u3072);
|
||||
generate_modmul_tests!(U4096, u4096);
|
||||
generate_modmul_tests!(U7680, u7680);
|
||||
generate_modmul_tests!(U8192, u8192);
|
||||
generate_modmul_tests!(U15360, u15360);
|
||||
generate_modmul_tests!(ignore U4096, u4096);
|
||||
generate_modmul_tests!(ignore U7680, u7680);
|
||||
generate_modmul_tests!(ignore U8192, u8192);
|
||||
generate_modmul_tests!(ignore U15360, u15360);
|
||||
}
|
||||
mod modexp {
|
||||
use super::super::*;
|
||||
@@ -998,15 +998,15 @@ mod tests {
|
||||
generate_modexp_tests!(U192, u192);
|
||||
generate_modexp_tests!(U256, u256);
|
||||
generate_modexp_tests!(U384, u384);
|
||||
generate_modexp_tests!(U512, u512);
|
||||
generate_modexp_tests!(U576, u576);
|
||||
generate_modexp_tests!(U1024, u1024);
|
||||
generate_modexp_tests!(U2048, u2048);
|
||||
generate_modexp_tests!(U3072, u3072);
|
||||
generate_modexp_tests!(U4096, u4096);
|
||||
generate_modexp_tests!(U7680, u7680);
|
||||
generate_modexp_tests!(U8192, u8192);
|
||||
generate_modexp_tests!(U15360, u15360);
|
||||
generate_modexp_tests!(ignore U512, u512);
|
||||
generate_modexp_tests!(ignore U576, u576);
|
||||
generate_modexp_tests!(ignore U1024, u1024);
|
||||
generate_modexp_tests!(ignore U2048, u2048);
|
||||
generate_modexp_tests!(ignore U3072, u3072);
|
||||
generate_modexp_tests!(ignore U4096, u4096);
|
||||
generate_modexp_tests!(ignore U7680, u7680);
|
||||
generate_modexp_tests!(ignore U8192, u8192);
|
||||
generate_modexp_tests!(ignore U15360, u15360);
|
||||
}
|
||||
mod square {
|
||||
use super::super::*;
|
||||
@@ -1020,10 +1020,10 @@ mod tests {
|
||||
generate_square_tests!(U1024, u1024, U2048);
|
||||
generate_square_tests!(U2048, u2048, U4096);
|
||||
generate_square_tests!(U3072, u3072, U6144);
|
||||
generate_square_tests!(U4096, u4096, U8192);
|
||||
generate_square_tests!(U7680, u7680, U15360);
|
||||
generate_square_tests!(U8192, u8192, U16384);
|
||||
generate_square_tests!(U15360, u15360, U30720);
|
||||
generate_square_tests!(ignore U4096, u4096, U8192);
|
||||
generate_square_tests!(ignore U7680, u7680, U15360);
|
||||
generate_square_tests!(ignore U8192, u8192, U16384);
|
||||
generate_square_tests!(ignore U15360, u15360, U30720);
|
||||
}
|
||||
mod barrett_modsq {
|
||||
use super::super::*;
|
||||
@@ -1037,10 +1037,10 @@ mod tests {
|
||||
generate_barrett_modsq_tests!(U1024, u1024, U1088);
|
||||
generate_barrett_modsq_tests!(U2048, u2048, U2112);
|
||||
generate_barrett_modsq_tests!(U3072, u3072, U3136);
|
||||
generate_barrett_modsq_tests!(U4096, u4096, U4160);
|
||||
generate_barrett_modsq_tests!(U7680, u7680, U7744);
|
||||
generate_barrett_modsq_tests!(U8192, u8192, U8256);
|
||||
generate_barrett_modsq_tests!(U15360, u15360, U15424);
|
||||
generate_barrett_modsq_tests!(ignore U4096, u4096, U4160);
|
||||
generate_barrett_modsq_tests!(ignore U7680, u7680, U7744);
|
||||
generate_barrett_modsq_tests!(ignore U8192, u8192, U8256);
|
||||
generate_barrett_modsq_tests!(ignore U15360, u15360, U15424);
|
||||
}
|
||||
mod barrett_modmul {
|
||||
use super::super::*;
|
||||
@@ -1054,10 +1054,10 @@ mod tests {
|
||||
generate_barrett_modmul_tests!(U1024, u1024, U1088);
|
||||
generate_barrett_modmul_tests!(U2048, u2048, U2112);
|
||||
generate_barrett_modmul_tests!(U3072, u3072, U3136);
|
||||
generate_barrett_modmul_tests!(U4096, u4096, U4160);
|
||||
generate_barrett_modmul_tests!(U7680, u7680, U7744);
|
||||
generate_barrett_modmul_tests!(U8192, u8192, U8256);
|
||||
generate_barrett_modmul_tests!(U15360, u15360, U15424);
|
||||
generate_barrett_modmul_tests!(ignore U4096, u4096, U4160);
|
||||
generate_barrett_modmul_tests!(ignore U7680, u7680, U7744);
|
||||
generate_barrett_modmul_tests!(ignore U8192, u8192, U8256);
|
||||
generate_barrett_modmul_tests!(ignore U15360, u15360, U15424);
|
||||
}
|
||||
mod barrett_modexp {
|
||||
use super::super::*;
|
||||
@@ -1068,12 +1068,12 @@ mod tests {
|
||||
generate_barrett_modexp_tests!(U384, u384, U448);
|
||||
generate_barrett_modexp_tests!(U512, u512, U576);
|
||||
generate_barrett_modexp_tests!(U576, u576, U640);
|
||||
generate_barrett_modexp_tests!(U1024, u1024, U1088);
|
||||
generate_barrett_modexp_tests!(U2048, u2048, U2112);
|
||||
generate_barrett_modexp_tests!(U3072, u3072, U3136);
|
||||
generate_barrett_modexp_tests!(U4096, u4096, U4160);
|
||||
generate_barrett_modexp_tests!(U7680, u7680, U7744);
|
||||
generate_barrett_modexp_tests!(U8192, u8192, U8256);
|
||||
generate_barrett_modexp_tests!(U15360, u15360, U15424);
|
||||
generate_barrett_modexp_tests!(ignore U1024, u1024, U1088);
|
||||
generate_barrett_modexp_tests!(ignore U2048, u2048, U2112);
|
||||
generate_barrett_modexp_tests!(ignore U3072, u3072, U3136);
|
||||
generate_barrett_modexp_tests!(ignore U4096, u4096, U4160);
|
||||
generate_barrett_modexp_tests!(ignore U7680, u7680, U7744);
|
||||
generate_barrett_modexp_tests!(ignore U8192, u8192, U8256);
|
||||
generate_barrett_modexp_tests!(ignore U15360, u15360, U15424);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,17 @@ macro_rules! generate_modexp_tests {
|
||||
($name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_modexp_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_modexp_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident) => {
|
||||
let fname = format!("testdata/modexp/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 6, |case| {
|
||||
let (neg0, bbytes) = case.get("b").unwrap();
|
||||
@@ -55,15 +66,25 @@ macro_rules! generate_modexp_tests {
|
||||
let r = $name::from_bytes(rbytes);
|
||||
assert_eq!(r, b.modexp(&e, &m));
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
macro_rules! generate_barrett_modexp_tests {
|
||||
(ignore $name: ident, $lname: ident, $bname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_barrett_modexp_tests!(body $name, $lname, $bname);
|
||||
}
|
||||
};
|
||||
($name: ident, $lname: ident, $bname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_barrett_modexp_tests!(body $name, $lname, $bname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident, $bname: ident) => {
|
||||
let fname = format!("testdata/modexp/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 6, |case| {
|
||||
let (neg0, bbytes) = case.get("b").unwrap();
|
||||
@@ -87,6 +108,5 @@ macro_rules! generate_barrett_modexp_tests {
|
||||
assert_eq!(r, b.modexp(&e, &bar));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -27,6 +27,17 @@ macro_rules! generate_modmul_tests {
|
||||
($name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_modmul_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_modmul_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident) => {
|
||||
let fname = format!("testdata/modmul/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 6, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -41,7 +52,6 @@ macro_rules! generate_modmul_tests {
|
||||
let c = $name::from_bytes(cbytes);
|
||||
assert_eq!(c, a.modmul(&b, &m));
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -50,6 +60,17 @@ macro_rules! generate_barrett_modmul_tests {
|
||||
($name: ident, $lname: ident, $bname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_barrett_modmul_tests!(body $name, $lname, $bname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident, $bname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_barrett_modmul_tests!(body $name, $lname, $bname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident, $bname: ident) => {
|
||||
let fname = format!("testdata/modmul/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 6, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -75,6 +96,5 @@ macro_rules! generate_barrett_modmul_tests {
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -27,6 +27,17 @@ macro_rules! generate_modsq_tests {
|
||||
($name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_modsq_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_modsq_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident) => {
|
||||
let fname = format!("testdata/modsq/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 5, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -39,7 +50,6 @@ macro_rules! generate_modsq_tests {
|
||||
let c = $name::from_bytes(cbytes);
|
||||
assert_eq!(c, a.modsq(&m));
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -48,6 +58,17 @@ macro_rules! generate_barrett_modsq_tests {
|
||||
($name: ident, $lname: ident, $bname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_barrett_modsq_tests!(body $name, $lname, $bname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident, $bname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_barrett_modsq_tests!(body $name, $lname, $bname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident, $bname: ident) => {
|
||||
let fname = format!("testdata/modsq/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 5, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -69,6 +90,5 @@ macro_rules! generate_barrett_modsq_tests {
|
||||
assert_eq!(c, a.modsq(&bar));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -70,6 +70,17 @@ macro_rules! generate_mul_tests
|
||||
($name: ident, $lname: ident, $dbl: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_mul_tests!(body $name, $lname, $dbl);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident, $dbl: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_mul_tests!(body $name, $lname, $dbl);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident, $dbl: ident) => {
|
||||
let fname = format!("testdata/mul/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 3, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -82,6 +93,5 @@ macro_rules! generate_mul_tests
|
||||
let c = $dbl::from_bytes(cbytes);
|
||||
assert_eq!(c, &a * &b);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -94,6 +94,17 @@ macro_rules! generate_shiftl_tests {
|
||||
($name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_shiftl_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_shiftl_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident) => {
|
||||
let fname = format!("testdata/shiftl/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 3, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -106,7 +117,6 @@ macro_rules! generate_shiftl_tests {
|
||||
let r = $name::from_bytes(rbytes);
|
||||
assert_eq!(r, a << usize::from(l));
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -115,6 +125,17 @@ macro_rules! generate_shiftr_tests {
|
||||
($name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_shiftr_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_shiftr_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident) => {
|
||||
let fname = format!("testdata/shiftr/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 3, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -127,6 +148,5 @@ macro_rules! generate_shiftr_tests {
|
||||
let r = $name::from_bytes(rbytes);
|
||||
assert_eq!(r, a >> usize::from(l));
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -57,6 +57,17 @@ macro_rules! generate_square_tests {
|
||||
($name: ident, $lname: ident, $dbl: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_square_tests!(body $name, $lname, $dbl);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident, $dbl: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_square_tests!(body $name, $lname, $dbl);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident, $dbl: ident) => {
|
||||
let fname = format!("testdata/square/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 2, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -67,6 +78,5 @@ macro_rules! generate_square_tests {
|
||||
let r = $dbl::from_bytes(rbytes);
|
||||
assert_eq!(r, a.square());
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -78,6 +78,17 @@ macro_rules! generate_sub_tests {
|
||||
($name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
fn $lname() {
|
||||
generate_sub_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(ignore $name: ident, $lname: ident) => {
|
||||
#[test]
|
||||
#[ignore]
|
||||
fn $lname() {
|
||||
generate_sub_tests!(body $name, $lname);
|
||||
}
|
||||
};
|
||||
(body $name: ident, $lname: ident) => {
|
||||
let fname = format!("testdata/sub/{}.tests", stringify!($name));
|
||||
run_test(fname.to_string(), 3, |case| {
|
||||
let (neg0, abytes) = case.get("a").unwrap();
|
||||
@@ -92,6 +103,5 @@ macro_rules! generate_sub_tests {
|
||||
a -= b;
|
||||
assert_eq!(c, a);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user