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. 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. 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. 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 elements when the var has @type Collection Can contain 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 increment decrement append 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 ... ... No nesting in test cases, but sometimes more than one instance in a single test. for-each 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 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 "ent1" "ent2" 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 () for every condition clause that requires it (e.g. ), produce a var decl/ref required-type is the type of @actual e.g. 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