msopacua                Fri Oct 25 15:17:15 2002 EDT

  Added files:                 
    /php4/ext/xslt/tests        xslt-001.phpt xslt_process-001.phpt 
                                xslt_process-002.phpt xslt_set_object.phpt 
                                xslt_set_scheme_handlers-001.phpt 
                                xslt_setopt.phpt bug17791.phpt bug17931.phpt 
                                xslt.phpt 

  Modified files:              
    /php4/ext/xslt/tests        skipif.inc 
  Log:
  Tests renamed
  Remove dl() from skipif, for potential problems accross platforms and
  versions.
  
  
Index: php4/ext/xslt/tests/skipif.inc
diff -u php4/ext/xslt/tests/skipif.inc:1.1 php4/ext/xslt/tests/skipif.inc:1.2
--- php4/ext/xslt/tests/skipif.inc:1.1  Fri Oct  4 07:41:33 2002
+++ php4/ext/xslt/tests/skipif.inc      Fri Oct 25 15:17:15 2002
@@ -1,8 +1,4 @@
 <?php
-if(!extension_loaded("xslt") && ini_get("enable_dl")) {
-       $dlext = (substr(PHP_OS, 0, 4) == "WIN") ? ".dll" : ".so";
-       @dl("xlst$dlext");
-}
 if(!extension_loaded("xslt")) {
        die("skip\n");
 }

Index: php4/ext/xslt/tests/xslt-001.phpt
+++ php4/ext/xslt/tests/xslt-001.phpt
--TEST--
Memoryleak in error printing
--SKIPIF--
<?php include("skipif.inc"); ?>
--INI--
error_reporting=2047
display_errors=0
track_errors=1
--FILE--
<?php
$xmlfile = 'ext/xslt/tests/non-existent.xml';
$xslfile = 'ext/xslt/tests/non-existent.xsl';

$xh = xslt_create();
$result = xslt_process($xh, $xmlfile, $xslfile, NULL);
xslt_free($xh);

echo $php_errormsg."\n";
?>
--EXPECTF--
Sablotron error on line none: cannot open file '%s/ext/xslt/tests/non-existent.xsl'

Index: php4/ext/xslt/tests/xslt_process-001.phpt
+++ php4/ext/xslt/tests/xslt_process-001.phpt
--TEST--
Various ways to provide xml and xslt arguments and params
--SKIPIF--
<?php
include("skipif.inc");
if(!function_exists('utf8_encode')) {
        die("skip\n");
}
?>
--FILE--
<?php
error_reporting(E_ALL);
$xmlfile = 'ext/xslt/tests/test.xml';
$xslfile = 'ext/xslt/tests/args.xsl';
$xmldata = @implode('', @file($xmlfile));
$xslsheet = @implode('', @file($xslfile));

$xh = xslt_create();
$result = xslt_process($xh, $xmlfile, $xslfile);
print "$result\n";
$result = xslt_process($xh, 'arg:/_xml', $xslfile, NULL, array('/_xml' => $xmldata));
print "$result\n";
$result = xslt_process($xh, $xmlfile, 'arg:/_xsl', NULL, array('/_xsl' => $xslsheet));
print "$result\n";
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, array('/_xml' => $xmldata, 
'/_xsl' => $xslsheet));
print "$result\n";

// The same, with params
$xslfile = 'ext/xslt/tests/param.xsl';
$xslsheet = implode('', file($xslfile));
$params = array("Test has passed", "PHP QA®");

foreach($params AS $val)
{
        $val = utf8_encode($val);
        $result = xslt_process($xh, $xmlfile, $xslfile, NULL, NULL, array('insertion' 
=> $val));
        print "$result\n";
        $result = xslt_process($xh, 'arg:/_xml', $xslfile, NULL, array('/_xml' => 
$xmldata), array('insertion' => $val));
        print "$result\n";
        $result = xslt_process($xh, $xmlfile, 'arg:/_xsl', NULL, array('/_xsl' => 
$xslsheet), array('insertion' => $val));
        print "$result\n";
        $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, array('/_xml' => 
$xmldata, '/_xsl' => $xslsheet), array('insertion' => $val));
        print "$result\n";
}

xslt_free($xh);
?>
--EXPECT--
Test has passed
Test has passed
Test has passed
Test has passed
Test has passed
Test has passed
Test has passed
Test has passed
PHP QA®
PHP QA®
PHP QA®
PHP QA®

Index: php4/ext/xslt/tests/xslt_process-002.phpt
+++ php4/ext/xslt/tests/xslt_process-002.phpt
--TEST--
Crash xslt_process with reused handler (this test may take a while)
--SKIPIF--
<?php
include("skipif.inc");
if(!function_exists('utf8_encode')) {
        die("skip\n");
}
?>
--FILE--
<?php
error_reporting(E_ALL);
$xmlfile = 'ext/xslt/tests/test.xml';
$xslfile = 'ext/xslt/tests/param.xsl';
$xmldata = @implode('', @file($xmlfile));
$xslsheet = @implode('', @file($xslfile));

/*
 * Tested on a Cyrix 200MMX/128MB took 2 secs. Should be a reasonable margin.
 *
 * It's not meant as an actual speed test, but if it's slower than this,
 * there must be something significantly off in the php/sablot/expat trio.
 * Emulation OS's come to mind...
 */
$want_time = 6;

function make_param()
{
        $ret_val = '';
        $numchars = mt_rand(2,16);
        $illegal = array(0,256,512);
        for($i=0;$i<$numchars;$i++)
        {
                $char=0;
                while(in_array($char, $illegal))
                {
                        $char .= mt_rand(32, 512);
                }
                $ret_val .= chr($char);
        }

        return utf8_encode($ret_val);
}

function decode($string)
{
        $ret_val = '';
        for($i=0; $i<strlen($string);$i++)
        {
                $ret_val .= ord(substr($string,$i,1)) . " ";
        }
        return $ret_val;
}


$xh = xslt_create();

$t1 = time();
for ($i=0; $i<50; $i++)
{
        $val = make_param();
        $result = xslt_process($xh, $xmlfile, $xslfile, NULL, NULL, array('insertion' 
=> $val));
        if(!$result or $result != utf8_decode($val))
                print "Failed $i / ".utf8_decode($val).": $result\n\tDecode: " . 
decode(utf8_decode($val)) . "\n" ;
}
print "OK\n";
xslt_free($xh);
$t2 = time();
$op_time = $t2 - $t1;
if($op_time > $want_time)
        print "This test took more than $want_time seconds. Either you have a very 
slow / busy machine, or there's something very wrong with the speed. Your time: 
$op_time";
?>
--EXPECT--
OK

Index: php4/ext/xslt/tests/xslt_set_object.phpt
+++ php4/ext/xslt/tests/xslt_set_object.phpt
--TEST--
xslt_set_object function
--SKIPIF--
<?php
include("skipif.inc");
if(!function_exists('xslt_set_object')) {
        die("skip\n");
}
?>
--FILE--
<?php
error_reporting(E_ALL);
class XSLTTester
{
        var $_success = false;
        var $_success2 = false;

        function XSLTTester()
        {}
        
        // this function will register this object as the
        // callback object.
        function test1($xmlfile,$xslfile)
        {
                $xh = xslt_create();
                xslt_set_object($xh,$this);
                $handlers = array('get_all'=> 'handle_getall');
                xslt_set_scheme_handlers($xh,$handlers);
                $res = xslt_process($xh,$xmlfile,$xslfile);
                xslt_free($xh);
                return 1;
        }

        // this function will pass this object as in set_scheme_handler
        function test2($xmlfile,$xslfile)
        {
                $xh = xslt_create();
                $handlers = array('get_all'=> array(&$this,'handle_getall2'));
                xslt_set_scheme_handlers($xh,$handlers);
                $res = xslt_process($xh,$xmlfile,$xslfile);
                xslt_free($xh);
                return 1;
        }
        function handle_getall($xh,$scheme,$rest)
        {
                $this->_success = true;
                $rest = substr($rest,2);
                return implode('', file('ext/xslt/tests/'.$rest));
        }
        function handle_getall2($xh,$scheme,$rest)
        {
                $this->_success2 = true;
                $rest = substr($rest,2);
                return implode('', file('ext/xslt/tests/'.$rest));
        }
        function testSucceeded()
        {
                return $this->_success;
        }
        function test2Succeeded()
        {
                return $this->_success2;
        }
}

$xmlfile = 'ext/xslt/tests/test.xml';
$xslfile = 'ext/xslt/tests/xslt_set_object.xsl';

$testobj = new XSLTTester();
$testobj->test1($xmlfile,$xslfile);

$testobj->test2($xmlfile,$xslfile);

if ($testobj->testSucceeded())
        print "OK\n";
else
        print "FAILED\n";

if ($testobj->test2Succeeded())
        print "OK\n";
else
        print "FAILED\n";
        
?>
--EXPECT--
OK
OK

Index: php4/ext/xslt/tests/xslt_set_scheme_handlers-001.phpt
+++ php4/ext/xslt/tests/xslt_set_scheme_handlers-001.phpt
--TEST--
Set a non-existing scheme handler
--SKIPIF--
<?php include("skipif.inc"); ?>
--FILE--
<?php
function bar()
{
        return 1;
}
$xh = xslt_create();
$xmlstring = '<foo><barred /></foo>';
$xslstring = '<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/TR/1999/XSL/Transform";><xsl:for-each 
select="/"><xsl:value-of select="document(\'bogus://foo\')" 
/></xsl:for-each></xsl:stylesheet>';
xslt_set_scheme_handlers($xh, array('get_all' => 'foo'));
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, array('/_xml' => 
$xmlstring, '/_xsl' => $xslstring));
xslt_free($xh);
echo("OK");
?>
--EXPECT--
OK

Index: php4/ext/xslt/tests/xslt_setopt.phpt
+++ php4/ext/xslt/tests/xslt_setopt.phpt
--TEST--
xslt_set_opt function and public entities
--SKIPIF--
<?php
include("skipif.inc");
if(!function_exists('xslt_setopt')) {
        die("skip\n");
}
?>
--FILE--
<?php
error_reporting(E_ALL);
$xmlfile = 'ext/xslt/tests/public.xml';
$xslfile = 'ext/xslt/tests/args.xsl';

$xh = xslt_create();
// Tell Sablotron to process public entities
xslt_setopt($xh, XSLT_SABOPT_PARSE_PUBLIC_ENTITIES);

$result = xslt_process($xh, $xmlfile, $xslfile);
print "$result\n";

$xslstring = implode('', file($xslfile));
$xslstring = str_replace('method="text"', 'method="html"', $xslstring);
$xslstring = str_replace('<xsl:value-of select="." />', 
'<html><head><title>foo</title></head><body><p><xsl:value-of select="." 
/></p></body></html>', $xslstring);
// DEBUG: print $xslstring;

xslt_setopt($xh, XSLT_SABOPT_PARSE_PUBLIC_ENTITIES | XSLT_SABOPT_DISABLE_ADDING_META);
$result_nometa = xslt_process($xh, $xmlfile, 'arg:/_xsl', NULL, array('/_xsl' => 
$xslstring));
// DEBUG: print "$result_nometa\n";

xslt_setopt($xh, XSLT_SABOPT_PARSE_PUBLIC_ENTITIES);
$result_meta = xslt_process($xh, $xmlfile, 'arg:/_xsl', NULL, array('/_xsl' => 
$xslstring));
// DEBUG: print "$result_meta\n";

/* Also test if they're equal. That would mean, that disable-adding-meta is set to off
   at compile time and our call to xslt_setopt failed to reset that */
if($result_meta != $result_nometa && FALSE === stristr($result_nometa, '<meta 
http-equiv="Content-Type"'))
{
        print "OK\n";
}

xslt_free($xh);
?>
--EXPECT--
PHP QA®
OK

Index: php4/ext/xslt/tests/bug17791.phpt
+++ php4/ext/xslt/tests/bug17791.phpt
--TEST--
Pass long string to 'file' argument, bug #17791
--SKIPIF--
<?php include("skipif.inc"); ?>
--FILE--
<?php
$xmlstring = str_repeat('x', 512);
$xslstring = 'x';
$xh = xslt_create();
$result = @xslt_process($xh, $xmlstring, $xslstring);
@xslt_free($xh);
echo("OK");
?>
--EXPECT--
OK

Index: php4/ext/xslt/tests/bug17931.phpt
+++ php4/ext/xslt/tests/bug17931.phpt
--TEST--
Pass object for xslt_error_handler, bug #17931
--SKIPIF--
<?php include("skipif.inc"); ?>
--FILE--
<?php
class xsl {

        function xsl() {
                $this->_parser = xslt_create();
        }
        
        function set_error() {
                xslt_set_error_handler($this->_parser, array($this, 
'xslt_trap_error'));
                echo "OK";
        }
        
        function xslt_trap_error($parser, $errorno, $level, $fields) {
                return TRUE;
        }
        function clean() {
                xslt_free($this->_parser);
        }
}

$x = new xsl;
// work-around for possible '$this does not exist' bug in constructor
$x->set_error();
$x->clean();
?>
--EXPECT--
OK

Index: php4/ext/xslt/tests/xslt.phpt
+++ php4/ext/xslt/tests/xslt.phpt
--TEST--
Check for xslt presence
--SKIPIF--
<?php if (!extension_loaded("xslt")) print "skip"; ?>
--POST--
--GET--
--FILE--
<?php 
echo "xslt extension is available";
?>
--EXPECT--
xslt extension is available
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to