# # Copyright (c) 2015 Christian Jaeger, copying@christianjaeger.ch # # This is free software, offered under either the same terms as perl 5 # or the terms of the Artistic License version 2 or the terms of the # MIT License (Expat version). See the file COPYING.md that came # bundled with this file. # =head1 NAME PXML::Preserialize::t -- tests for PXML::Preserialize =head1 SYNOPSIS =head1 DESCRIPTION # is tested by `t/require_and_run_tests` =head1 NOTE This is alpha software! Read the status section in the package README or on the L. =cut package PXML::Preserialize::t; use strict; use warnings; use warnings FATAL => 'uninitialized'; use Chj::TEST; use PXML qw(pxmlbody); use PXML::Preserialize qw(pxmlfunc pxmlpre); use PXML::XHTML qw(A B); my $link_normal= sub { my ($href,$body)=@_; A {href=> $href}, $body }; my $link_fast= pxmlfunc { my ($href,$body)=@_; # can take up to 10[?] arguments. A {href=> $href}, $body }; # the `2` is the number of arguments my $link_fast2= pxmlpre 2, $link_normal; # these expressions are all returing the same result, but the first # is slower then the others: my $res= 'FooBar'; TEST{ &$link_normal("http://foo", [B("Foo"), "Bar"])->string } $res; TEST{ &$link_fast("http://foo", [B("Foo"), "Bar"])->string } $res; TEST{ &$link_fast2("http://foo", [B("Foo"), "Bar"])->string } $res; TEST{ pxmlfunc { 1 } ->()->string } '1'; TEST{ pxmlfunc { [ 1, 2] } ->()->string } '12'; TEST{ pxmlfunc { pxmlbody 3, 2 } ->()->string } '32'; TEST_EXCEPTION { pxmlfunc { my ($loc,$body)=@_; A {href=> "http://$loc"}, $body # yes, already *that* is forbidden. } } "tried to access a PXML::Preserialize::Argument object"; TEST_EXCEPTION { pxmlfunc { my ($loc,$body)=@_; A {href=> $loc}, 0-$body } } "tried to access a PXML::Preserialize::Argument object"; TEST_EXCEPTION { pxmlfunc { my ($loc,$body)=@_; A {href=> $loc}, $loc ? $body : 1 } } "tried to access a PXML::Preserialize::Argument object"; 1