mirror of
https://github.com/uutils/coreutils.git
synced 2026-06-10 15:48:22 -07:00
Adds additional test resources & unit tests for block.
This commit is contained in:
+200
-3
@@ -175,6 +175,38 @@ macro_rules! make_icf_test (
|
||||
};
|
||||
);
|
||||
|
||||
macro_rules! make_block_test (
|
||||
( $test_id:ident, $test_name:expr, $src:expr, $block:expr, $spec:expr ) =>
|
||||
{
|
||||
make_spec_test!($test_id,
|
||||
$test_name,
|
||||
Input {
|
||||
src: $src,
|
||||
non_ascii: false,
|
||||
ibs: 512,
|
||||
xfer_stats: StatusLevel::None,
|
||||
cflags: IConvFlags {
|
||||
ctable: None,
|
||||
block: $block,
|
||||
unblock: None,
|
||||
swab: false,
|
||||
sync: false,
|
||||
noerror: false,
|
||||
},
|
||||
iflags: DEFAULT_IFLAGS,
|
||||
},
|
||||
Output {
|
||||
dst: File::create(format!("./test-resources/FAILED-{}.test", $test_name)).unwrap(),
|
||||
obs: 512,
|
||||
cflags: DEFAULT_CFO,
|
||||
oflags: DEFAULT_OFLAGS,
|
||||
},
|
||||
$spec,
|
||||
format!("./test-resources/FAILED-{}.test", $test_name)
|
||||
);
|
||||
};
|
||||
);
|
||||
|
||||
make_spec_test!(
|
||||
zeros_4k_test,
|
||||
"zeros-4k",
|
||||
@@ -371,10 +403,175 @@ make_icf_test!(
|
||||
File::open("./test-resources/seq-byte-values-odd.spec").unwrap()
|
||||
);
|
||||
|
||||
fn block_test_basic()
|
||||
static NL: u8 = '\n' as u8;
|
||||
static SPACE: u8 = ' ' as u8;
|
||||
|
||||
#[test]
|
||||
fn block_test_no_nl()
|
||||
{
|
||||
let mut buf = vec![0u8, 1u8, 2u8, 3u8];
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8];
|
||||
let res = block(&buf, 4);
|
||||
|
||||
assert_eq!(res, vec![buf]);
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_no_nl_short_rec()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8];
|
||||
let res = block(&buf, 8);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_no_nl_trunc()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8, 4u8];
|
||||
let res = block(&buf, 4);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8/*, 4u8*/],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_nl_gt_cbs_trunc()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8, 4u8, NL, 5u8, 6u8, 7u8];
|
||||
let res = block(&buf, 4);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8],
|
||||
// gnu-dd truncates this record
|
||||
// vec![4u8, SPACE, SPACE, SPACE],
|
||||
vec![5u8, 6u8],
|
||||
vec![7u8],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_surrounded_nl()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8, NL, 4u8, 5u8, 6u8, 7u8, 8u8];
|
||||
let res = block(&buf, 8);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE],
|
||||
vec![4u8, 5u8, 6u8, 7u8, 8u8, SPACE, SPACE, SPACE],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_multiple_nl_same_block()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8, NL, 4u8, NL, 5u8, 6u8, 7u8, 8u8, 9u8, 10u8, 11u8 ];
|
||||
let res = block(&buf, 8);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE],
|
||||
vec![4u8, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE],
|
||||
vec![5u8, 6u8, 7u8, 8u8, 9u8, 10u8, 11u8, SPACE],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_multiple_nl_diff_block()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8, NL, 4u8, 5u8, 6u8, 7u8, NL, 8u8, 9u8, 10u8, 11u8 ];
|
||||
let res = block(&buf, 8);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE],
|
||||
vec![4u8, 5u8, 6u8, 7u8, SPACE, SPACE, SPACE, SPACE],
|
||||
vec![8u8, 9u8, 10u8, 11u8, SPACE, SPACE, SPACE, SPACE],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_lone_nl_end()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8, NL];
|
||||
let res = block(&buf, 4);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_end_nl()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, NL];
|
||||
let res = block(&buf, 4);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, SPACE]
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_start_nl()
|
||||
{
|
||||
let buf = vec![NL, 0u8, 1u8, 2u8, 3u8];
|
||||
let res = block(&buf, 4);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![SPACE, SPACE, SPACE, SPACE],
|
||||
vec![0u8, 1u8, 2u8, 3u8],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_double_nl()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8, NL, NL, 4u8, 5u8, 6u8, 7u8];
|
||||
let res = block(&buf, 8);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8, SPACE, SPACE, SPACE, SPACE],
|
||||
vec![SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE, SPACE],
|
||||
vec![4u8, 5u8, 6u8, 7u8],
|
||||
]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn block_test_double_nl_aligned()
|
||||
{
|
||||
let buf = vec![0u8, 1u8, 2u8, 3u8, NL, NL, 3u8, 4u8, 5u8, 6u8, 7u8, 8u8];
|
||||
let res = block(&buf, 4);
|
||||
|
||||
assert_eq!(res, vec![
|
||||
vec![0u8, 1u8, 2u8, 3u8],
|
||||
vec![SPACE, SPACE, SPACE, SPACE],
|
||||
vec![3u8, 4u8, 5u8, 6u8, 7u8/*, 8u8*/],
|
||||
]);
|
||||
}
|
||||
|
||||
make_block_test!(
|
||||
block_cbs16,
|
||||
"block-cbs-16",
|
||||
File::open("./test-resources/dd-block-cbs16.test").unwrap(),
|
||||
Some(16),
|
||||
File::open("./test-resources/dd-block-cbs16.spec").unwrap()
|
||||
);
|
||||
|
||||
make_block_test!(
|
||||
block_cbs16_as_cbs8,
|
||||
"block-cbs-16-as-cbs8",
|
||||
File::open("./test-resources/dd-block-cbs16.test").unwrap(),
|
||||
Some(8),
|
||||
File::open("./test-resources/dd-block-cbs8.spec").unwrap()
|
||||
);
|
||||
|
||||
make_block_test!(
|
||||
block_consecutive_nl,
|
||||
"block-consecutive-nl",
|
||||
File::open("./test-resources/dd-block-consecutive-nl.test").unwrap(),
|
||||
Some(16),
|
||||
File::open("./test-resources/dd-block-consecutive-nl-cbs16.spec").unwrap()
|
||||
);
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
0 01 012 0123 01234 012345 0123456 01234567 012345678 0123456789 0123456789a 0123456789ab 0123456789abc 0123456789abcd 0123456789abcde 0123456789abcdef
|
||||
@@ -0,0 +1,16 @@
|
||||
0
|
||||
01
|
||||
012
|
||||
0123
|
||||
01234
|
||||
012345
|
||||
0123456
|
||||
01234567
|
||||
012345678
|
||||
0123456789
|
||||
0123456789a
|
||||
0123456789ab
|
||||
0123456789abc
|
||||
0123456789abcd
|
||||
0123456789abcde
|
||||
0123456789abcdef
|
||||
@@ -0,0 +1 @@
|
||||
0 01 012 0123 01234 012345 0123456 012345670123456701234567012345670123456701234567012345670123456701234567
|
||||
@@ -0,0 +1 @@
|
||||
pre post
|
||||
@@ -0,0 +1,4 @@
|
||||
pre
|
||||
|
||||
|
||||
post
|
||||
@@ -0,0 +1,16 @@
|
||||
0
|
||||
01
|
||||
012
|
||||
0123
|
||||
01234
|
||||
012345
|
||||
0123456
|
||||
01234567
|
||||
012345678
|
||||
0123456789
|
||||
0123456789a
|
||||
0123456789ab
|
||||
0123456789abc
|
||||
0123456789abcd
|
||||
0123456789abcde
|
||||
0123456789abcdef
|
||||
@@ -0,0 +1 @@
|
||||
0 01 012 0123 01234 012345 0123456 01234567 012345678 0123456789 0123456789a 0123456789ab 0123456789abc 0123456789abcd 0123456789abcde 0123456789abcdef
|
||||
@@ -0,0 +1,32 @@
|
||||
0
|
||||
|
||||
01
|
||||
|
||||
012
|
||||
|
||||
0123
|
||||
|
||||
01234
|
||||
|
||||
012345
|
||||
|
||||
0123456
|
||||
|
||||
01234567
|
||||
|
||||
01234567
|
||||
8
|
||||
01234567
|
||||
89
|
||||
01234567
|
||||
89a
|
||||
01234567
|
||||
89ab
|
||||
01234567
|
||||
89abc
|
||||
01234567
|
||||
89abcd
|
||||
01234567
|
||||
89abcde
|
||||
01234567
|
||||
89abcdef
|
||||
Reference in New Issue
Block a user