The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use lib qw (../lib lib);
use Test::More 'no_plan';
use strict;
use warnings;
use MKDoc::XML::Token;


my $file = (-e 't/data/sample.xml') ? 't/data/sample.xml' : 'data/sample.xml';


my $comment        = new MKDoc::XML::Token ('<!-- this is a comment -->');
my $declaration    = new MKDoc::XML::Token ('<!DECLARATION SOME BIG STOOPID DECLARATION>');
my $pi             = new MKDoc::XML::Token ('<?php 2 + 2?>');
my $open_tag_1     = new MKDoc::XML::Token ('<strong>');
my $open_tag_2     = new MKDoc::XML::Token ('<a href="foo">');
my $close_tag      = new MKDoc::XML::Token ('</strong>');
my $self_close_tag = new MKDoc::XML::Token ('<br />');
my $text           = new MKDoc::XML::Token ('this is some text');


{
    ok !$comment->tag_open();
    ok !$comment->tag_self_close();
    ok !$comment->tag_close();
    ok !$comment->pi();
    ok !$comment->declaration();
    ok  $comment->comment();
    ok !$comment->tag();
    ok  $comment->pseudotag();
    ok  $comment->leaf();
    ok !$comment->text();
}


{
    ok !$declaration->tag_open();
    ok !$declaration->tag_self_close();
    ok !$declaration->tag_close();
    ok !$declaration->pi();
    ok  $declaration->declaration();
    ok !$declaration->comment();
    ok !$declaration->tag();
    ok  $declaration->pseudotag();
    ok  $declaration->leaf();
    ok !$declaration->text();
}


{
    ok !$pi->tag_open();
    ok !$pi->tag_self_close();
    ok !$pi->tag_close();
    ok  $pi->pi();
    ok !$pi->declaration();
    ok !$pi->comment();
    ok !$pi->tag();
    ok  $pi->pseudotag();
    ok  $pi->leaf();
    ok !$pi->text();
}


{
    ok  $open_tag_1->tag_open();
    ok !$open_tag_1->tag_self_close();
    ok !$open_tag_1->tag_close();
    ok !$open_tag_1->pi();
    ok !$open_tag_1->declaration();
    ok !$open_tag_1->comment();
    ok  $open_tag_1->tag();
    ok !$open_tag_1->pseudotag();
    ok !$open_tag_1->leaf();
    ok !$open_tag_1->text();
    
    my $n = $open_tag_1->tag_open();
    ok ($n->{_open});
    ok (!$n->{_close});
}


{
    ok  $open_tag_2->tag_open();
    ok !$open_tag_2->tag_self_close();
    ok !$open_tag_2->tag_close();
    ok !$open_tag_2->pi();
    ok !$open_tag_2->declaration();
    ok !$open_tag_2->comment();
    ok  $open_tag_2->tag();
    ok !$open_tag_2->pseudotag();
    ok !$open_tag_2->leaf();
    ok !$open_tag_2->text();
    my $n = $open_tag_2->tag_open();
    ok ($n->{_open});
    ok (!$n->{_close});
}


{
    ok !$close_tag->tag_open();
    ok !$close_tag->tag_self_close();
    ok  $close_tag->tag_close();
    ok !$close_tag->pi();
    ok !$close_tag->declaration();
    ok !$close_tag->comment();
    ok  $close_tag->tag();
    ok !$close_tag->pseudotag();
    ok !$close_tag->leaf();
    ok !$close_tag->text();
    my $n = $close_tag->tag_close();
    ok (!$n->{_open});
    ok ($n->{_close});
}


{
    ok !$self_close_tag->tag_open();
    ok  $self_close_tag->tag_self_close();
    ok !$self_close_tag->tag_close();
    ok !$self_close_tag->pi();
    ok !$self_close_tag->declaration();
    ok !$self_close_tag->comment();
    ok  $self_close_tag->tag();
    ok !$self_close_tag->pseudotag();
    ok  $self_close_tag->leaf();
    ok !$self_close_tag->text();
    my $n = $self_close_tag->tag_self_close();
    ok ($n->{_open});
    ok ($n->{_close});
}


{
    ok !$text->tag_open();
    ok !$text->tag_self_close();
    ok !$text->tag_close();
    ok !$text->pi();
    ok !$text->declaration();
    ok !$text->comment();
    ok !$text->tag();
    ok !$text->pseudotag();
    ok  $text->leaf();
    ok  $text->text();
}

{
    my $tag = new MKDoc::XML::Token ('<p>');
    my $node = $tag->tag();
    is ($node->{_tag}, 'p');
}


{
    my $data = <<EOF;
    <input
      value="test"
      onfocus="if(t.value='';"
    />
EOF

    $data =~ s/^\s+//;
    $data =~ s/\s+$//;

    my $tag = new MKDoc::XML::Token ($data);
    $tag = $tag->leaf();
    is ($tag->{onfocus}, "if(t.value='';");
    is ($tag->{value}, "test");
}

1;


__END__