MITRE
TransforMiiX Test Cases

This document serves to test XPath and XSLT functions.

Boolean Functions
Function: | boolean boolean( object )
Test: | <xsl:value-of select="boolean(descendant::z)"/>
Desired Result: | true
Result: | true
Test: | <xsl:value-of select="boolean(*)"/>
Desired Result: | true
Result: | true
Function: | boolean false()
Test: | <xsl:value-of select="false()"/>
Desired Result: | false
Result: | false
Function: | boolean true()
Test: | <xsl:value-ofselect="true()"/>
Desired Result: | true
Result: | true
Function: | boolean not( boolean )
Test: | <xsl:value-of select="not(true())"/>
Desired Result: | false
Result: | false

NodeSet Functions
Function: | number count( node-set )
Test: | <xsl:value-of select="count(*)"/>
Desired Result: | 4
Result: | 4
Function: | number position()
Test: | <xsl:value-of select="*[position()=3]"/>
Desired Result: | z
Result: | z
Function: | number last()
Test: | <xsl:value-of select="*[last()-1]"/>
Desired Result: | z
Result: | z
Function: | String local-name( node-set? )
Test: | <xsl:value-of select="local-name(names/abc:test-name)"/>
Desired Result: | test-name
Result: | test-name
Function: | String local-name( node-set? )
Test: | <xsl:value-of select="local-name()"/>
Desired Result: | document
Result: | document
Function: | String name( node-set? )
Test: | <xsl:value-of select="name(names/abc:test-name)"/>
Desired Result: | abc:test-name
Result: | abc:test-name
Function: | String namespace-uri( node-set? )
Test: | <xsl:value-of select="namespace-uri(names/abc:test-name)"/>
Desired Result: | abc
Result: | abc

String Functions
Function: | string string( object? )
Test: | <xsl:value-of select="string()"/>
Desired Result: | x y z
Result: | x y z
Test: | <xsl:value-of select="string('xyz')"/>
Desired Result: | xyz
Result: | xyz
Function: | string concat( string, string, string* )
Test: | <xsl:value-of select="concat('abc', 'def')"/>
Desired Result: | abcdef
Result: | abcdef
Function: | boolean contains( string, string )
Test: | <xsl:value-of select="contains('abcdef', 'efg')"/>
Desired Result: | false
Result: | false
Test: | <xsl:value-of select="contains('abcdef', 'bcd')"/>
Desired Result: | true
Result: | true
Function: | boolean starts-with( string, string )
Test: | <xsl:value-of select="starts-with('abcdef', 'abc')"/>
Desired Result: | true
Result: | true
Test: | <xsl:value-of select="starts-with('abcdef', 'xyz')"/>
Desired Result: | false
Result: | false
Function: | number string-length( string? )
Test: | <xsl:value-of select="string-length(name())"/>
Desired Result: | 8
Result: | 8
Test: | <xsl:value-of select="string-length('abcdef')"/>
Desired Result: | 6
Result: | 6
Function: | string substring( string, number, number? )
Test: | <xsl:value-of select="substring('12345', 1.5, 2.6)"/>
Desired Result: | 234
Result: | 234
Test: | <xsl:value-of select="substring('12345', 0, 3)"/>
Desired Result: | 12
Result: | 12
Test: | <xsl:value-of select="substring('12345', 0 div 0, 3)"/>
Desired Result: |
Result: |
Test: | <xsl:value-of select="substring('12345', 1, 0 div 0)"/>
Desired Result: |
Result: |
Test: | <xsl:value-of select="substring('12345', -42, 1 div 0)"/>
Desired Result: | 12345
Result: | 12345
Test: | <xsl:value-of select="substring('12345', -1 div 0, 1 div 0)"/>
Desired Result: |
Result: |
Function: | string substring-after( string, string )
Test: | <xsl:value-of select="substring-after('1999/04/01', '/')"/>
Desired Result: | 04/01
Result: | 04/01
Function: | string substring-before( string, string )
Test: | <xsl:value-of select="substring-before('1999/04/01', '/')"/>
Desired Result: | 1999
Result: | 1999
Function: | string translate( string, string, string )
Test: | <xsl:value-of select="translate('bar', 'abc', 'ABC')"/>
Desired Result: | BAr
Result: | BAr
Test: | <xsl:value-of select="translate('---aaa---', 'abc-', 'ABC')"/>
Desired Result: | AAA
Result: | AAA

Number Functions
Function: | number number( object? )
Test: | <xsl:value-of select="number()"/>
Desired Result: | NaN
Result: | NaN
Test: | <xsl:value-of select="number('654.97')"/>
Desired Result: | 654.97
Result: | 654.97
Function: | number round( number )
Test: | <xsl:value-of select="round(1.75)"/>
Desired Result: | 2
Result: | 2
Test: | <xsl:value-of select="round(1.25)"/>
Desired Result: | 1
Result: | 1
Test: | <xsl:value-of select="round(-0.5)"/>
Desired Result: | 0
Result: | 0
Test: | <xsl:value-of select="round(0.5)"/>
Desired Result: | 1
Result: | 1
Function: | number floor( number )
Test: | <xsl:value-of select="floor(2.2)"/>
Desired Result: | 2
Result: | 2
Test: | <xsl:value-of select="floor(-2.2)"/>
Desired Result: | -3
Result: | -3
Function: | number ceiling( number )
Test: | <xsl:value-of select="ceiling(2.2)"/>
Desired Result: | 3
Result: | 3
Test: | <xsl:value-of select="ceiling(-2.2)"/>
Desired Result: | -2
Result: | -2

XSLT Extension Functions
Function: | string generate-id( NodeSet? )
Test: | <xsl:value-of select="generate-id()"/> Note: This function will generate a unique id for the current node.I don't what this will be exactly, until run-time
Desired Result: | id{some-number}.0.1
Result: | id134934984.0.1
Test: | <xsl:value-of select="generate-id(..)"/> Note: This function will generate a unique id for the parent of the current node.I don't what this will be exactly, until run-time
Desired Result: | id{some-number}
Result: | id134934984