Provided by: libxml-compile-tester-perl_0.90-2_all bug

NAME

       XML::Compile::Tester - support XML::Compile related regression testing

INHERITANCE

        XML::Compile::Tester
          is a Exporter

SYNOPSIS

        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);

DESCRIPTION

       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.

FUNCTIONS

   Reader checks
       reader_create(SCHEMA, COMMENT, TYPE, OPTIONS)
           Create a reader for TYPE.  One test is created, reporting success or failure of the
           creation.

           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);

       reader_error(SCHEMA, TYPE, XML)
           Parsing the XML to interpret the TYPE should return an error.  The error text is
           returned.

           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');

   Writer checks
       writer_create(SCHEMA, COMMENT, TYPE, OPTIONS)
           Create a writer for TYPE.  One test (in the Test::More sense) is created, reporting
           success or failure of the creation.

           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);

       writer_error(SCHEMA, TYPE, DATA)
           Translating the Perl DATA into the XML type should return a validation error, which is
           returned.

           example: writer_error

            my $error = writer_error($schema, $type, $data);

            is($error, 'error text', 'my test');
            like($error, qr/error pattern/, 'my test');

       writer_test(WRITER, DATA, [DOC])
           Run the test with a compiled WRITER, which was created with writer_create().  When no
           DOC (XML::LibXML::Document object) was specified, then one will be created for you.

   Check templates
       templ_perl(SCHEMA, TYPE, OPTIONS)
       templ_xml(SCHEMA, TYPE, OPTIONS)
           Create an example template for TYPE, as XML message.  The OPTIONS are passed to
           XML::Compile::Schema subroutine template.

           example: templ_xml

            my $out = templ_xml($schema, $type, show => 'ALL');
            is($out, $expected);

   Helpers
       compare_xml(XML, EXPECTED, [COMMENT])
           Compare the XML (either a string or an XML::LibXML::Element) with the EXPECTED string.
           Both sources are stripped from layout before comparing.

           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

       set_compile_defaults(OPTIONS)
           Each call to create a reader or writer (also indirectly) with XML::Compile::Schema
           subroutine compile will get these OPTIONS passed, on top (and overruling) the usual
           settings.

           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

       set_default_namespace(TESTNS)
           Defined which namespace to use when a relative (only localName) type is provided.  By
           default, this is "undef" (an error when used)

SEE ALSO

       This module is part of XML-Compile-Tester distribution version 0.90, built on August 16,
       2012. Website: http://perl.overmeer.net/xml-compile/

       Other distributions in this suite: XML::Compile, XML::Compile::SOAP, XML::Compile::SOAP12,
       XML::Compile::SOAP::Daemon, XML::Compile::SOAP::WSA, XML::Compile::C14N,
       XML::Compile::WSS, XML::Compile::Tester, XML::Compile::Cache, XML::Compile::Dumper,
       XML::Compile::RPC, XML::Rewrite, XML::eXistDB, and XML::LibXML::Simple.

       Please post questions or ideas to the mailinglist at
       http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/xml-compile For live contact with other
       developers, visit the "#xml-compile" channel on "irc.perl.org".

LICENSE

       Copyrights 2008-2012 by [Mark Overmeer]. 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://www.perl.com/perl/misc/Artistic.html