1. Shlomi Fish
  2. perl-XML-LibXML

Commits

Shlomi Fish  committed 3de96f4

Add more.

  • Participants
  • Parent commits c07137f
  • Branches default

Comments (0)

Files changed (1)

File t/09xpath.t

View file
-use Test;
 use strict;
 use warnings;
 
-BEGIN { plan tests => 57 };
+# Should be 53
+use Test::More tests => 53;
+
 use XML::LibXML;
 
 my $xmlstring = <<EOSTR;
 </foo>
 EOSTR
 
-my $parser = XML::LibXML->new();
+{
+    my $parser = XML::LibXML->new();
 
-my $doc = $parser->parse_string( $xmlstring );
-ok($doc);
+    my $doc = $parser->parse_string( $xmlstring );
 
-{
-    my @nodes = $doc->findnodes( "/foo/bar" );
-    ok( @nodes );
-    ok( scalar( @nodes ), 2 );
+    # TEST
+    ok($doc, 'Parsing successful.');
 
-    ok( $doc->isSameNode($nodes[0]->ownerDocument) );
+    {
+        my @nodes = $doc->findnodes( "/foo/bar" );
+        # TEST
+        is ( scalar( @nodes ), 2, 'Two bar nodes' );
 
-    my $compiled = XML::LibXML::XPathExpression->new("/foo/bar");
-    for (1..3) {
-      @nodes = $doc->findnodes( $compiled );
-      ok( @nodes );
-      ok( scalar( @nodes ), 2 );
+        # TEST
+        ok( $doc->isSameNode($nodes[0]->ownerDocument), 
+            'Doc is the same as the owner document.' );
+
+        my $compiled = XML::LibXML::XPathExpression->new("/foo/bar");
+        foreach my $idx (1..3) {
+            @nodes = $doc->findnodes( $compiled );
+            # TEST*3
+            is( scalar( @nodes ), 2, "Two nodes for /foo/bar - try No. $idx" );
+        }
+
+        # TEST
+        ok( $doc->isSameNode($nodes[0]->ownerDocument), 
+            'Same owner as previous one',
+        );
+
+        my $n = $doc->createElement( "foobar" );
+
+        my $p = $nodes[1]->parentNode;
+        $p->insertBefore( $n, $nodes[1] );
+
+        # TEST
+
+        ok( $p->isSameNode( $doc->documentElement ), 'Same as document elem' );
+        @nodes = $p->childNodes;
+        # TEST
+        is( scalar( @nodes ), 6, 'Found child nodes' );
     }
 
-    ok( $doc->isSameNode($nodes[0]->ownerDocument) );
+    {
+        my $result = $doc->find( "/foo/bar" );
+        # TEST
+        ok( $result, ' TODO : Add test name' );
+        # TEST
+        ok( $result->isa( "XML::LibXML::NodeList" ), ' TODO : Add test name' );
+        # TEST
+        is( $result->size, 2, ' TODO : Add test name' );
 
-    my $n = $doc->createElement( "foobar" );
+        # TEST
 
-    my $p = $nodes[1]->parentNode;
-    $p->insertBefore( $n, $nodes[1] );
+        ok( $doc->isSameNode($$result[0]->ownerDocument), ' TODO : Add test name' );
 
-    ok( $p->isSameNode( $doc->documentElement ) );
-    @nodes = $p->childNodes;
-    ok( scalar( @nodes ), 6 );
+        $result = $doc->find( XML::LibXML::XPathExpression->new("/foo/bar") );
+        # TEST
+        ok( $result, ' TODO : Add test name' );
+        # TEST
+        ok( $result->isa( "XML::LibXML::NodeList" ), ' TODO : Add test name' );
+        # TEST
+        is( $result->size, 2, ' TODO : Add test name' );
+
+        # TEST
+
+        ok( $doc->isSameNode($$result[0]->ownerDocument), ' TODO : Add test name' );
+
+        $result = $doc->find( "string(/foo/bar)" );
+        # TEST
+        ok( $result, ' TODO : Add test name' );
+        # TEST
+        ok( $result->isa( "XML::LibXML::Literal" ), ' TODO : Add test name' );
+        # TEST
+        ok( $result->string_value =~ /test 1/, ' TODO : Add test name' );
+
+        $result = $doc->find( "string(/foo/bar)" );
+        # TEST
+        ok( $result, ' TODO : Add test name' );
+        # TEST
+        ok( $result->isa( "XML::LibXML::Literal" ), ' TODO : Add test name' );
+        # TEST
+        ok( $result->string_value =~ /test 1/, ' TODO : Add test name' );
+
+        $result = $doc->find( XML::LibXML::XPathExpression->new("count(/foo/bar)") );
+        # TEST
+        ok( $result, ' TODO : Add test name' );
+        # TEST
+        ok( $result->isa( "XML::LibXML::Number" ), ' TODO : Add test name' );
+        # TEST
+        is( $result->value, 2, ' TODO : Add test name' );
+
+        $result = $doc->find( "contains(/foo/bar[1], 'test 1')" );
+        # TEST
+        ok( $result, ' TODO : Add test name' );
+        # TEST
+        ok( $result->isa( "XML::LibXML::Boolean" ), ' TODO : Add test name' );
+        # TEST
+        is( $result->string_value, "true", ' TODO : Add test name' );
+
+        $result = $doc->find( XML::LibXML::XPathExpression->new("contains(/foo/bar[1], 'test 1')") );
+        # TEST
+        ok( $result, ' TODO : Add test name' );
+        # TEST
+        ok( $result->isa( "XML::LibXML::Boolean" ), ' TODO : Add test name' );
+        # TEST
+        is( $result->string_value, "true", ' TODO : Add test name' );
+
+        $result = $doc->find( "contains(/foo/bar[3], 'test 1')" );
+        # TEST
+        ok( $result == 0, ' TODO : Add test name' );
+
+        # TEST
+
+        ok( $doc->exists("/foo/bar[2]"), ' TODO : Add test name' );
+        # TEST
+        is( $doc->exists("/foo/bar[3]"), 0, ' TODO : Add test name' );
+        # TEST
+        is( $doc->exists("-7.2"),1, ' TODO : Add test name' );
+        # TEST
+        is( $doc->exists("0"),0, ' TODO : Add test name' );
+        # TEST
+        is( $doc->exists("'foo'"),1, ' TODO : Add test name' );
+        # TEST
+        is( $doc->exists("''"),0, ' TODO : Add test name' );
+        # TEST
+        is( $doc->exists("'0'"),1, ' TODO : Add test name' );
+
+        my ($node) = $doc->findnodes("/foo/bar[1]" );
+        # TEST
+        ok( $node, ' TODO : Add test name' );
+        # TEST
+        ok ($node->exists("following-sibling::bar"), ' TODO : Add test name');
+    }
+
+    {
+        # test the strange segfault after xpathing
+        my $root = $doc->documentElement();
+        foreach my $bar ( $root->findnodes( 'bar' )  ) {
+            $root->removeChild($bar);
+        }
+        # TEST
+        ok(1, ' TODO : Add test name');
+        # warn $root->toString();
+
+        $doc =  $parser->parse_string( $xmlstring );
+        my @bars = $doc->findnodes( '//bar' );
+
+        foreach my $node ( @bars ) {
+            $node->parentNode()->removeChild( $node );
+        }
+        # TEST
+        ok(1, ' TODO : Add test name');
+    }
 }
 
 {
-    my $result = $doc->find( "/foo/bar" );
-    ok( $result );
-    ok( $result->isa( "XML::LibXML::NodeList" ) );
-    ok( $result->size, 2 );
-
-    ok( $doc->isSameNode($$result[0]->ownerDocument) );
-
-    $result = $doc->find( XML::LibXML::XPathExpression->new("/foo/bar") );
-    ok( $result );
-    ok( $result->isa( "XML::LibXML::NodeList" ) );
-    ok( $result->size, 2 );
-
-    ok( $doc->isSameNode($$result[0]->ownerDocument) );
-
-    $result = $doc->find( "string(/foo/bar)" );
-    ok( $result );
-    ok( $result->isa( "XML::LibXML::Literal" ) );
-    ok( $result->string_value =~ /test 1/ );
-
-    $result = $doc->find( "string(/foo/bar)" );
-    ok( $result );
-    ok( $result->isa( "XML::LibXML::Literal" ) );
-    ok( $result->string_value =~ /test 1/ );
-
-    $result = $doc->find( XML::LibXML::XPathExpression->new("count(/foo/bar)") );
-    ok( $result );
-    ok( $result->isa( "XML::LibXML::Number" ) );
-    ok( $result->value, 2 );
-
-    $result = $doc->find( "contains(/foo/bar[1], 'test 1')" );
-    ok( $result );
-    ok( $result->isa( "XML::LibXML::Boolean" ) );
-    ok( $result->string_value, "true" );
-
-    $result = $doc->find( XML::LibXML::XPathExpression->new("contains(/foo/bar[1], 'test 1')") );
-    ok( $result );
-    ok( $result->isa( "XML::LibXML::Boolean" ) );
-    ok( $result->string_value, "true" );
-
-    $result = $doc->find( "contains(/foo/bar[3], 'test 1')" );
-    ok( $result == 0 );
-
-    ok( $doc->exists("/foo/bar[2]") );
-    ok( $doc->exists("/foo/bar[3]"), 0 );
-    ok( $doc->exists("-7.2"),1 );
-    ok( $doc->exists("0"),0 );
-    ok( $doc->exists("'foo'"),1 );
-    ok( $doc->exists("''"),0 );
-    ok( $doc->exists("'0'"),1 );
-
-    my ($node) = $doc->findnodes("/foo/bar[1]" );
-    ok( $node );
-    ok ($node->exists("following-sibling::bar"));
+    # from #39178
+    my $p = XML::LibXML->new;
+    my $doc = $p->parse_file("example/utf-16-2.xml");
+    # TEST
+    ok($doc, ' TODO : Add test name');
+    my @nodes = $doc->findnodes("/cml/*");
+    # TEST
+    ok (@nodes == 2, ' TODO : Add test name');
+    # TEST
+    is ($nodes[1]->textContent, "utf-16 test with umlauts: \x{e4}\x{f6}\x{fc}\x{c4}\x{d6}\x{dc}\x{df}", ' TODO : Add test name');
 }
 
 {
-    # test the strange segfault after xpathing
-    my $root = $doc->documentElement();
-    foreach my $bar ( $root->findnodes( 'bar' )  ) {
-        $root->removeChild($bar);
-    }
-    ok(1);
-    # warn $root->toString();
-    
+    # from #36576
+    my $p = XML::LibXML->new;
+    my $doc = $p->parse_html_file("example/utf-16-1.html");
+    # TEST
+    ok($doc, ' TODO : Add test name');
+    use utf8;
+    my @nodes = $doc->findnodes("//p");
+    # TEST
+    ok (@nodes == 1, ' TODO : Add test name');
 
-    $doc =  $parser->parse_string( $xmlstring );
-    my @bars = $doc->findnodes( '//bar' );
-    
-    foreach my $node ( @bars ) {
-        $node->parentNode()->removeChild( $node );
-    }
-    ok(1);
+    # TEST
+    _utf16_content_test(\@nodes, 'nodes content is fine.');
 }
 
 {
-  # from #39178
-  my $p = XML::LibXML->new;
-  my $doc = $p->parse_file("example/utf-16-2.xml");
-  ok($doc);
-  my @nodes = $doc->findnodes("/cml/*");
-  ok (@nodes == 2);
-  ok ($nodes[1]->textContent, "utf-16 test with umlauts: \x{e4}\x{f6}\x{fc}\x{c4}\x{d6}\x{dc}\x{df}");
+    # from #36576
+    my $p = XML::LibXML->new;
+    my $doc = $p->parse_html_file("example/utf-16-2.html");
+    # TEST
+    ok($doc, ' TODO : Add test name');
+    my @nodes = $doc->findnodes("//p");
+    # TEST
+    is (scalar(@nodes), 1, 'Found one p');
+    # TEST
+    _utf16_content_test(\@nodes, 'p content is fine.');
 }
 
+sub _utf16_content_test
 {
-  # from #36576
-  my $p = XML::LibXML->new;
-  my $doc = $p->parse_html_file("example/utf-16-1.html");
-  ok($doc);
-  use utf8;
-  my @nodes = $doc->findnodes("//p");
-  ok (@nodes == 1);
-  skip(
-    (20700 > XML::LibXML::LIBXML_RUNTIME_VERSION)
-	? "UTF-16 and HTML broken in libxml2 < 2.7"
-	: 0,
-    $nodes[0]->textContent, "utf-16 test with umlauts: \x{e4}\x{f6}\x{fc}\x{c4}\x{d6}\x{dc}\x{df}");
+    local $Test::Builder::Level = $Test::Builder::Level + 1;
+    
+    my ($nodes_ref, $blurb) = @_;
+
+    SKIP:
+    {
+        if (! (20700 > XML::LibXML::LIBXML_RUNTIME_VERSION))
+        {
+            skip "UTF-16 and HTML broken in libxml2 < 2.7", 1;
+        }
+
+        is ($nodes_ref->[0]->textContent, 
+            "utf-16 test with umlauts: \x{e4}\x{f6}\x{fc}\x{c4}\x{d6}\x{dc}\x{df}",
+            $blurb,
+        );
+    }
 }
-
-{
-  # from #36576
-  my $p = XML::LibXML->new;
-  my $doc = $p->parse_html_file("example/utf-16-2.html");
-  ok($doc);
-  my @nodes = $doc->findnodes("//p");
-  ok (@nodes == 1);
-  skip(
-    (20700 > XML::LibXML::LIBXML_RUNTIME_VERSION)
-	? "UTF-16 and HTML broken in libxml2 < 2.7"
-	: 0,
-    $nodes[0]->textContent, "utf-16 test with umlauts: \x{e4}\x{f6}\x{fc}\x{c4}\x{d6}\x{dc}\x{df}");
-}