# Features covered: XSLT Transformations # # This file contains a collection of tests for the TclXSLT package. # This file tests the parser's performance on tranformations. # Sourcing this file into Tcl runs the tests and generates output # for errors. No output means no errors were found. # # Copyright (c) 2001-2002 Zveno Pty Ltd. # # $Id: transform.test,v 1.3 2002/03/01 03:33:22 balls Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { source [file join [pwd] [file dirname [info script]] defs.tcl] } if {[catch {package require dom 2.1}]} { catch {puts stderr "Cannot load dom 2.1 package"} return } if {[catch {package require xslt 1.0}]} { catch {puts stderr "Cannot load xslt 1.0 package"} return } set style1 [dom::libxml2::parse { Test value }] set xml1 [dom::libxml2::parse ] set xml2 [dom::libxml2::parse ] # In-memory tests test transform-1.1 {Single, simple XSLT Transformation} { set result [::xslt::transform $style1 $xml1] dom::libxml2::serialize $result } {Test value} test transform-1.2 {Multiple simple XSLT Transformations} { catch {unset ssheet} catch {unset result} set ssheet $style1 set result1 [::xslt::transform $ssheet $xml1] # Stylesheet is now cached set result2 [::xslt::transform $ssheet $xml1] list [::dom::libxml2::serialize $result1] [::dom::libxml2::serialize $result2] } [list {Test value} {Test value}] test transform-1.3 {Complex XSLT Transformation} { catch {unset ssheet} set ch [open transform-1.3.xsl] set ssheet [::dom::libxml2::parse [read $ch]] close $ch set ch [open transform-1.3.xml] set source [::dom::libxml2::parse [read $ch]] close $ch set ch [open transform-1.3-result.html] set expectedxml [read $ch] close $ch set result [::xslt::transform $ssheet $source] set resultxml [::dom::libxml2::serialize $result] set e [expr {$resultxml == $expectedxml}] if {$e == 0} { set ch [open result.xml w] puts $ch $resultxml close $ch set ch [open expected.xml w] puts $ch $expectedxml close $ch } set e } 1 # Source documents in files # Stylesheets with includes/imports # Source documents with external entities # Parameters test transform-5.1 {Pass parameters} { set style_5_1 [::dom::libxml2::parse { wrong value }] set result_5_1 [::xslt::transform $style_5_1 $xml1 test {correct value}] ::dom::libxml2::serialize $result_5_1 } {correct value} test transform-5.2 {Pass parameter, calculate result} { # Create a large source document set sourcexml_5_2 { } for {set i 0} {$i < 1000} {incr i} { append source " \n" } append source { } set source_5_2 [::dom::libxml2::parse $sourcexml_5_2] set style_5_2 [::dom::libxml2 { ooooXXXXoooo }] set result_5_2 [::xslt::transform $style_5_2 $source_5_2 test '100'] expr {[string length $result] == 1000 * 100 * [string length "ooooXXXXoooo"]} } {1} # cleanup ::tcltest::cleanupTests return