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.

  • No labels