File: hash.t

package info (click to toggle)
libconfig-mvp-perl 2.101650-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 228 kB
  • ctags: 59
  • sloc: perl: 595; makefile: 2
file content (100 lines) | stat: -rw-r--r-- 2,243 bytes parent folder | download | duplicates (7)
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
use strict;
use warnings;

use Test::More;

use lib 't/lib';

{
  package CMRFBA;
  use Moose;
  extends 'Config::MVP::Assembler';
  with 'Config::MVP::Assembler::WithBundles';
}

{
  package CMRFB;
  use Moose;
  extends 'Config::MVP::Reader::Hash';

  sub build_assembler { CMRFBA->new; }
}

{
  my $config = CMRFB->new->read_config({
    'Foo::Bar' => {
      x => 1,
      y => [ 2, 4 ],
      z => 3,
    },
    'bz' => {
      __package => 'Foo::Baz',
      single => 1,
      multi  => [ 2, 3 ],
    },
    'Foo::Metaboondle' => { },
    'Foo::Quux' => {
      a => 1,
      b => 2,
      c => 3,
    }
  });

  my @sections = $config->sections;

  is(@sections, 7, "there are seven sections");

  @sections = sort { lc $a->name cmp lc $b->name } @sections;
  my ($b_1, $b_2, $b_3, $b_b, $baz, $bar, $quux) = @sections;

  is($bar->name,     'Foo::Bar',  '1st is Foo::Bar (name)');
  is($bar->package,  'Foo::Bar',  '1st is Foo::Bar (pkg)');

  is($baz->name,     'bz',        '2nd is bz (name)');
  is($baz->package,  'Foo::Baz',  '2nd is Foo::Baz (pkg)');

  is($b_1->name,     'boondle_1', '2nd is boondle_1 (name)');
  is($b_1->package,  'Foo::Boo1', '2nd is Foo::Boo1 (pkg)');

  is($b_2->name,     'boondle_2', '2nd is boondle_2 (name)');
  is($b_2->package,  'Foo::Boo2', '2nd is Foo::Boo2 (pkg)');

  is($b_b->name,     'boondle_B', '3rd is boondle_B (name)');
  is($b_b->package,  'Foo::Bar',  '3rd is Foo::Bar (pkg)');

  is($b_3->name,     'boondle_3', '4th is boondle_3 (name)');
  is($b_3->package,  'Foo::Boo2', '4th is Foo::Boo2 (pkg)');

  is($quux->name,    'Foo::Quux', '5th is Foo::Quux (name)');
  is($quux->package, 'Foo::Quux', '5th is Foo::Quux (pkg)');
}

{
  my $config = CMRFB->new->read_config({
    'Foo::BoondleHref' => { },
  });

  my @sections = $config->sections;
  is(@sections, 3, "we get 2 sections");
  is_deeply(
    $sections[2]->payload,
    { y => [ 1, 2, 3 ] },
    "boondle_B has expected contents",
  );
}

{
  my $config = CMRFB->new->read_config({
    'Foo::BoondleHref' => { },
  });

  my @sections = $config->sections;
  is(@sections, 3, "we get 2 sections");
  is_deeply(
    $sections[2]->payload,
    { y => [ 1, 2, 3 ] },
    "boondle_B has expected contents",
  );
}

done_testing;