1# parse() test for lexicals
2# $Id: lexicals.t,v 1.3 2000/07/19 23:43:25 mfowler Exp $
3
4# This script verifies that the lexical variables that parse() introduces
5# into the configuration file do indeed exist.  This test is currently
6# incomplete, as it only tests the default lexicals inserted, and not any
7# user-specified ones.
8
9
10use Parse::PerlConfig;
11use Data::Dumper;
12
13use lib qw(t);
14use parse::testconfig qw(ok);
15
16use strict;
17use vars qw($tconf %lexicals);
18
19
20%lexicals = (
21    'scalar'        =>      'bar',
22    'hash'          =>      {qw(foo bar blah doo)},
23    'array'         =>      [qw(qux quux quuux quuuux)],
24);
25
26
27$tconf = parse::testconfig->new('lex-test.conf');
28
29$tconf->ok_object;
30$tconf->tests(keys(%lexicals) * 2 + $tconf->verify_parsed_default_lexicals());
31
32
33{
34    my $parsed = Parse::PerlConfig::parse(
35        File        =>  $tconf->file_path,
36        Lexicals    =>  \%lexicals,
37    );
38
39    $tconf->verify_parsed_default_lexicals($parsed);
40
41    while (my($varname, $value) = each(%lexicals)) {
42        my $parsed_varname = "lexical_$varname";
43
44        ok(defined $$parsed{$parsed_varname});
45
46        my $odump = Data::Dumper->Dump([$value], ["*$varname"]);
47        my $pdump = Data::Dumper->Dump(
48            [$$parsed{$parsed_varname}], ["*$varname"]
49        );
50
51        ok($odump eq $pdump, qq{lexical "$varname" check -- $odump eq $pdump});
52    }
53}
54