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
|
use strict;
use warnings;
use Test::More 'no_plan';
use Parse::Win32Registry 0.60;
sub find_file
{
my $filename = shift;
return -d 't' ? "t/$filename" : $filename;
}
{
my @tests = (
[
'fake_user_dat.rf', 'HKEY_USERS', '',
['.DEFAULT', 'Software'],
],
[
'fake_system_dat.rf', 'HKEY_LOCAL_MACHINE', '',
['Software', 'System'],
],
[
'fake_sam.rf', 'HKEY_LOCAL_MACHINE\\SAM', 'SAM',
['SAM'],
],
[
'fake_security.rf', 'HKEY_LOCAL_MACHINE\\SECURITY', 'SECURITY',
['Cache', 'Policy', 'RXACT'],
],
[
'fake_software.rf', 'HKEY_LOCAL_MACHINE\\SOFTWARE', '$$$PROTO.HIV',
['Microsoft', 'Policies'],
],
[
'fake_system.rf', 'HKEY_LOCAL_MACHINE\\SYSTEM', '$$$PROTO.HIV',
['ControlSet001', 'Select'],
],
[
'fake_ntuser_dat.rf', 'HKEY_CURRENT_USER', '$$$PROTO.HIV',
['Control Panel', 'Environment', 'Software'],
],
[
'fake_usrclass_dat.rf', 'HKEY_CLASSES_ROOT', 'S-1-5-21-123456789-123456789-123456789-1000_Classes',
['CLSID'],
],
);
foreach my $test (@tests) {
my ($filename, $virtual_root, $original_root_key_name, $key_names) =
@$test;
$filename = find_file($filename);
my $registry = Parse::Win32Registry->new($filename);
ok(defined($registry), 'registry defined (valid registry)');
my $root_key = $registry->get_virtual_root_key;
ok(defined($root_key), 'root key defined (valid key)');
is($root_key->get_name, $virtual_root,
"root key get_name (virtual name)");
isnt($root_key->get_name, $original_root_key_name,
"root key get_name (original name)");
foreach my $key_name (@$key_names) {
my $key = $root_key->get_subkey($key_name);
my $virtual_path = "$virtual_root\\$key_name";
is($key->get_path, $virtual_path,
"subkey get_path (virtual path)");
}
}
}
|