TestPlan-UserAgent

From Fonts WG

Test Plan - User Agent

Plan for testing all the assertions which apply to User Agents for WOFF. All of these can be tested with a web page consisting of content (HTML, SVG), stylesheet (CSS), a WOFF (which may contain errors, for some tests.) and a font that must be installed locally.


The work on the test suite that has been completed can bee seen in CVS or by visiting this page.



Text color highlights on this page are as follows: red text indicates questions that need to be addressed by the Working Group, gray text indicates portions of the test suite that are not yet implemented and blue text indicates initial ideas about how the tests can be presented to User Agents.

Valid WOFF File Tests

These files exercise the main parts of the WOFF data structure to create valid files.

For each of these create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF.

Name Description
Valid WOFF 1 CFF flavor, has no metadata, has no private data.
Valid WOFF 2 CFF flavor, has metadata, has no private data.
Valid WOFF 3 CFF flavor, has no metadata, has private data.
Valid WOFF 4 CFF flavor, has metadata, has private data.
Valid WOFF 5 TTF flavor, has no metadata, has no private data.
Valid WOFF 6 TTF flavor, has metadata, has no private data.
Valid WOFF 7 TTF flavor, has no metadata, has private data.
Valid WOFF 8 TTF flavor, has metadata, has private data.

Origin Tests

same-origin

Testable. Requires web servers on two different domains (but W3C has several domains available). Pass if the woff is not used.

doc-origin

Testable, similar to same-origin test but with doc and stylesheet on different servers.

cors

Testable, page with two fonts, on is served without CORS headers and one with. Pass if only one font is rendered.

css3font-available

Testable, needs a master page with two subpages (iframe, etc) one of which references a woff file with @font-face and the other references it just by name. Pass if the second subpage does not use the font.

File Structure Tests

Header

signature (nomagicnumber-reject)

Create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

Description Test Case Test Case Notes
Header signature contains a value other than "wOFF" (0x774F4646) Header Signature Invalid Value The signature field contains "XXXX" instead of "wOFF".

length

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

This should be a testable assertion in the WOFF Header section of the spec. It is labeled as a MUST in the Summary of Conformance Requirements.

Description Test Case Test Case Notes
Header contains a value shorter than the actual data. Header Length Too Short The length field contains a value that is four bytes shorter than the actual data.
Header contains a value longer than the actual data. Header Length Too Long The length field contains a value that is four bytes longer than the actual data.

numTables

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

Description Test Case Test Case Notes
The numTables field is set to zero. Header Number of Tables Set to Zero The header contains 0 in the numTables field. A table directory and table data are present.

totalSfntSize (totalsize-longword-reject)

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

Description Test Case Test Case Notes
The totalSfntSize is not a multiple of four. Header totalSfntSize Not a Multiple of 4 The totalSfntSize field contains a value that is missing padding bytes between two tables.
The totalSfntSize does not equal the the sum of the header, directory and table data. Header Total SFNT Size Too Long The totalSfntSize field contains a value that is is four bytes too long.
The totalSfntSize does not equal the the sum of the header, directory and table data. Header Total SFNT Size Too Short The totalSfntSize field contains a value that is is four bytes too short.

reserved (reserved-reject)

Create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

Description Test Case Test Case Notes
The header reserved field contains a value other than zero. Header Reserved Invalid Value The header reserved field contains 1.

Data Blocks

Extraneous Data (extraneous-reject)

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

Description Test Case Test Case Notes
Extraneous data between the table directory and the table data. Extraneous Data Between Directory and Table Data There are four null bytes between the table directory and the table data.
Extraneous data between two tables in the table data. Extraneous Data Between Tables There are four null bytes between each of the table data blocks.
Extraneous data after the table data with no metadata or private data present. Extraneous Data After Table Data There are four null bytes after the table data block and there is no metadata or private data.
Extraneous data between the table data and the metadata. Extraneous Data Between Table Data and Metadata There are four null bytes between the table data and the metadata.
Extraneous data between the table data and the private data. Extraneous Data Between Table Data and Private Data There are four null bytes between the table data and the private data.
Extraneous data between the metadata and the private data. Extraneous Data Between Metdata and Private Data There are four null bytes between the metadata and the private data.
Extraneous data after the metadata with no private data present. Extraneous Data After Metadata There are four null bytes after the metadata and there is no private data.
Extraneous data after the private data. Extraneous Data After Private Data There are four null bytes after the private data.

Overlaps (overlap-reject)

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

Description Test Case Test Case Notes
Tables in the table data overlap. Table Data Blocks Overlap The second table's offset is four bytes before the end of the first table's data.
The metadata overlaps the table data. Metadata Overlaps Table Data The metadata offset is four bytes before the end of the table data.
The private data overlaps the table data. Private Data Overlaps Table Data The private data offset is four bytes before the end of the table data.
The private data overlaps the metadata. Private Data Overlaps Metadata The private data offset is four bytes before the end of the metadata.

Another approach to making the files invalid would be to increase the length in each data block by four bytes. The effect would be the same as the current cases, but maybe these kinds of bad files should also be part of the test suite for completeness. It may also be a good idea to create test cases that have offsets that are before the end of the header or the end of the table directory.

Metadata and Private Data Overlaps (metaprivate-overlap-reject)

Testable, needs several subtests:

  • metadata with overlap offset
  • metadata with overlap extent
  • private with overlap offset
  • private with overlap extent

Pass if all four fonts not rendered.

These are already tested by overlap-reject (above). Do these tests need to be duplicated for this testable assertion? Alternatively, should the second conformance requirement be changed to lowercase must, with a link to the earlier conformance requirement?

Table Directory

4-Byte Boundary

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

Description Test Case Test Case Notes
One table is not padded and the next table does not begin on a four byte boundary. Font Table Data Not On 4-Byte Boundary Two vendor-space tables are inserted into the table directory and data: AAAA is three bytes long. AAAB is five bytes long. AAAA is not padded so that the AAAB table does not begin on a four-byte boundary. The tables that follow are all aligned correctly.
The final table in the table data is not padded. Final Font Table Data Not Padded The final table in the table data block is not padded to a 4-byte boundary.

Overlaps (diroverlap-reject)

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

Description Test Case Test Case Notes
The table data offset is after the end of the file. Font Table Data Offset Past End of File The offset to the data block for the final table data is four bytes beyond the end of the file.
The table data offset + the length creates a value that is past the end of the file. Font Table Data Offset+Length Past End of File The defined length for the final table causes the data block to be four bytes beyond the end of the file.
The table data overlaps the metadata. Font Table Data Overlaps Metadata The final table starts four bytes after the start of the metadata. This will fail for another reason: the calculated length (header length + directory length + entry lengths + metadata length) will not match the stored length in the header.
The table data overlaps the private data. Font Table Data Overlaps Private Data The final table starts four bytes after the start of the private data. This will fail for another reason: the calculated length (header length + directory length + entry lengths + private data length) will not match the stored length in the header.
The table data overlaps another table. Two Table Data Blocks Overlap The final table starts four bytes before the end of the previous table. This will fail for another reason: the calculated length (header length + directory length + entry lengths) will not match the stored length in the header.

compLength (compLength)

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

Description Test Case Test Case Notes
Compressed table data is larger than original data. Font Table Data Compressed Length Greater Than Original Length At least one table's compLength is larger than the origLength.

origLength (origLength)

Description Test Case Test Case Notes
origLength in table directory entry is greater than the decompressed data length. Original Length Less Than Decompressed Length One table has table that when decompressed has a length that is four bytes longer than the value listed in origLength.
origLength in table directory entry is less than the decompressed data length. Original Length Greater Than Decompressed Length One table has table that when decompressed has a length that is four bytes shorter than the value listed in origLength.

Table Data

Compression (mustuncompress)

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font.

Description Test Case Test Case Notes
No tables compressed. Font Table Data Not Compressed None of the tables are stored in compressed form.
Some tables compressed. Font Table Data Is Compressed When Possible All of the tables that will be smaller when compressed are stored in their compressed state.
Not all of the tables that will be smaller after compression are compressed. Not All Font Table Data Is Compressed When Possible Only one of the tables that would be smaller when compressed is stored in the compressed state.
The font data tables are compressed inconsistently. Font Table Data Is Compressed At Different Levels The font data tables are compressed using at least two different levels.

Compression Format

Create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "FAIL" when displayed with the WOFF file and "PASS" when displayed with the locally installed font.

This will be tagged as a UA testable assertion.

Description Test Case Test Case Notes
Table data can not be decompressed with zlib. Font Table Data Invalid Compressed Data One compressed table has had its compressed data replaced with \01 making it incompatible with zlib.

Metadata

No Effect (metadata-noeffect)

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font.

Description Test Case Test Case Notes
WOFF does not have metadata. No Metadata Present The file has no metadata.
WOFF has metadata. Metadata Present The file has metadata.

metaOrigLength

This will be tagged as a UA testable assertion.

Description Test Case Test Case Notes
metaOrigLength in header is greater than the decompressed metadata length. Decompressed Metadata Length Greater Than metaOrigLength The metadata decompressed to a length that is 1 byte greater than the length defined in metaOrigLength
metaOrigLength in header is less than the decompressed metadata length. Decompressed Metadata Length Less Than metaOrigLength The metadata decompressed to a length that is 1 byte smaller than the length defined in metaOrigLength

Private Data

No Effect (private-noeffect)

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font.

Description Test Case Test Case Notes
WOFF does not have private data. No Private Data Present The file has no private data.
WOFF has private data. Private Data Present The file has private data.

Metadata Display Tests

These are the tests for the display of metadata only. Note that display of metadata is optional, so user agents that do not claim to display woff metadata can skip all these tests as not applicable.

Authoritative (metadata-authoritative)

Create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Description Test Case Test Case Description
Strings in the metadata and the name table are different. Metadata Out of Sync With name Table The name table and metadata fields are out of sync. The name table contains FAIL and the metadata contains PASS for unique id, vendor name, vendor url, credit name, credit url, description, license, license url, copyright and trademark.

Invalid (invalid-mustignore)

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Description Test Case Test Case Notes
Metadata is not properly compressed. Metadata Invalid Compression The metadata is stored in an uncompressed state and therefore does not have the proper compression format.
Unescaped < in Content The text element in the description element contains an unescaped <.
Unescaped & in Content The text element in the description element contains an unescaped &.
Mismatched Element Tags One element begins with <description> but ends with </mismatch>.
Unclosed Element Tag The text element element in the description element is not closed.
Case Mismatch in Element Tags The <description> element is closed with <DESCRIPTION>.
More Than One Root Element The metadata root element occurs twice.
Unknown Encoding The xml encoding is set to 'VSCACS-GFV-X-CQ34QTAB2Q-IS-NOT-A-VALID-ENCODING'.
UTF-8 Encoding The xml encoding is set to UTF-8.
UTF-16 Encoding The xml encoding is set to UTF-16.
Invalid Encoding The xml encoding is set to ISO-8859-1.

Schema Validity

metadata Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Description Test Case Test Case Notes
Valid metadata Element The metadata element matches the schema.
No version Attribute in metadata Element The metadata element does not contain the required version attribute. This should be linked to a testable assertion in the spec.
Invalid version Attribute Value in metadata Element The metadata element version attribute is set to 'ABC'. Is 1.0 a requirement?
Unknown Attrbute in metadata Element The metadata element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element metadata Element The metadata element contains an unknown child element. This should be linked to a testable assertion in the spec.

uniqueid Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid uniqueid Element The uniqueid element matches the schema.
No uniqueid Element The uniqueid element doesn't exist. This should be linked to a testable assertion in the spec.
More Than One uniqueid Element The uniqueid element occurs twice. This should be linked to a testable assertion in the spec.
No id Attribute in uniqueid Element The uniqueid element does not contain the required id attribute. This should be linked to a testable assertion in the spec.
Unknown Attribute in uniqueid Element The uniqueid element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Child Element in uniqueid Element The uniqueid element contains a child element. This should be linked to a testable assertion in the spec.
Content in uniqueid Element The uniqueid element contains content. This should be linked to a testable assertion in the spec.

vendor Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid vendor Element The vendor element matches the schema.
Valid vendor Element Without url Attribute The vendor element does not contain a url attribute but it still matches the schema. This should be linked to a testable assertion in the spec.
No vendor Element The vendor element doesn't exist. This should be linked to a testable assertion in the spec.
More Than One vendor Element The vendor element occurs twice. This should be linked to a testable assertion in the spec.
No name Attribute in vendor Element The vendor element does not contain the required name attribute. This should be linked to a testable assertion in the spec.
Unknown Attribute in vendor Element The vendor element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Child Element in vendor Element The vendor element contains a child element. This should be linked to a testable assertion in the spec.
Content in vendor Element The vendor element contains content. This should be linked to a testable assertion in the spec.

credits Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid credits Element With Single credit Element The credits element matches the schema and it contains one credit child element. This should be linked to a testable assertion in the spec.
Valid credits Element With Two credit Elements The credits element matches the schema and it contains two credit child elements. This should be linked to a testable assertion in the spec.
More Than One credits Element The credits element occurs more than once. This should be linked to a testable assertion in the spec.
No credit Element in credits Element The credits element does not contain a credit child element. This should be linked to a testable assertion in the spec.
Unknown Attribute in credits Element The credits element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in credits Element The credits element contains an unknown child element. This should be linked to a testable assertion in the spec.
Content in credits Element The credits element contains an content. This should be linked to a testable assertion in the spec.

credit Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid credit Element The credit element matches the schema.
Valid credit Element Without url Attribute The credit element does not contain a url attribute but it still matches the schema. This should be linked to a testable assertion in the spec.
Valid credit Element Without role Attribute The credit element does not contain a role attribute but it still matches the schema. This should be linked to a testable assertion in the spec.
No name attribute in credit Element The credit element does not contain a name attribute. This should be linked to a testable assertion in the spec.
Unknown attribute in credit Element The credit element contains and unknown attribute. This should be linked to a testable assertion in the spec.
Child Element in credit Element The credit element contains a child element. This should be linked to a testable assertion in the spec.
Content in credit Element The credit element contains content. This should be linked to a testable assertion in the spec.

description Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid description Element The description element matches the schema.
Valid description Element Without url Attribute The description element does not contain a url attribute but it still matches the schema. This should be linked to a testable assertion in the spec.
Valid description Element With One No Language Tagged text Element The description element matches the schema. It contains one text element that does not have a language tag. This should be linked to a testable assertion in the spec.
Valid description Element With One Language Tagged text Element The description element matches the schema. It contains one text element that has a language tag. This should be linked to a testable assertion in the spec.
Valid description Element With Mixed text Element Language Tags 1 The description element matches the schema. One text element does not have a language tag. One text element has a language tag. This should be linked to a testable assertion in the spec.
Valid description Element With Mixed text Element Language Tags 2 The description element matches the schema. Two text elements have a language tags. This should be linked to a testable assertion in the spec.
More Than One description Element The description element occurs more than once. This should be linked to a testable assertion in the spec.
No text Element in description Element The description element does not contain a text child element. This should be linked to a testable assertion in the spec.
Unknown Attribute in description Element The description element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in description Element The description element contains an unknown child element. This should be linked to a testable assertion in the spec.
Content in description Element The description element contains content. This should be linked to a testable assertion in the spec.
Unknown Attribute in description Element text Element The description element contains a text element with an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in description Element text Element The description element contains a text element with an unknown child element. This should be linked to a testable assertion in the spec.

license Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid license Element The license element matches the schema.
Valid license Element The license element does not have a url attribute but it still matches the schema. This should be linked to a testable assertion in the spec.
Valid license Element The license element does not have an id attribute but it still matches the schema. This should be linked to a testable assertion in the spec.
Valid license Element With One No Language Tagged text Element The license element matches the schema. It contains one text element that does not have a language tag. This should be linked to a testable assertion in the spec.
Valid license Element With One Language Tagged text Element The license element matches the schema. It contains one text element that has a language tag. This should be linked to a testable assertion in the spec.
Valid license Element With Mixed text Element Language Tags 1 The license element matches the schema. One text element does not have a language tag. One text element has a language tag. This should be linked to a testable assertion in the spec.
Valid license Element With Mixed text Element Language Tags 2 The license element matches the schema. Two text elements have a language tags. This should be linked to a testable assertion in the spec.
More Than One license Element The license element occurs more than once. This should be linked to a testable assertion in the spec.
No text Element in license Element The license element does not contain a text child element. This should be linked to a testable assertion in the spec.
Unknown Attribute in license Element The license element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in license Element The license element contains an unknown child element. This should be linked to a testable assertion in the spec.
Content in license Element The license element contains content. This should be linked to a testable assertion in the spec.
Unknown Attribute in license Element text Element The license element contains a text element with an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in license Element text Element The license element contains a text element with an unknown child element. This should be linked to a testable assertion in the spec.

copyright Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid copyright Element With One No Language Tagged text Element The copyright element matches the schema. It contains one text element that does not have a language tag. This should be linked to a testable assertion in the spec.
Valid copyright Element With One Language Tagged text Element The copyright element matches the schema. It contains one text element that has a language tag. This should be linked to a testable assertion in the spec.
Valid copyright Element With Mixed text Element Language Tags 1 The copyright element matches the schema. One text element does not have a language tag. One text element has a language tag. This should be linked to a testable assertion in the spec.
Valid copyright Element With Mixed text Element Language Tags 2 The copyright element matches the schema. Two text elements have a language tags. This should be linked to a testable assertion in the spec.
More Than One copyright Element The copyright element occurs more than once. This should be linked to a testable assertion in the spec.
No text Element in copyright Element The copyright element does not contain a text child element. This should be linked to a testable assertion in the spec.
Unknown Attribute in copyright Element The copyright element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in copyright Element The copyright element contains an unknown child element. This should be linked to a testable assertion in the spec.
Content in copyright Element The copyright element contains content. This should be linked to a testable assertion in the spec.
Unknown Attribute in copyright Element text Element The copyright element contains a text element with an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in copyright Element text Element The copyright element contains a text element with an unknown child element. This should be linked to a testable assertion in the spec.

trademark Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid trademark Element With One No Language Tagged text Element The trademark element matches the schema. It contains one text element that does not have a language tag.
Valid trademark Element With One Language Tagged text Element The trademark element matches the schema. It contains one text element that has a language tag. This should be linked to a testable assertion in the spec.
Valid trademark Element With Mixed text Element Language Tags 1 The trademark element matches the schema. One text element does not have a language tag. One text element has a language tag. This should be linked to a testable assertion in the spec.
Valid trademark Element With Mixed text Element Language Tags 2 The trademark element matches the schema. Two text elements have a language tags. This should be linked to a testable assertion in the spec.
More Than One trademark Element The trademark element occurs more than once. This should be linked to a testable assertion in the spec.
No text Element in trademark Element The trademark element does not contain a text child element. This should be linked to a testable assertion in the spec.
Unknown Attribute in trademark Element The trademark element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in trademark Element The trademark element contains an unknown child element. This should be linked to a testable assertion in the spec.
Content in trademark Element The trademark element contains content. This should be linked to a testable assertion in the spec.
Unknown Attribute in trademark Element text Element The trademark element contains a text element with an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in trademark Element text Element The trademark element contains a text element with an unknown child element. This should be linked to a testable assertion in the spec.

licensee Element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid licensee Element The uniqueid element matches the schema.
More Than One licensee Element The uniqueid element occurs more than once. This should be linked to a testable assertion in the spec.
No name Attribute in licensee Element The uniqueid element does not contain the required name attribute. This should be linked to a testable assertion in the spec.
Unknown Attribute in licensee Element The uniqueid element occures more than once. This should be linked to a testable assertion in the spec.
Child Element in licensee Element The uniqueid element contains a child element. This should be linked to a testable assertion in the spec.
Content in licensee Element The uniqueid element contains content. This should be linked to a testable assertion in the spec.

extension element

For each of these, create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Title Assertion
Valid extension Element The extension element matches the schema. This should be linked to a testable assertion in the spec.
Two Valid extension Elements Two extension elements match the schema. This should be linked to a testable assertion in the spec.
Valid extension Element Without id Attribute The extension element does not have an id attribute but it still matches the schema. This should be linked to a testable assertion in the spec.
Valid extension Element Without name Element The extension element does not have a name child element but it still matches the schema. This should be linked to a testable assertion in the spec.
Valid extension Element With Two name Elements 1 The extension element contains one name element without a lang attribute and another with a lang attribute. This should be linked to a testable assertion in the spec.
Valid extension Element With Two name Elements 2 The extension element contains two name elements with lang attributes. This should be linked to a testable assertion in the spec.
Valid extension Element With Two item Elements The extension element contains two item child elements. This should be linked to a testable assertion in the spec.
No item Element in extension Element The extension element does not contain an item child element. This should be linked to a testable assertion in the spec.
Unknown Attribute in extension Element The extension element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in extension Element The extension element contains an unknown child element. This should be linked to a testable assertion in the spec.
Content in extension Element The extension element contains content. This should be linked to a testable assertion in the spec.
Valid item Element in extension Element The item element in the extension element matches the schema. This should be linked to a testable assertion in the spec.
Valid item Element With Multiple Languages in extension Element The item element in the extension element contains a variety of languages. This should be linked to a testable assertion in the spec.
Valid item Element Without id Attribute in extension Element The item element in the extension element does not contain an id attribute but it still matches the schema. This should be linked to a testable assertion in the spec.
Valid item Element With Two name Elements in extension Element 1 The item element in the extension element contains one name child element with no lang attribute and one with a lang attribute. This should be linked to a testable assertion in the spec.
Valid item Element With Two name Elements in extension Element 2 The item element in the extension element contains two name child elements with lang attributes. This should be linked to a testable assertion in the spec.
Valid item Element With Two value Elements in extension Element 1 The item element in the extension element contains one value child element with no lang attribute and one with a lang attribute. This should be linked to a testable assertion in the spec.
Valid item Element With Two value Elements in extension Element 2 The item element in the extension element contains two value child elements with lang attributes. This should be linked to a testable assertion in the spec.
No name Element in item Element in extension Element The item element in the extension element does not contain a name child element. This should be linked to a testable assertion in the spec.
No value Element in item Element in extension Element The item element in the extension element does not contain a value child element. This should be linked to a testable assertion in the spec.
Unknown Attribute in item Element in extension Element The item element in the extension element contains an unknown attribute. This should be linked to a testable assertion in the spec.
Unknown Child Element in item Element in extension Element The item element in the extension element contains an unknown child element. This should be linked to a testable assertion in the spec.
Content in item Element in extension Element The item element in the extension element contains content. This should be linked to a testable assertion in the spec.
Valid name Element in item Element in extension Element The name element in the item element in the extension element matches the schema. This should be linked to a testable assertion in the spec.
Valid name Element With lang Attribute in item Element in extension Element The name element in the item element in the extension element contains a lang attribute and it matches the schema. This should be linked to a testable assertion in the spec.
Unkown Attribute in name Element in item Element in extension Element The name element in the item element in the extension element contains an unkown attribute. This should be linked to a testable assertion in the spec.
Child Element in name Element in item Element in extension Element The name element in the item element in the extension element contains a child element. This should be linked to a testable assertion in the spec.
Valid value Element in item Element in extension Element The value element in the item element in the extension element matches the schema. This should be linked to a testable assertion in the spec.
Valid value Element With lang Attribute in item Element in extension Element The value element in the item element in the extension element contains a lang attribute and it matches the schema. This should be linked to a testable assertion in the spec.
Unkown Attribute in value Element in item Element in extension Element The value element in the item element in the extension element contains an unkown attribute. This should be linked to a testable assertion in the spec.
Child Element in value Element in item Element in extension Element The value element in the item element in the extension element contains a child element. This should be linked to a testable assertion in the spec.

Extension Visibile (metadata-showextension)

Create one page showing a test string in the font. Fall back to a locally installed font that renders differently than the WOFF. The string should look like "PASS" when displayed with the WOFF file and "FAIL" when displayed with the locally installed font. This will test that the metadata has no effect on the display validity of the font. The metadata will be inspected by the UA's metadata display, if available.

Description Test Case Test case Notes
WOFF has extension elements that should be viewed. Not test case available yet. Valid WOFF 2 could be duplicated and used for this test. This is a SHOULD in the spec. How should it be tested here?