Builder

 view release on metacpan or  search on metacpan

t/builder_xml_basic.t  view on Meta::CPAN

use Test::More tests => 5;
use Builder;

my $builder = Builder->new();
my $xm = $builder->block( 'Builder::XML' );

my $expected = q{<body><em>emphasized</em><div id="mydiv"><bold>hello</bold><em>world</em></div></body>};

# test 1
$xm->body( sub {
    $xm->em("emphasized");
    $xm->div( { id => 'mydiv' }, $xm->bold('hello'), $xm->em('world') );
});

is $builder->render, $expected, "xml test 1 failed";


# test 2
$xm->body(
    $xm->em("emphasized"),
    $xm->div( { id => 'mydiv' }, sub {
        $xm->bold('hello'); $xm->em('world');
    }),
);

is $builder->render, $expected, "xml test 2 failed";


# test 3
$xm->test('hello');
my $zz = $builder->render;

$xm->body( sub {
    $xm->em("emphasized");
    $xm->div( { id => 'mydiv' },
        $xm->bold('hello'),
        $xm->em('world'),
        $zz,
        $xm->div( sub {
            $xm->p('para'); 
            $xm->__say__($zz);
        }),
    );
});

$expected = q{<body><em>emphasized</em><div id="mydiv"><bold>hello</bold><em>world</em><test>hello</test><div><p>para</p><test>hello</test></div></div></body>};
is $builder->render, $expected, "xml test 3 failed";


# test 4
# parameter(s) are content  =>  element text

$xm->p( 'one', 'two', 'and three' );
is $builder->render, q{<p>one two and three</p>}, "xml test 4 failed";

# test 5

t/builder_xml_namespace.t  view on Meta::CPAN

use Test::More tests => 4;
use Builder;

my $builder = Builder->new();
my $xm = $builder->block( 'Builder::XML', { namespace => 'foo', qualified_attr => 0 } );

my $expected = q{<foo:body><foo:em>emphasized</foo:em><foo:div id="mydiv"><foo:bold>hello</foo:bold><foo:em>world</foo:em></foo:div></foo:body>};

# test 1
$xm->body( sub {
    $xm->em("emphasized");
    $xm->div( { id => 'mydiv' }, $xm->bold('hello'), $xm->em('world') );
});

is $builder->render, $expected, "xml test 1";

# test2
my $xm2 = $builder->block( 'Builder::XML', { namespace => 'foo', qualified_attr => 1 } );
$expected = q{<foo:body><foo:em>emphasized</foo:em><foo:div foo:id="mydiv"><foo:bold>hello</foo:bold><foo:em>world</foo:em></foo:div></foo:body>};

$xm2->body( sub {
    $xm2->em("emphasized");
    $xm2->div( { id => 'mydiv' }, $xm2->bold('hello'), $xm2->em('world') );
});

is $builder->render, $expected, "xml test 2";


# test 3
$expected = q{<foo:body xmlns:foo="http://www.w3.org/TR/REC-html40"><foo:em>emphasized</foo:em><foo:div id="mydiv"><foo:bold>hello</foo:bold><foo:em>world</foo:em></foo:div></foo:body>};
$xm->body( { _xmlns_ => "http://www.w3.org/TR/REC-html40" },
    sub {
    $xm->em("emphasized");
    $xm->div( { id => 'mydiv' }, $xm->bold('hello'), $xm->em('world') );
});

is $builder->render, $expected, "xml test 3";


# test 4
$expected = q{<foo:body xmlns:foo="http://www.w3.org/TR/REC-html40"><foo:em>emphasized</foo:em><foo:div foo:id="mydiv"><foo:bold>hello</foo:bold><foo:em>world</foo:em></foo:div></foo:body>};
$xm2->body( { _xmlns_ => "http://www.w3.org/TR/REC-html40" },
    sub {
    $xm2->em("emphasized");
    $xm2->div( { id => 'mydiv' }, $xm2->bold('hello'), $xm2->em('world') );
});

is $builder->render, $expected, "xml test 4";

t/builder_xml_output.t  view on Meta::CPAN

 
my $fh = IO::Scalar->new( \$got );   # so use IO::Scalar insteead
my $builder = Builder->new( output => $fh );

my $xm  = $builder->block( 'Builder::XML', { indent => 4, newline => 1 } );

my $expected = 
q{<body>
    <em>emphasized</em>
    <div id="mydiv">
        <bold>hello</bold>
        <em>world</em>
    </div>
</body>
};

##############################################################
# test 1
$xm->body( sub {
    $xm->em("emphasized");
    $xm->div( { id => 'mydiv' }, $xm->bold('hello'), $xm->em('world') );
});

is $got, $expected, "xml ouput test 1 failed";


##############################################################
# test 2

$expected.= 
q{<body>

t/builder_xml_pretty.t  view on Meta::CPAN

use Builder;


my $builder = Builder->new;
my $xm  = $builder->block( 'Builder::XML', { indent => 4, newline => 1 } );

my $expected = 
q{<body>
    <em>emphasized</em>
    <div id="mydiv">
        <bold>hello</bold>
        <em>world</em>
    </div>
</body>
};

##############################################################
# test 1
$xm->body( sub {
    $xm->em("emphasized");
    $xm->div( { id => 'mydiv' }, $xm->bold('hello'), $xm->em('world') );
});

is $builder->render, $expected, "xml pretty test 1 failed";

##############################################################
# test 2 (same as above but without anon sub)
$xm->body(
    $xm->em("emphasized"),
    $xm->div( { id => 'mydiv' }, $xm->bold('hello'), $xm->em('world') ),
);

is $builder->render, $expected, "xml pretty test 2 failed";


##############################################################
# test 3 - More complicated test extropolated from real live job
#my $h  = $builder->block( 'Builder::XML', indent => 4, newline => 1, open_newline => 0 );
my $n  = $builder->block( 'Builder::XML' );
# $h->li( { class => "ui-tabs-nav-item" }, $n->a( { href => "#fragment-1" }, $item ) );



( run in 1.664 second using v1.01-cache-2.11-cpan-5dc5da66d9d )