Skip to content

Commit 526e1ad

Browse files
committed
consensus_encoding: add slice encode unit tests
1 parent 5ad7d4e commit 526e1ad

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

consensus_encoding/src/encode/encoders.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,4 +343,45 @@ mod tests {
343343
assert!(!encoder.advance());
344344
assert_eq!(encoder.current_chunk(), None);
345345
}
346+
347+
#[test]
348+
fn encode_slice_with_elements() {
349+
// Should have length prefix chunk, then element chunks, then exhausted.
350+
let slice = &[TestArray([0x34, 0x12, 0x00, 0x00]), TestArray([0x78, 0x56, 0x00, 0x00])];
351+
let mut encoder = SliceEncoder::with_length_prefix(slice);
352+
353+
assert_eq!(encoder.current_chunk(), Some(&[2u8][..]));
354+
assert!(encoder.advance());
355+
assert_eq!(encoder.current_chunk(), Some(&[0x34, 0x12, 0x00, 0x00][..]));
356+
assert!(encoder.advance());
357+
assert_eq!(encoder.current_chunk(), Some(&[0x78, 0x56, 0x00, 0x00][..]));
358+
assert!(!encoder.advance());
359+
assert_eq!(encoder.current_chunk(), None);
360+
}
361+
362+
#[test]
363+
fn encode_empty_slice() {
364+
// Should have only length prefix chunk (0), then exhausted.
365+
let slice: &[TestArray<4>] = &[];
366+
let mut encoder = SliceEncoder::with_length_prefix(slice);
367+
368+
assert_eq!(encoder.current_chunk(), Some(&[0u8][..]));
369+
assert!(!encoder.advance());
370+
assert_eq!(encoder.current_chunk(), None);
371+
}
372+
373+
#[test]
374+
fn encode_slice_with_zero_sized_arrays() {
375+
// Should have length prefix chunk, then empty array chunks, then exhausted.
376+
let slice = &[TestArray([]), TestArray([])];
377+
let mut encoder = SliceEncoder::with_length_prefix(slice);
378+
379+
assert_eq!(encoder.current_chunk(), Some(&[2u8][..]));
380+
assert!(encoder.advance());
381+
assert_eq!(encoder.current_chunk(), Some(&[][..]));
382+
assert!(encoder.advance());
383+
assert_eq!(encoder.current_chunk(), Some(&[][..]));
384+
assert!(!encoder.advance());
385+
assert_eq!(encoder.current_chunk(), None);
386+
}
346387
}

0 commit comments

Comments
 (0)