1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
use strict;
use warnings;
use Test::More 'no_plan';
use Data::Dumper;
use Parse::Win32Registry 0.60;
$Data::Dumper::Useqq = 1;
$Data::Dumper::Terse = 1;
$Data::Dumper::Indent = 0;
sub find_file
{
my $filename = shift;
return -d 't' ? "t/$filename" : $filename;
}
sub run_walk_tests
{
my $key = shift;
my @tests = @_;
my ($os) = ref($key) =~ /Win(NT|95)/;
my $subtree_iter = $key->walk(sub {
my $key = shift;
my $key_path = shift @tests;
is($key->get_path, $key_path,
"$os entering key " . Dumper($key_path));
},
sub {
my $value = shift;
my $name = shift @tests;
is($value->get_name, $name,
"$os value " . Dumper($name));
},
sub {
my $key = shift;
my $key_path = shift @tests;
is($key->get_path, $key_path,
"$os leaving key " . Dumper($key_path));
},
);
}
{
my $filename = find_file('win95_iter_tests.rf');
my $registry = Parse::Win32Registry->new($filename);
my $root_key = $registry->get_root_key;
my @tests = (
"", # KEY ENTER
"\\key1", # KEY ENTER
"value1", # VALUE
"value2", # VALUE
"\\key1\\key3", # KEY ENTER
"value5", # VALUE
"value6", # VALUE
"\\key1\\key3", # KEY EXIT
"\\key1\\key4", # KEY ENTER
"value7", # VALUE
"value8", # VALUE
"\\key1\\key4", # KEY EXIT
"\\key1", # KEY EXIT
"\\key2", # KEY ENTER
"value3", # VALUE
"value4", # VALUE
"\\key2\\key5", # KEY ENTER
"value9", # VALUE
"value10", # VALUE
"\\key2\\key5", # KEY EXIT
"\\key2\\key6", # KEY ENTER
"value11", # VALUE
"value12", # VALUE
"\\key2\\key6", # KEY EXIT
"\\key2", # KEY EXIT
"", # KEY EXIT
);
run_walk_tests($root_key, @tests);
}
{
my $filename = find_file('winnt_iter_tests.rf');
my $registry = Parse::Win32Registry->new($filename);
my $root_key = $registry->get_root_key;
my @tests = (
"\$\$\$PROTO.HIV", # KEY ENTER
"value1", # VALUE
"value2", # VALUE
"\$\$\$PROTO.HIV\\key1", # KEY ENTER
"value3", # VALUE
"value4", # VALUE
"\$\$\$PROTO.HIV\\key1\\key3", # KEY ENTER
"value7", # VALUE
"value8", # VALUE
"\$\$\$PROTO.HIV\\key1\\key3", # KEY EXIT
"\$\$\$PROTO.HIV\\key1\\key4", # KEY ENTER
"value9", # VALUE
"value10", # VALUE
"\$\$\$PROTO.HIV\\key1\\key4", # KEY EXIT
"\$\$\$PROTO.HIV\\key1", # KEY EXIT
"\$\$\$PROTO.HIV\\key2", # KEY ENTER
"value5", # VALUE
"value6", # VALUE
"\$\$\$PROTO.HIV\\key2\\key5", # KEY ENTER
"value11", # VALUE
"value12", # VALUE
"\$\$\$PROTO.HIV\\key2\\key5", # KEY EXIT
"\$\$\$PROTO.HIV\\key2\\key6", # KEY ENTER
"value13", # VALUE
"value14", # VALUE
"\$\$\$PROTO.HIV\\key2\\key6", # KEY EXIT
"\$\$\$PROTO.HIV\\key2", # KEY EXIT
"\$\$\$PROTO.HIV", # KEY EXIT
);
run_walk_tests($root_key, @tests);
}
|