The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;


use strict;
use Carp;
use File::Spec;
use lib File::Spec->catdir(File::Spec->curdir,"t");
use tools;

$|=1;
my $DEBUG=0;

use XML::Twig;


my $TMAX=13;
print "1..$TMAX\n";

unless( XML::Twig::_use( 'Text::Wrap')) { print "1..1\nok 1\n"; warn "skipping: Text::Wrap not available\n"; exit; }

while( my $doc= get_doc())
  { my $result= XML::Twig->nparse( pretty_print => 'wrapped', $doc)->sprint;
    my $expected= get_doc();
    foreach ($result, $expected) { s{ }{.}g; }
    is( $result, $expected, '');
  }

XML::Twig::Elt->set_wrap(0);
is( XML::Twig::Elt->set_wrap(1), 0, "set_wrap - 1");
is( XML::Twig::Elt->set_wrap(1), 1, "set_wrap - 2");
is( XML::Twig::Elt->set_wrap(0), 1, "set_wrap - 3");
is( XML::Twig::Elt->set_wrap(0), 0, "set_wrap - 4");

is( XML::Twig::Elt::set_wrap(1), 0, "set_wrap - 5");
is( XML::Twig::Elt::set_wrap(1), 1, "set_wrap - 6");
is( XML::Twig::Elt::set_wrap(0), 1, "set_wrap - 7");
is( XML::Twig::Elt::set_wrap(0), 0, "set_wrap - 8");

sub get_doc
  { local $/="\n\n";
    my $doc= <DATA>;
    if( $doc)
      { $doc=~ s{\n\n}{\n};
        $doc=~ s/\{([^}]*)\}/$1/eeg;
      }
    return $doc;
  }


__DATA__
<doc><elt>{"foo" x 40}</elt></doc>

<doc>
  <elt>foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo
    foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo</elt>
</doc>

<doc><elt>{"foo" x 80}</elt></doc>

<doc>
  <elt>foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo
    foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofo
    ofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoof
    oofoofoofoofoofoofoofoofoofoofoo</elt>
</doc>

<doc><section><elt>{"foo" x 40}</elt></section></doc>

<doc>
  <section>
    <elt>foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoof
      oofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo</elt>
  </section>
</doc>

<doc>
  <elt att="foo">{"foo " x 40}</elt>
  <elt att="bar">{"bar " x 40}</elt>
</doc>

<doc>
  <elt att="foo">foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo foo foo foo foo </elt>
  <elt att="bar">bar bar bar bar bar bar bar bar bar bar bar bar bar bar
    bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
    bar bar bar bar bar bar bar bar </elt>
</doc>

<doc>
  <elt att="foo">{"foo " x 40}{ "aaa" x 60}{ "foo "x20 }</elt>
  <elt att="bar">{"bar " x 40}</elt>
</doc>

<doc>
  <elt att="foo">foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
    foo foo foo foo foo foo foo foo
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafoo foo foo foo foo foo foo foo
    foo foo foo foo foo foo foo foo foo foo foo foo </elt>
  <elt att="bar">bar bar bar bar bar bar bar bar bar bar bar bar bar bar
    bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
    bar bar bar bar bar bar bar bar </elt>
</doc>