Skip to content

Commit 1ba979b

Browse files
authored
Add testing for typenum defs (#157)
Previously, it was possible to make a mistake when defining a type-level integer. This was what #89 corrected, as an example. This PR adds tests at all `impl_array_sizes!` calls, asserting that LHS = RHS of all the arrows.
1 parent 8791daa commit 1ba979b

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

src/sizes.rs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub use extra_sizes::*;
1919
/// `N` is used over `UN::USIZE` in order to improve compile times (avoids associated constant
2020
/// resolution)
2121
macro_rules! impl_array_sizes {
22-
($($len:expr => $ty:ident),+ $(,)?) => {
22+
($testname:ident, $($len:expr => $ty:ident),+ $(,)?) => {
2323
$(
2424
unsafe impl ArraySize for $ty {
2525
type ArrayType<T> = [T; $len];
@@ -29,20 +29,29 @@ macro_rules! impl_array_sizes {
2929
type Size = $ty;
3030
}
3131
)+
32+
33+
#[test]
34+
fn $testname() {
35+
use typenum::Unsigned;
36+
$(
37+
assert_eq!($len, $ty::USIZE);
38+
)+
39+
}
3240
};
3341
}
3442

3543
/// Implement array sizes, also importing the relevant constants.
3644
macro_rules! impl_array_sizes_with_import {
37-
($($len:expr => $ty:ident),+ $(,)?) => {
45+
($testname:ident, $($len:expr => $ty:ident),+ $(,)?) => {
3846
$(
3947
pub use typenum::consts::$ty;
40-
impl_array_sizes!($len => $ty);
4148
)+
49+
impl_array_sizes!($testname, $($len => $ty),+);
4250
};
4351
}
4452

4553
impl_array_sizes_with_import! {
54+
base,
4655
0 => U0,
4756
1 => U1,
4857
2 => U2,
@@ -864,6 +873,7 @@ mod extra_sizes {
864873
pub type U21696 = uint!(0 0 0 0 0 0 1 1 0 0 1 0 1 0 1);
865874

866875
impl_array_sizes! {
876+
base_extra,
867877
1040 => U1040,
868878
1056 => U1056,
869879
1072 => U1072,
@@ -1058,6 +1068,7 @@ mod extra_sizes {
10581068

10591069
// ML-DSA sizes
10601070
impl_array_sizes! {
1071+
ml_dsa,
10611072
2420 => U2420,
10621073
3309 => U3309,
10631074
4480 => U4480,
@@ -1069,6 +1080,7 @@ mod extra_sizes {
10691080

10701081
// SLH-DSA sizes
10711082
impl_array_sizes! {
1083+
slh_dsa,
10721084
7856 => U7856,
10731085
16224 => U16224,
10741086
17088 => U17088,
@@ -1079,6 +1091,7 @@ mod extra_sizes {
10791091

10801092
// Kemeleon ML-KEM Encoding sizes
10811093
impl_array_sizes! {
1094+
kemeleon,
10821095
749 => U749,
10831096
781 => U781,
10841097
877 => U877,
@@ -1092,6 +1105,7 @@ mod extra_sizes {
10921105

10931106
// LMS sizes
10941107
impl_array_sizes! {
1108+
lms,
10951109
2047 => U2047,
10961110
2180 => U2180,
10971111
4292 => U4292,
@@ -1100,6 +1114,7 @@ mod extra_sizes {
11001114

11011115
// Frodo sizes
11021116
impl_array_sizes! {
1117+
frodokem,
11031118
9616 => U9616,
11041119
19888 => U19888,
11051120
9720 => U9720,

0 commit comments

Comments
 (0)