Config-Model

 view release on metacpan or  search on metacpan

t/warped_id.t  view on Meta::CPAN

use ExtUtils::testlib;
use Test::More;
use Test::Differences;
use Test::Memory::Cycle;
use Config::Model;
use Config::Model::Tester::Setup qw/init_test/;

use strict;
use warnings;

my ($model, $trace) = init_test();

$model->create_config_class(
    name    => 'Slave',
    element => [
        [qw/X Y Z/] => {
            type       => 'leaf',
            value_type => 'enum',
            choice     => [qw/Av Bv Cv/],
        }
    ]
);

$model->create_config_class(
    name      => 'Master',
    'element' => [
        macro => {
            type       => 'leaf',
            value_type => 'enum',
            choice     => [qw/A B C/],
        },
        version => {
            type       => 'leaf',
            value_type => 'integer',
            default    => 1
        },
        warped_hash => {
            type       => 'hash',
            index_type => 'integer',
            max_nb     => 3,
            warp       => {
                follow => '- macro',
                rules  => {
                    A => { max_nb => 1 },
                    B => { max_nb => 2 } }
            },
            cargo => {
                type        => 'node',
                config_class_name => 'Slave'
            }
        },
        'multi_warp' => {
            type       => 'hash',
            index_type => 'integer',
            min        => 0,
            max        => 3,
            default_keys => [ 0 .. 3 ],
            warp       => {
                follow  => [ '- version', '- macro' ],
                'rules' => [
                    [ '2', 'C' ] => { max => 7, default_keys => [ 0 .. 7 ] },
                    [ '2', 'A' ] => { max_index => 7, default_keys => [ 0 .. 7 ] } ]
            },



( run in 0.780 second using v1.01-cache-2.11-cpan-6aa56a78535 )