XML::Compile::Tester(3pm) | User Contributed Perl Documentation | XML::Compile::Tester(3pm) |
XML::Compile::Tester - support XML::Compile related regression testing
XML::Compile::Tester is a Exporter
use XML::Compile::Tester; # default additional compile flags, avoids repetition set_compile_defaults(validation => 0, @other_opts); set_compile_defaults(); # reset # set default namespace, such that $type only needs to use local my $ns = 'some-schemas-targetNamespace'; my $type = pack_type($ns, 'localName'); # X::C::Util set_default_namespace($ns); my $type = 'localName'; # now implicit in $ns my $reader = reader_create($schema, "my reader", $type, @opts); my $data = $reader->($xml); # $xml is string, filename, node my $writer = writer_create($schema, "my writer", $type, @opts); my $xml = $writer->($doc, $data); my $xml = writer_test($writer, $data); my $rerror = reader_error($schema, $type, $xml); my $werror = writer_error($schema, $type, $data); my $output = templ_xml($schema, $type, @options); my $output = templ_perl($schema, $type, @options);
The XML::Compile module suite has extensive regression testing. Probably, you want to do regression testing as well. This module provide functions which simplify writing tests for XML::Compile related distributions.
Of course, XML::Compile::Schema subroutine compile is being called, with some options. By default, "check_values" is true, and "include_namespaces" is false. These values can be overruled using set_compile_defaults(), and with the %options parameter list.
example: reader_create
my $type = pack_type('namespace', 'localName'); my $reader = reader_create($schema, 'my test', $type , check_occurs => 0, @other_options); my $data = $reader->($xml); is_deeply($data, $expected, 'my test'); # Test::More cmp_deeply($data, $expected, 'my test'); # Test::Deep # alternative for $type: set_default_namespace('namespace'); my $reader = reader_create($schema, 'my test', 'localName' , check_occurs => 0, @other_options);
example: reader_error
my $error = reader_error($schema, $type, <<_XML); <test1>...</test1> _XML is($error, 'error text', 'my test'); like($error, qr/error pattern/, 'my test');
Of course, XML::Compile::Schema subroutine compile is being called, with some options. By default, "check_values" and "use_default_namespace" are true, and "include_namespaces" is false. These values can be overruled using set_compile_defaults(), and with the %options parameter list.
example: writer_create
set_default_namespace('namespace'); my $writer = writer_create($schema, 'my test', 'test1'); my $doc = XML::LibXML::Document->new('1.0', 'UTF-8'); my $xml = $writer->($doc, $data); compare_xml($xml, <<_EXPECTED, 'my test'); <test1>...</test1> _EXPECTED # implicit creation of $doc my $xml = writer_test($writer, $data);
example: writer_error
my $error = writer_error($schema, $type, $data); is($error, 'error text', 'my test'); like($error, qr/error pattern/, 'my test');
example: templ_xml
my $out = templ_xml($schema, $type, show => 'ALL'); is($out, $expected);
In a future release, this algorithm will get improved to compare the parsed XML node trees, not the strings.
example: compare_xml
compare_xml($xml, <<_XML, 'my test'); <test1>...</test1> _XML
example:
# defaults for XML::Compile::Schema::compile() set_compile_defaults(include_namespaces => 1, validate => 0 , sloppy_intergers => 1, sloppy_floats => 1); set_compile_defaults(); # reset
This module is part of XML-Compile-Tester distribution version 0.91, built on May 11, 2018. Website: http://perl.overmeer.net/CPAN/
Copyrights 2008-2018 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://dev.perl.org/licenses/
2018-05-18 | perl v5.26.2 |