+my $expected_error = {
+ 900 => { not_repeatable => "probably bug in parsing input data" },
+ 901 => { missing_subfield => "a required", "dump" => "baz" },
+ 902 => {
+ "dump" => "^a1^b1^b2",
+ subfield => { extra => { a => 1 }, extra_repeatable => { b => 1 } },
+ },
+ 903 => {
+ "dump" => "^a1^a2^c1",
+ subfield => { extra_repeatable => { a => 1 } },
+ },
+ 904 => { subfield => { extra => { b => 1 }, missing => { a => 1 } } },
+};
+
+
+is_deeply(
+ test_v({
+ '900' => 'foo',
+ '901' => [ qw/foo bar baz/ ],
+ '902' => [ { 'a' => 1, 'b' => [ 1,2 ] } ],
+ '903' => [ { 'a' => [ 1, 2 ], 'c' => 1, } ],
+ '904' => [ { 'b' => 1 } ],
+ '905' => [ { 'a' => 1 } ],
+ }, undef),
+$expected_error, 'validate without subfields');
+
+ok(my $r1 = $v->report, 'report');
+
+diag "report: $r1" if ( $debug );
+
+is_deeply(
+ test_v({
+ '900' => 'foo',
+ '901' => [ qw/foo bar baz/ ],
+ '902' => [ { 'a' => 1, 'b' => [ 1,2 ], subfields => [ qw/a 0 b 0 b 1/ ] } ],
+ '903' => [ { 'a' => [ 1, 2 ], 'c' => 1, subfields => [ qw/a 0 a 1 c 0/ ] } ],
+ '904' => [ { 'b' => 1, subfields => [ qw/b 0/ ] } ],
+ '905' => [ { 'a' => 1, subfields => [ qw/a 0/ ] } ],
+ }, undef),
+$expected_error, 'validate with subfields');
+
+ok(my $r2 = $v->report, 'report');
+
+cmp_ok($r1, 'eq', $r2, 'subfields same as non-subfields');