File: walk.t

package info (click to toggle)
libparse-win32registry-perl 1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 864 kB
  • sloc: perl: 8,650; makefile: 11
file content (125 lines) | stat: -rw-r--r-- 3,232 bytes parent folder | download | duplicates (5)
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);
}