encoding_index_tests::multi_byte_tests!
[-] [+]
[src]
macro_rules! multi_byte_tests { (make shared tests and benches with dups = $dups:expr) => ( // internal macro #[test] fn test_correct_table() { use std::iter::range_inclusive; static DUPS: &'static [u16] = &$dups; for i in range_inclusive(0u16, 0xffff) { if DUPS.contains(&i) { continue; } let j = forward(i); if j != 0xffff { assert_eq!(backward(j), i); } } } #[bench] fn bench_forward_sequential_128(bencher: &mut test::Bencher) { let mut start: u32 = 0; bencher.iter(|| { for i in start..(start + 0x80) { test::black_box(forward(i as u16)); } start += 0x80; }) } #[bench] fn bench_backward_sequential_128(bencher: &mut test::Bencher) { let mut start: u32 = 0; bencher.iter(|| { for i in start..(start + 0x80) { test::black_box(backward(i)); } start += 0x80; if start >= 0x110000 { start = 0; } }) } ); ( mod = $parentmod:ident, // XXX Rust issue #20701 dups = $dups:expr ) => ( mod tests { extern crate test; use $parentmod::{forward, backward}; multi_byte_tests!(make shared tests and benches with dups = $dups); } ); ( mod = $parentmod:ident, // XXX Rust issue #20701 remap = [$remap_min:expr, $remap_max:expr], dups = $dups:expr ) => ( mod tests { extern crate test; use $parentmod::{forward, backward, backward_remapped}; multi_byte_tests!(make shared tests and benches with dups = $dups); static REMAP_MIN: u16 = $remap_min; static REMAP_MAX: u16 = $remap_max; #[test] fn test_correct_remapping() { for i in REMAP_MIN..(REMAP_MAX+1) { let j = forward(i); if j != 0xffff { let ii = backward_remapped(j); assert!(ii != i && ii != 0xffff); let jj = forward(ii); assert_eq!(j, jj); } } } #[bench] fn bench_backward_remapped_sequential_128(bencher: &mut test::Bencher) { let mut start: u32 = 0; bencher.iter(|| { for i in start..(start + 0x80) { test::black_box(backward_remapped(i)); } start += 0x80; if start >= 0x110000 { start = 0; } }) } } ); }
Makes a common test suite for multi-byte indices.