forked from KolibriOS/kolibrios
353 lines
7.6 KiB
Plaintext
353 lines
7.6 KiB
Plaintext
|
Assertions
|
||
|
-------------------------------------------------------------------------------
|
||
|
fail
|
||
|
assert(false);
|
||
|
|
||
|
assertTrue
|
||
|
assertFalse
|
||
|
@actual is a variable name, of type boolean (or castable to boolean?)
|
||
|
or evaluate nested condition to boolean
|
||
|
|
||
|
assertNull
|
||
|
assertNotNull
|
||
|
@actual is a variable name
|
||
|
or evaluate nested condition
|
||
|
|
||
|
assertEquals
|
||
|
assertNotEquals
|
||
|
Test actual is equal (or not equal) to expected.
|
||
|
|
||
|
<assertEquals actual="result" expected="expectedResult" ignoreCase="true/false/auto" context="attribute/element" bitmask="..."/>
|
||
|
|
||
|
For Collections (or Lists), need to check neither list is null, then that both lists have the same size, then that all their elements are equal.
|
||
|
|
||
|
@ignoreCase="auto"
|
||
|
if contentType == "text/html":
|
||
|
if context == "attribute", do case insensitive test
|
||
|
if context == "element", do case sensitive test against expected.toUpperCase()
|
||
|
@context used in combination with ignoreCase="auto"
|
||
|
@bitmask used in DOM Level 3 only. Tests: (actual & bitmask) equals (expectedResult & bitmask) where bitmask is an int
|
||
|
|
||
|
Alternatively, can include nested statement (presumably as a substitute to @actual), but can't see this is used anywhere.
|
||
|
|
||
|
assertSame
|
||
|
Tests two objects for identity.
|
||
|
If not, call assertEquals()
|
||
|
Don't really understand the point of this assert
|
||
|
|
||
|
(note about assertNull, assertNotNull, assertEquals, assertNotEquals, assertSame)
|
||
|
Alternatively, can include nested statement (presumably as a substitute to @actual), but can't see this is used anywhere.
|
||
|
|
||
|
assertInstanceOf
|
||
|
Used in [hc_]namednodemapreturnattrnode.xml
|
||
|
Can use Node.getNodeType() to get runtime type
|
||
|
|
||
|
assertSize
|
||
|
Tests a Java Collection has the specified size.
|
||
|
|
||
|
<assertSize size="2" collection="notifications"/>
|
||
|
|
||
|
assertEventCount
|
||
|
(not used)
|
||
|
|
||
|
assertURIEquals
|
||
|
Compare pieces of the URI in @actual
|
||
|
|
||
|
@actual
|
||
|
@scheme
|
||
|
@path
|
||
|
@host
|
||
|
@file
|
||
|
@name
|
||
|
@query
|
||
|
@fragment
|
||
|
@isAbsolute boolean
|
||
|
|
||
|
assertImplementationException
|
||
|
DOM Level 2 Events dispatchEvent01.xml
|
||
|
|
||
|
assertDOMException
|
||
|
Tests that a DOMException is thrown with a specified code. Try/catching not nested.
|
||
|
|
||
|
<assertDOMException id="setValue_throws_NO_MODIFICATION_ERR">
|
||
|
<NO_MODIFICATION_ALLOWED_ERR>
|
||
|
<removeChild obj="attrNode" oldChild="textNode" var="removedNode"/>
|
||
|
</NO_MODIFICATION_ALLOWED_ERR>
|
||
|
</assertDOMException>
|
||
|
|
||
|
boolean success = false;
|
||
|
try {
|
||
|
removedNode = attrNode.removeChild(textNode);
|
||
|
} catch (DOMException ex) {
|
||
|
success = (ex.code == DOMException.NO_MODIFICATION_ALLOWED_ERR);
|
||
|
}
|
||
|
assertTrue(success);
|
||
|
|
||
|
assertLowerSeverity
|
||
|
DOM Level 3 Core only
|
||
|
|
||
|
Conditions
|
||
|
-------------------------------------------------------------------------------
|
||
|
same
|
||
|
(not used)
|
||
|
|
||
|
equals
|
||
|
notEquals
|
||
|
less
|
||
|
|
||
|
lessOrEquals
|
||
|
(not used)
|
||
|
|
||
|
greater
|
||
|
|
||
|
greaterOrEquals
|
||
|
(not used)
|
||
|
|
||
|
isNull
|
||
|
(not used)
|
||
|
|
||
|
notNull
|
||
|
and
|
||
|
or
|
||
|
|
||
|
xor
|
||
|
(not used)
|
||
|
|
||
|
not
|
||
|
|
||
|
instanceOf
|
||
|
(not used)
|
||
|
|
||
|
isTrue
|
||
|
isFalse
|
||
|
|
||
|
hasSize
|
||
|
(not used)
|
||
|
|
||
|
contentType
|
||
|
|
||
|
contains
|
||
|
DOM Level 3 Core and LS only
|
||
|
|
||
|
hasFeature
|
||
|
calls DOMImplementation.hasFeature()
|
||
|
|
||
|
@feature quoted string e.g. "XML"
|
||
|
@version quoted string e.g. "1.0"
|
||
|
@value boolean
|
||
|
@var variable to assign the result to
|
||
|
@obj name of var holding the DOMImplementation
|
||
|
|
||
|
implementationAttribute
|
||
|
pass param to the test suite's DOMTestDocumentBuilderFactory (e.g. validating)
|
||
|
|
||
|
|
||
|
Statements
|
||
|
-------------------------------------------------------------------------------
|
||
|
var
|
||
|
Can contain nested <member> elements when the var has @type Collection
|
||
|
|
||
|
Can contain <handleError> element when the var type @type DOMErrorHandler.
|
||
|
This then creates an class implementing DOMErrorHandler, overriding the handleError() method.
|
||
|
This is only used in DOM Level 3 Core.
|
||
|
|
||
|
@name variable name
|
||
|
@type type of variable
|
||
|
@value initially assigned value
|
||
|
@isNull boolean assign initial value of NULL (essentially mutually exclusive with @value ?)
|
||
|
|
||
|
assign
|
||
|
<assign var="..." value="..."/>
|
||
|
|
||
|
increment
|
||
|
decrement
|
||
|
<increment var="..." value="..."/>
|
||
|
|
||
|
append
|
||
|
<append collection="..." item="..."/>
|
||
|
Append an object to the end of a Collection.
|
||
|
In Java, this is implemented with an ArrayList.
|
||
|
|
||
|
plus
|
||
|
subtract
|
||
|
mult
|
||
|
divide
|
||
|
load
|
||
|
|
||
|
if
|
||
|
while
|
||
|
|
||
|
try
|
||
|
Fail if reach the end of the try without throwing an exception specified in <catch>
|
||
|
<try>
|
||
|
...
|
||
|
<catch>
|
||
|
<DOMException code="..."/>
|
||
|
<DOMException code="..."/>
|
||
|
...
|
||
|
</catch>
|
||
|
</try>
|
||
|
|
||
|
No nesting in test cases, but sometimes more than one instance in a single test.
|
||
|
|
||
|
for-each
|
||
|
<for-each collection="..." member="...">
|
||
|
|
||
|
comment
|
||
|
Only used in DOM Level 3 XPath.
|
||
|
|
||
|
return
|
||
|
Only used in DOM Level 2/3. Returns immediately from method call with optional @value
|
||
|
|
||
|
userObj
|
||
|
(not used)
|
||
|
|
||
|
atEvents
|
||
|
capturedEvents
|
||
|
bubbledEvents
|
||
|
allEvents
|
||
|
DOM Level 2 Events only
|
||
|
|
||
|
createXPathEvaluator
|
||
|
DOM Level 3 XPath only
|
||
|
|
||
|
getResourceURI
|
||
|
DOM Level 3 LS only
|
||
|
|
||
|
substring
|
||
|
<substringData var="..." obj="..." offset="..." count="..."/>
|
||
|
Calls @obj.substringData() where obj is an instance of CharacterData
|
||
|
|
||
|
createTempURI
|
||
|
DOMImplementationRegistry.newInstance
|
||
|
|
||
|
allErrors
|
||
|
Only used in DOM Level 3
|
||
|
Calls org.w3c.domts.DOMErrorMonitor.getAllErrors(), which is an instance of DOMErrorHandler
|
||
|
|
||
|
allNotifications
|
||
|
operation
|
||
|
key
|
||
|
dst
|
||
|
DOM Level 3 Core only
|
||
|
|
||
|
Datatypes
|
||
|
-------------------------------------------------------------------------------
|
||
|
int
|
||
|
short
|
||
|
double
|
||
|
boolean
|
||
|
Primitives
|
||
|
|
||
|
DOMString
|
||
|
|
||
|
List
|
||
|
In Java, an ArrayList instance typed as a List
|
||
|
|
||
|
Collection
|
||
|
In Java, an ArrayList instance typed as a Collection
|
||
|
|
||
|
<var name="expectedResult" type="Collection">
|
||
|
<member>"ent1"</member>
|
||
|
<member>"ent2"</member>
|
||
|
|
||
|
EventMonitor
|
||
|
DOM Level 2 Events only
|
||
|
|
||
|
DOMErrorMonitor
|
||
|
DOM Level 3 only
|
||
|
|
||
|
UserDataMonitor
|
||
|
UserDataNotification
|
||
|
LSInputStream
|
||
|
DOM Level 3 Core only
|
||
|
|
||
|
|
||
|
Attr
|
||
|
CDATASection
|
||
|
CharacterData
|
||
|
Comment
|
||
|
Document
|
||
|
DocumentFragment
|
||
|
DocumentType
|
||
|
DOMImplementation
|
||
|
Element
|
||
|
Entity
|
||
|
EntityReference
|
||
|
NamedNodeMap
|
||
|
Node
|
||
|
NodeList
|
||
|
Notation
|
||
|
ProcessingInstruction
|
||
|
Text
|
||
|
DOM types
|
||
|
|
||
|
-------------------------------------------------------------------------------
|
||
|
WHAT ABOUT RETURN VALUES?
|
||
|
for method calls and attribute getters (&result)
|
||
|
|
||
|
ASSERTIONS (other statements?)
|
||
|
[temp variables for assert params]
|
||
|
assertFoo(...)
|
||
|
for @expected, produce a var decl/ref
|
||
|
required-type is the type of @actual
|
||
|
|
||
|
|
||
|
CONDITIONS IN CONTROL STRUCTURES
|
||
|
[temp variables for condition params]
|
||
|
if (<condition>)
|
||
|
for every condition clause that requires it (e.g. <equals>), produce a var decl/ref
|
||
|
required-type is the type of @actual
|
||
|
e.g.
|
||
|
<var name="myVar" type="DOMString"/>
|
||
|
<equals actual="myVar" expected=""beans""/>
|
||
|
required-type is DOMString
|
||
|
|
||
|
METHOD CALL
|
||
|
[temp variables for method params]
|
||
|
[temp variable to hold method result]
|
||
|
getElementsByTagName(doc, param_a, param_b, param_c, &result)
|
||
|
[assign temp variable to real result var]
|
||
|
|
||
|
produce var decl/ref for each param: a, b, c
|
||
|
required-type is the method param's type in the domspec
|
||
|
|
||
|
|
||
|
ATTRIBUTE SET
|
||
|
[temp variables for setting attribute]
|
||
|
setFoo(node, param)
|
||
|
|
||
|
required-type is the attribute's type in the domspec
|
||
|
|
||
|
|
||
|
ATTRIBUTE GET
|
||
|
[temp variable to hold getter result]
|
||
|
getFoo(node, &result)
|
||
|
[assign temp variable to real result var]
|
||
|
|
||
|
call produce-var-reference in getFoo() call to generate &result
|
||
|
call produce-var-assignment after getFoo() to convert the temp result into the desired result
|
||
|
|
||
|
|
||
|
PSEUDO TEMPLATES
|
||
|
template name="produce-var-declaration"
|
||
|
param name="var-or-literal"
|
||
|
param name="required-type"
|
||
|
if (needs temp variable)
|
||
|
declare and assign new temporary variable $var_x$
|
||
|
/if
|
||
|
|
||
|
template name="produce-var-reference"
|
||
|
choose
|
||
|
when (needs temp variable)
|
||
|
print temporary variable $var_x$ using generate-id()
|
||
|
when (needs cast)
|
||
|
call-template name="cast"
|
||
|
otherwise
|
||
|
$var-or-literal
|
||
|
/choose
|
||
|
|
||
|
template name="produce-var-assignment"
|
||
|
if (needs temp variable)
|
||
|
$var-or-literal = conversion_function($var_x$);
|
||
|
/if
|