XML Metadata Test Coverage
To support interface and property, we need a separate test schema, interfaces, and test cases.
The standard mappings of Company model will use the following elements and attributes.
XML Element/attribute |
Tested by Company Model Completeness Test? |
Use Company Model for test |
|||
<!ELEMENT jdo ((package)+, (query)*, (extension)*)> |
y |
y |
|||
<!ELEMENT package (interface*, class*, sequence*, extension*)> |
y |
y |
|||
<!ATTLIST package name CDATA #REQUIRED> |
y |
y |
|||
<!ELEMENT interface ((property)*, (extension*))> |
. |
n |
|||
<!ATTLIST interface name CDATA #REQUIRED> |
. |
n |
|||
<!ATTLIST interface requires-extent (true |
false) ‘true’> |
. |
n |
||
<!ELEMENT property ((collection |
map |
array |
column)? , extension*)> |
. |
n |
<!ATTLIST property name CDATA #REQUIRED> |
. |
n |
|||
<!ATTLIST property column CDATA #IMPLIED> |
. |
n |
|||
<!ELEMENT class (datastore-identity?, implements*, inheritance?, join*, foreign-key*, index*, field*, version?, query*, fetch-group*, extension*)> |
y |
y |
|||
<!ATTLIST class name CDATA #REQUIRED> |
y |
y |
|||
<!ATTLIST class identity-type (application |
datastore |
nondurable) #IMPLIED> |
y |
y |
|
<!ATTLIST class table CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST class requires-extent (true |
false) ‘true’> |
y |
y |
||
<!ATTLIST class persistence-capable-superclass CDATA #IMPLIED> |
n/a |
. |
|||
<!ATTLIST class embedded-only (true |
false) #IMPLIED> |
y |
y |
||
<!ATTLIST class persistence-modifier (persistence-capable |
persistence-aware |
non-persistent) #IMPLIED> |
y |
y |
|
<!ELEMENT join (column*, index?, foreign-key?, extension*)> |
y |
y |
|||
<!ATTLIST join table CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST join column CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST join outer (true |
false) ‘false’> |
n |
yes |
||
<!ATTLIST join foreign-key CDATA #IMPLIED> |
y |
y |
|||
<!ELEMENT datastore-identity ((column)*, (extension)*)> |
y |
y |
|||
<!ATTLIST datastore-identity column CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST datastore-identity strategy CDATA #IMPLIED> |
y |
multiple mappings |
|||
<!ATTLIST datastore-identity sequence-name CDATA #IMPLIED> |
n |
multiple mappings |
|||
<!ATTLIST datastore-identity factory-class CDATA #IMPLIED> |
n |
multiple mappings |
|||
<!ELEMENT implements ((property-field)+, (extension)*)> |
separate schema |
. |
|||
<!ATTLIST implements name CDATA #REQUIRED> |
separate schema |
. |
|||
<!ELEMENT inheritance (discriminator?, extension*)> |
y |
y |
|||
<!ATTLIST inheritance strategy CDATA #IMPLIED> |
y |
multiple mappings |
|||
<!ELEMENT discriminator (column?, extension*)> |
y |
y |
|||
<!ATTLIST discriminator column CDATA #IMPLIED> |
y |
yes, multiple mappings |
|||
<!ATTLIST discriminator value CDATA #IMPLIED> |
y |
multiple mappings |
|||
<!ATTLIST discriminator strategy CDATA #IMPLIED> |
y |
multiple mappings |
|||
<!ELEMENT column (extension*)> |
y |
y |
|||
<!ATTLIST column name CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST column target CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST column target-field CDATA #IMPLIED> |
n |
special test xcalia |
|||
<!ATTLIST column jdbc-type CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST column sql-type CDATA #IMPLIED> |
n |
special mapping |
|||
<!ATTLIST column length CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST column scale CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST column nulls-allowed CDATA #IMPLIED> |
y |
y |
|||
<!ELEMENT property-field (extension*)> |
. |
. |
|||
<!ATTLIST property-field name #REQUIRED> |
. |
. |
|||
<!ATTLIST property-field field-name #REQUIRED> |
. |
. |
|||
<!ELEMENT field ((collection |
map |
array |
(column*))?, join?, element?, key?, value?, order?, embedded?, index?, foreign-key?, extension*)?> |
y |
y |
<!ATTLIST field name CDATA #REQUIRED> |
y |
y |
|||
<!ATTLIST field persistence-modifier (persistent |
transactional |
none) #IMPLIED> |
y |
y |
|
<!ATTLIST field table CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST field null-value (exception |
default |
none) ‘none’> |
y |
different mapping |
|
<!ATTLIST field default-fetch-group (true |
false) #IMPLIED> |
y |
different test case, different mappings |
||
<!ATTLIST field embedded (true |
false) #IMPLIED> |
y |
yes, but need different mappings |
||
<!ATTLIST field serialized (true |
false) #IMPLIED> |
n |
different mappings |
||
<!ATTLIST field dependent (true |
false) #IMPLIED> |
y |
y |
||
<!ATTLIST field value-factory CDATA #IMPLIED> |
n |
different test case different mapping |
|||
<!ATTLIST field foreign-key CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST field fetch-group CDATA #IMPLIED> |
n |
same test different mapping |
|||
<!ATTLIST field depth CDATA #IMPLIED> |
n |
different test case |
|||
<!ELEMENT foreign-key (column*, extension*)> |
y |
. |
|||
<!ATTLIST foreign-key deferred (true |
false) #IMPLIED> |
n |
different test case different mapping |
||
<!ATTLIST foreign-key delete-action (cascade |
restrict |
null |
default) #IMPLIED> |
n |
what does this mean? |
<!ATTLIST foreign-key update-action (cascade |
restrict |
null |
default) #IMPLIED> |
n |
what does this mean? |
<!ATTLIST foreign-key unique (true |
false) #IMPLIED> |
n |
different test case |
||
<!ATTLIST foreign-key name CDATA #IMPLIED> |
y |
y |
|||
<!ELEMENT collection (extension*)> |
y |
y |
|||
<!ATTLIST collection element-type CDATA #IMPLIED> |
y |
. |
|||
<!ATTLIST collection embedded-element (true |
false) #IMPLIED> |
n |
different test case different mapping |
||
<!ATTLIST collection dependent-element (true |
false) #IMPLIED> |
y |
y |
||
<!ELEMENT map (extension)*> |
n |
n |
|||
<!ATTLIST map key-type CDATA #IMPLIED> |
n |
n |
|||
<!ATTLIST map embedded-key (true |
false) #IMPLIED> |
n |
n |
||
<!ATTLIST map dependent-key (true |
false) #IMPLIED> |
n |
n |
||
<!ATTLIST map value-type CDATA #IMPLIED> |
n |
n |
|||
<!ATTLIST map embedded-value (true |
false) #IMPLIED> |
n |
n |
||
<!ATTLIST map dependent-value (true |
false) #IMPLIED> |
n |
n |
||
<!ELEMENT key (column*, index?, embedded?, foreign-key?, extension*)> |
n |
n |
|||
<!ATTLIST key column CDATA #IMPLIED> |
n |
n |
|||
<!ATTLIST key serialized (true |
false) #IMPLIED> |
n |
n |
||
<!ATTLIST key foreign-key CDATA #IMPLIED> |
n |
n |
|||
<!ELEMENT value (column*, index?, embedded?, foreign-key?, extension*)> |
n |
n |
|||
<!ATTLIST value column CDATA #IMPLIED> |
n |
n |
|||
<!ATTLIST value serialized (true |
false) #IMPLIED> |
n |
n |
||
<!ATTLIST value foreign-key CDATA #IMPLIED> |
n |
n |
|||
<!ELEMENT array (extension*)> |
n |
n |
|||
<!ATTLIST array embedded-element (true |
false) #IMPLIED> |
n |
n |
||
<!ATTLIST array dependent-element (true |
false) #IMPLIED> |
n |
n |
||
<!ELEMENT element (column*, index?, embedded?, foreign-key?, extension*)> |
y |
y |
|||
<!ATTLIST element column CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST element serialized (true |
false) #IMPLIED> |
n |
different model |
||
<!ATTLIST element foreign-key CDATA #IMPLIED> |
y |
y |
|||
<!ELEMENT order (column*, extension*)> |
n |
different model |
|||
<!ATTLIST order column CDATA #IMPLIED> |
n |
different model |
|||
<!ELEMENT fetch-group (fetch-group |
field)*> |
n |
. |
||
<!ATTLIST fetch-group name CDATA #REQUIRED> |
n |
. |
|||
<!ATTLIST fetch-group post-load (true |
false) #IMPLIED> |
n |
. |
||
<!ELEMENT embedded (field*, owner?, extension*)> |
y |
y |
|||
<!ELEMENT owner (field?, extension*)> |
n |
different model |
|||
<!ELEMENT sequence (extension*)> |
n |
same model, different mapping |
|||
<!ATTLIST sequence name CDATA #REQUIRED> |
n |
same model, different mapping |
|||
<!ATTLIST sequence sequence-name CDATA #REQUIRED> |
n |
same model, different mapping |
|||
<!ATTLIST sequence strategy (non-transactional |
transactional-contiguous |
transactional-holes-allowed) #REQUIRED> |
n |
same model, different mapping |
|
<!ELEMENT index (column*, extension*)> |
y |
y |
|||
<!ATTLIST index name CDATA #IMPLIED> |
y |
y |
|||
<!ATTLIST index unique (true |
false) ‘false’> |
y |
y |
||
<!ELEMENT query (extension*)> |
n/a |
. |
|||
<!ATTLIST query name CDATA #IMPLIED> |
n/a |
. |
|||
<!ATTLIST query language CDATA #IMPLIED> |
n/a |
. |
|||
<!ATTLIST query ignore-cache CDATA #IMPLIED> |
n/a |
. |
|||
<!ATTLIST query unmodifiable (true |
false) false> |
n/a |
. |
||
<!ELEMENT extension ANY> |
n/a |
. |
|||
<!ATTLIST extension vendor-name CDATA #REQUIRED> |
n/a |
. |
|||
<!ATTLIST extension key CDATA #IMPLIED> |
n/a |
. |
|||
<!ATTLIST extension value CDATA #IMPLIED> |
n/a |
. |
Next rev draft at Chapter18TestComponents.