use strict;
use warnings;
use File::Object;
use IO::Scalar;
use Tags::Output::Indent;
use Test::More 'tests' => 5;
# Test.
my $obj = Tags::Output::Indent->new(
'auto_flush' => 1,
'output_handler' => \*STDOUT,
'xml' => 1,
);
my $ret;
tie *STDOUT, 'IO::Scalar', \$ret;
$obj->put(
['b', 'tag'],
['e', 'tag'],
);
untie *STDOUT;
my $right_ret = '<tag />';
is($ret, $right_ret);
# Test.
$obj->reset;
undef $ret;
tie *STDOUT, 'IO::Scalar', \$ret;
$obj->put(['b', 'tag']);
$obj->put(['e', 'tag']);
untie *STDOUT;
is($ret, $right_ret);
# Test.
$obj->reset;
undef $ret;
tie *STDOUT, 'IO::Scalar', \$ret;
$obj->put(
['b', 'tag'],
['d', 'data'],
['e', 'tag'],
);
untie *STDOUT;
$right_ret = <<'END';
<tag>
data
</tag>
END
chomp $right_ret;
is($ret, $right_ret);
# Test.
$obj->reset;
undef $ret;
tie *STDOUT, 'IO::Scalar', \$ret;
$obj->put(
['b', 'tag'],
['b', 'other_tag'],
['d', 'data'],
['e', 'other_tag'],
['e', 'tag'],
);
untie *STDOUT;
$right_ret = <<'END';
<tag>
<other_tag>
data
</other_tag>
</tag>
END
chomp $right_ret;
is($ret, $right_ret);
# Test.
$obj->reset;
undef $ret;
tie *STDOUT, 'IO::Scalar', \$ret;
$obj->put(['b', 'tag']);
$obj->put(['b', 'other_tag']);
$obj->put(['d', 'data']);
$obj->put(['e', 'other_tag']);
$obj->put(['e', 'tag']);
untie *STDOUT;
is($ret, $right_ret);