Skip to content

Commit 845ebb2

Browse files
committed
Add tests for low-level API
This also fixes `cargo test --no-default-features`. Closes: #2
1 parent 62ddd18 commit 845ebb2

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

src/decode_impl.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,8 @@ pub fn decode(input: &str, output: &mut Vec<u8>, bits: u64) -> Result<(), ZBase3
263263
mod tests {
264264
#[cfg(feature = "std")]
265265
use super::decode;
266+
use super::decode_slices;
267+
use super::required_octets_buffer_len;
266268
use crate::test_data::{TestCase, RANDOM_TEST_DATA, STANDARD_TEST_DATA};
267269

268270
#[cfg(feature = "std")]
@@ -275,6 +277,16 @@ mod tests {
275277
}
276278
}
277279

280+
fn run_low_level_tests(test_cases: &[TestCase]) {
281+
// the largest sample in src/test_data.rs has 128 bits.
282+
let mut buffer: [u8; 256] = [0; 256];
283+
for test in test_cases {
284+
let outsz:usize = required_octets_buffer_len(test.bits).unwrap();
285+
decode_slices(test.encoded.as_bytes(), &mut buffer[..outsz], test.bits).unwrap();
286+
assert_eq!(&buffer[..outsz], test.unencoded);
287+
}
288+
}
289+
278290
#[test]
279291
#[cfg(feature = "std")]
280292
fn test_decode_standard() {
@@ -286,4 +298,14 @@ mod tests {
286298
fn test_decode_random() {
287299
run_tests(RANDOM_TEST_DATA);
288300
}
301+
302+
#[test]
303+
fn test_decode_low_level_standard() {
304+
run_low_level_tests(STANDARD_TEST_DATA);
305+
}
306+
307+
#[test]
308+
fn test_decode_low_level_random() {
309+
run_low_level_tests(RANDOM_TEST_DATA);
310+
}
289311
}

src/encode_impl.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ pub fn encode(input: &[u8], output: &mut String, bits: u64) -> Result<(), ZBase3
252252
mod tests {
253253
#[cfg(feature = "std")]
254254
use super::encode;
255+
use super::encode_slices;
256+
use super::required_quintets_buffer_len;
255257
use crate::test_data::{TestCase, RANDOM_TEST_DATA, STANDARD_TEST_DATA};
256258

257259
#[cfg(feature = "std")]
@@ -264,6 +266,16 @@ mod tests {
264266
}
265267
}
266268

269+
fn run_low_level_tests(test_cases: &[TestCase]) {
270+
// the largest sample in src/test_data.rs has 128 bits.
271+
let mut buffer: [u8; 256] = [0; 256];
272+
for test in test_cases {
273+
let outsz:usize = required_quintets_buffer_len(test.bits).unwrap();
274+
encode_slices(test.unencoded, &mut buffer[..outsz], test.bits).unwrap();
275+
assert_eq!(&buffer[..outsz], test.encoded.as_bytes());
276+
}
277+
}
278+
267279
#[test]
268280
#[cfg(feature = "std")]
269281
fn test_encode_standard() {
@@ -275,4 +287,14 @@ mod tests {
275287
fn test_encode_random() {
276288
run_tests(RANDOM_TEST_DATA);
277289
}
290+
291+
#[test]
292+
fn test_encode_low_level_standard() {
293+
run_low_level_tests(STANDARD_TEST_DATA);
294+
}
295+
296+
#[test]
297+
fn test_encode_low_level_random() {
298+
run_low_level_tests(RANDOM_TEST_DATA);
299+
}
278300
}

0 commit comments

Comments
 (0)