1use Config::Std;
2use Test::More 'no_plan';
3
4# May fail with v5.8.1 only, 
5# if so define PERL_HASH_SEED=0 to suppress Hash Randomisation
6
7my $output_file = 'test.cfg';
8
9my %data = (
10    # Default section...
11    '' => {
12        'def1'     => 'def val 1',
13        'def 2'    => 'def val 2',
14        'def 3 ml' => "def val 3\nacross several\n   lines",
15        'def 3'    => 'def val 3',
16        'def 4'    => 'def val 4',
17    },
18
19    # Named section...
20    'Named' => {
21        'hi there' => q{What's your name???},
22        'list'     => [qw(a list of values), 'all different'],
23    },
24
25    # Complex named section...
26    'Complex named!!!' => {
27        123456789 => 'zero',
28        '%^$%$#%' => 'curses',
29    },
30);
31
32ok eval{ write_config %data => $output_file }    => 'Write succeeded';
33
34ok open(my $fh, '<', $output_file)               => 'File created';
35
36ok my $config = do{ local $/; <$fh> }            => 'File read';
37
38ok my $orig_config = do{ local $/; <DATA> }      => 'DATA loaded';
39
40is $orig_config, $config                         => 'Content correct';
41
42
43__DATA__
44
45def 3: def val 3
46def 2: def val 2
47
48def 3 ml: def val 3
49        : across several
50        :    lines
51
52def 4: def val 4
53def1: def val 1
54
55[Complex named!!!]
56
57%^$%$#%: curses
58123456789: zero
59
60[Named]
61
62hi there: What's your name???
63
64list: a
65list: list
66list: of
67list: values
68list: all different
69
70