Skip to content

Commit ace4a37

Browse files
committed
Add tests
1 parent 714c01e commit ace4a37

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

hash2curve/src/hash2field/expand_msg/xmd.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,31 @@ mod test {
197197
use hex_literal::hex;
198198
use sha2::Sha256;
199199

200+
#[test]
201+
fn edge_cases() {
202+
fn generate() -> ExpanderXmd<'static, Sha256> {
203+
<ExpandMsgXmd<Sha256> as ExpandMsg<U4>>::expand_message(
204+
&[b"test message"],
205+
&[b"test DST"],
206+
NonZero::new(64).unwrap(),
207+
)
208+
.unwrap()
209+
}
210+
211+
assert_eq!(generate().fill_bytes(&mut [0; 0]), Ok(0));
212+
assert_eq!(generate().fill_bytes(&mut [0; 1]), Ok(1));
213+
assert_eq!(generate().fill_bytes(&mut [0; 64]), Ok(64));
214+
assert_eq!(generate().fill_bytes(&mut [0; 65]), Ok(64));
215+
216+
let mut expander = generate();
217+
assert_eq!(expander.fill_bytes(&mut [0; 0]), Ok(0));
218+
assert_eq!(expander.fill_bytes(&mut [0; 32]), Ok(32));
219+
assert_eq!(expander.fill_bytes(&mut [0; 0]), Ok(0));
220+
assert_eq!(expander.fill_bytes(&mut [0; 31]), Ok(31));
221+
assert_eq!(expander.fill_bytes(&mut [0; 2]), Ok(1));
222+
assert_eq!(expander.fill_bytes(&mut [0; 1]), Err(Error));
223+
}
224+
200225
fn assert_message<HashT>(
201226
msg: &[u8],
202227
domain: &Domain<'_, HashT::OutputSize>,

hash2curve/src/hash2field/expand_msg/xof.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,29 @@ mod test {
121121
use hex_literal::hex;
122122
use sha3::Shake128;
123123

124+
#[test]
125+
fn edge_cases() {
126+
fn generate() -> ExpandMsgXof<Shake128> {
127+
<ExpandMsgXof<Shake128> as ExpandMsg<U16>>::expand_message(
128+
&[b"test message"],
129+
&[b"test DST"],
130+
NonZero::new(64).unwrap(),
131+
)
132+
.unwrap()
133+
}
134+
135+
assert_eq!(generate().fill_bytes(&mut [0; 0]), Ok(0));
136+
assert_eq!(generate().fill_bytes(&mut [0; 1]), Ok(1));
137+
assert_eq!(generate().fill_bytes(&mut [0; 64]), Ok(64));
138+
assert_eq!(generate().fill_bytes(&mut [0; 65]), Ok(64));
139+
140+
let mut expander = generate();
141+
assert_eq!(expander.fill_bytes(&mut [0; 0]), Ok(0));
142+
assert_eq!(expander.fill_bytes(&mut [0; 1]), Ok(1));
143+
assert_eq!(expander.fill_bytes(&mut [0; 64]), Ok(63));
144+
assert_eq!(expander.fill_bytes(&mut [0; 1]), Err(Error));
145+
}
146+
124147
fn assert_message(msg: &[u8], domain: &Domain<'_, U32>, len_in_bytes: u16, bytes: &[u8]) {
125148
let msg_len = msg.len();
126149
assert_eq!(msg, &bytes[..msg_len]);

0 commit comments

Comments
 (0)