Update web-platform-tests to revision 3b3585e368841b77caea8576fa56cef91c3fbdf0

This commit is contained in:
Ms2ger 2016-09-26 10:52:50 +02:00
parent d00639c55f
commit 3b4f0ec0bb
541 changed files with 14609 additions and 3288 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,5 +0,0 @@
[event-error.html]
type: testharness
[XMLHttpRequest Test: event - error]
expected: FAIL

View file

@ -11,3 +11,4 @@
[Values iterator should return non-deleted values] [Values iterator should return non-deleted values]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,5 @@
[setrequestheader-case-insensitive.htm]
type: testharness
[XMLHttpRequest: setRequestHeader() - headers that differ in case]
expected: FAIL

View file

@ -0,0 +1,29 @@
[setrequestheader-header-allowed.htm]
type: testharness
[XMLHttpRequest: setRequestHeader() - headers that are allowed (Authorization)]
expected: FAIL
[XMLHttpRequest: setRequestHeader() - headers that are allowed (Pragma)]
expected: FAIL
[XMLHttpRequest: setRequestHeader() - headers that are allowed (User-Agent)]
expected: FAIL
[XMLHttpRequest: setRequestHeader() - headers that are allowed (Content-Transfer-Encoding)]
expected: FAIL
[XMLHttpRequest: setRequestHeader() - headers that are allowed (Content-Type)]
expected: FAIL
[XMLHttpRequest: setRequestHeader() - headers that are allowed (Overwrite)]
expected: FAIL
[XMLHttpRequest: setRequestHeader() - headers that are allowed (If)]
expected: FAIL
[XMLHttpRequest: setRequestHeader() - headers that are allowed (Status-URI)]
expected: FAIL
[XMLHttpRequest: setRequestHeader() - headers that are allowed (X-Pink-Unicorn)]
expected: FAIL

View file

@ -384,3 +384,141 @@
[CDATASection interface: existence and properties of interface prototype object's "constructor" property] [CDATASection interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL expected: FAIL
[Node interface: operation getRootNode(GetRootNodeOptions)]
expected: FAIL
[Node interface: new Document() must inherit property "getRootNode" with the proper type (17)]
expected: FAIL
[Node interface: calling getRootNode(GetRootNodeOptions) on new Document() with too few arguments must throw TypeError]
expected: FAIL
[Node interface: xmlDoc must inherit property "getRootNode" with the proper type (17)]
expected: FAIL
[Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc with too few arguments must throw TypeError]
expected: FAIL
[Node interface: document.doctype must inherit property "getRootNode" with the proper type (17)]
expected: FAIL
[Node interface: calling getRootNode(GetRootNodeOptions) on document.doctype with too few arguments must throw TypeError]
expected: FAIL
[Node interface: document.createDocumentFragment() must inherit property "getRootNode" with the proper type (17)]
expected: FAIL
[Node interface: calling getRootNode(GetRootNodeOptions) on document.createDocumentFragment() with too few arguments must throw TypeError]
expected: FAIL
[Node interface: element must inherit property "getRootNode" with the proper type (17)]
expected: FAIL
[Node interface: calling getRootNode(GetRootNodeOptions) on element with too few arguments must throw TypeError]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "getRootNode" with the proper type (17)]
expected: FAIL
[Node interface: calling getRootNode(GetRootNodeOptions) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "parentNode" with the proper type (18)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "parentElement" with the proper type (19)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "hasChildNodes" with the proper type (20)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "childNodes" with the proper type (21)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "firstChild" with the proper type (22)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lastChild" with the proper type (23)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "previousSibling" with the proper type (24)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "nextSibling" with the proper type (25)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "normalize" with the proper type (28)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "cloneNode" with the proper type (29)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isEqualNode" with the proper type (30)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isSameNode" with the proper type (31)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (32)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (33)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (34)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (35)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (36)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (37)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "compareDocumentPosition" with the proper type (38)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "contains" with the proper type (39)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lookupPrefix" with the proper type (40)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lookupNamespaceURI" with the proper type (41)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isDefaultNamespace" with the proper type (42)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "insertBefore" with the proper type (43)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "appendChild" with the proper type (44)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "replaceChild" with the proper type (45)]
expected: FAIL
[Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "removeChild" with the proper type (46)]
expected: FAIL
[Node interface: document.createTextNode("abc") must inherit property "getRootNode" with the proper type (17)]
expected: FAIL
[Node interface: calling getRootNode(GetRootNodeOptions) on document.createTextNode("abc") with too few arguments must throw TypeError]
expected: FAIL
[Node interface: xmlDoc.createProcessingInstruction("abc", "def") must inherit property "getRootNode" with the proper type (17)]
expected: FAIL
[Node interface: calling getRootNode(GetRootNodeOptions) on xmlDoc.createProcessingInstruction("abc", "def") with too few arguments must throw TypeError]
expected: FAIL
[Node interface: document.createComment("abc") must inherit property "getRootNode" with the proper type (17)]
expected: FAIL
[Node interface: calling getRootNode(GetRootNodeOptions) on document.createComment("abc") with too few arguments must throw TypeError]
expected: FAIL

View file

@ -0,0 +1,14 @@
[rootNode.html]
type: testharness
[getRootNode() must return the context object when it does not have any parent]
expected: FAIL
[getRootNode() must return the parent node of the context object when the context object has a single ancestor not in a document]
expected: FAIL
[getRootNode() must return the document when a node is in document]
expected: FAIL
[getRootNode() must return a document fragment when a node is in the fragment]
expected: FAIL

View file

@ -3,3 +3,12 @@
[Request through fetch should have 'accept' header with value '*/*'] [Request through fetch should have 'accept' header with value '*/*']
expected: FAIL expected: FAIL
[Request through fetch should have 'accept' header with value 'custom/*']
expected: FAIL
[Request through fetch should have a 'accept-language' header]
expected: FAIL
[Request through fetch should have 'accept-language' header with value 'bzh']
expected: FAIL

View file

@ -3,3 +3,12 @@
[Request through fetch should have 'accept' header with value '*/*'] [Request through fetch should have 'accept' header with value '*/*']
expected: FAIL expected: FAIL
[Request through fetch should have 'accept' header with value 'custom/*']
expected: FAIL
[Request through fetch should have a 'accept-language' header]
expected: FAIL
[Request through fetch should have 'accept-language' header with value 'bzh']
expected: FAIL

View file

@ -15,3 +15,33 @@
[Referrer policy: unsafe-url] [Referrer policy: unsafe-url]
expected: FAIL expected: FAIL
[Referrer policy: no-referrer and referrer: default]
expected: FAIL
[Referrer policy: no-referrer and referrer: 'myreferrer']
expected: FAIL
[Referrer policy: "" and referrer: default]
expected: FAIL
[Referrer policy: "" and referrer: 'myreferrer']
expected: FAIL
[Referrer policy: origin and referrer: default]
expected: FAIL
[Referrer policy: origin and referrer: 'myreferrer']
expected: FAIL
[Referrer policy: origin-when-cross-origin and referrer: default]
expected: FAIL
[Referrer policy: origin-when-cross-origin and referrer: 'myreferrer']
expected: FAIL
[Referrer policy: unsafe-url and referrer: default]
expected: FAIL
[Referrer policy: unsafe-url and referrer: 'myreferrer']
expected: FAIL

View file

@ -15,3 +15,33 @@
[Referrer policy: unsafe-url] [Referrer policy: unsafe-url]
expected: FAIL expected: FAIL
[Referrer policy: no-referrer and referrer: default]
expected: FAIL
[Referrer policy: no-referrer and referrer: 'myreferrer']
expected: FAIL
[Referrer policy: "" and referrer: default]
expected: FAIL
[Referrer policy: "" and referrer: 'myreferrer']
expected: FAIL
[Referrer policy: origin and referrer: default]
expected: FAIL
[Referrer policy: origin and referrer: 'myreferrer']
expected: FAIL
[Referrer policy: origin-when-cross-origin and referrer: default]
expected: FAIL
[Referrer policy: origin-when-cross-origin and referrer: 'myreferrer']
expected: FAIL
[Referrer policy: unsafe-url and referrer: default]
expected: FAIL
[Referrer policy: unsafe-url and referrer: 'myreferrer']
expected: FAIL

View file

@ -0,0 +1,6 @@
[origin-of-data-document.html]
type: testharness
expected: TIMEOUT
[The origin of a 'data:' document in a frame is opaque.]
expected: TIMEOUT

View file

@ -10,3 +10,6 @@
[Script document-write] [Script document-write]
expected: NOTRUN expected: NOTRUN
[Script script-exec]
expected: NOTRUN

View file

@ -0,0 +1,5 @@
[document.forms.html]
type: testharness
[document.forms iteration]
expected: FAIL

View file

@ -17880,9 +17880,6 @@
[area.ping: IDL set to "\\0" followed by getAttribute()] [area.ping: IDL set to "\\0" followed by getAttribute()]
expected: FAIL expected: FAIL
[area.ping: IDL set to "\\0" followed by IDL get]
expected: FAIL
[area.ping: IDL set to null followed by getAttribute()] [area.ping: IDL set to null followed by getAttribute()]
expected: FAIL expected: FAIL
@ -20925,3 +20922,9 @@
[img.crossOrigin: IDL set to null followed by IDL get] [img.crossOrigin: IDL set to null followed by IDL get]
expected: FAIL expected: FAIL
[area.ping: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo " followed by IDL get]
expected: FAIL
[area.ping: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo " followed by getAttribute()]
expected: FAIL

View file

@ -717,9 +717,6 @@
[a.ping: IDL set to "\\0" followed by getAttribute()] [a.ping: IDL set to "\\0" followed by getAttribute()]
expected: FAIL expected: FAIL
[a.ping: IDL set to "\\0" followed by IDL get]
expected: FAIL
[a.ping: IDL set to null followed by getAttribute()] [a.ping: IDL set to null followed by getAttribute()]
expected: FAIL expected: FAIL
@ -24408,3 +24405,9 @@
[wbr.tabIndex: setAttribute() to "\\r7" followed by IDL get] [wbr.tabIndex: setAttribute() to "\\r7" followed by IDL get]
expected: FAIL expected: FAIL
[a.ping: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo " followed by IDL get]
expected: FAIL
[a.ping: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f foo " followed by getAttribute()]
expected: FAIL

View file

@ -1,5 +0,0 @@
[style_scoped.html]
type: testharness
[The scoped attribute is present, the style information must be applied only to its parent element]
expected: FAIL

View file

@ -27,3 +27,12 @@
[HTMLTrackElement.src resolvable value in content attribute] [HTMLTrackElement.src resolvable value in content attribute]
expected: FAIL expected: FAIL
[HTMLTrackElement.src assigning empty string to IDL attribute]
expected: FAIL
[HTMLTrackElement.src foo\\u0000bar in content attribute]
expected: FAIL
[HTMLTrackElement.src assigning foo\\u0000bar to IDL attribute]
expected: FAIL

View file

@ -1,5 +0,0 @@
[task-source.html]
type: testharness
[MediaController events task source]
expected: FAIL

View file

@ -33,3 +33,9 @@
[simple: "100,100,120,100,100,120" (polygon)] [simple: "100,100,120,100,100,120" (polygon)]
expected: FAIL expected: FAIL
[simple: "2,2,10,10" (rect)]
expected: FAIL
[simple: "2,2,10,10" (rectangle)]
expected: FAIL

View file

@ -0,0 +1,3 @@
[historical.html]
type: testharness
expected: ERROR

View file

@ -367,3 +367,33 @@
[[INPUT in FILE status\] suffering from being missing (in a form)] [[INPUT in FILE status\] suffering from being missing (in a form)]
expected: FAIL expected: FAIL
[[INPUT in DATETIME-LOCAL status\] no constraint]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] no constraint (in a form)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from an overflow]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from an overflow (in a form)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from an underflow]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from an underflow (in a form)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from a step mismatch]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from a step mismatch (in a form)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from being missing]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from being missing (in a form)]
expected: FAIL

View file

@ -367,3 +367,33 @@
[[INPUT in FILE status\] suffering from being missing (in a form)] [[INPUT in FILE status\] suffering from being missing (in a form)]
expected: FAIL expected: FAIL
[[INPUT in DATETIME-LOCAL status\] no constraint]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] no constraint (in a form)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from an overflow]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from an overflow (in a form)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from an underflow]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from an underflow (in a form)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from a step mismatch]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from a step mismatch (in a form)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from being missing]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] suffering from being missing (in a form)]
expected: FAIL

View file

@ -192,3 +192,36 @@
[[INPUT in NUMBER status\] The value is greater than max(scientific notation)] [[INPUT in NUMBER status\] The value is greater than max(scientific notation)]
expected: FAIL expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The max attribute is not set]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Value is empty string]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The max attribute is an invalid local date time string]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The max attribute is greater than the value attribute]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is an invalid local date time string(hour is greater than 23)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value if an invalid local date time string(year is two digits)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is greater than max]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is greater than max(with millisecond in 1 digit)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is greater than max(with millisecond in 2 digits)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is greater than max(with millisecond in 3 digits)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is greater than max(Year is 10000 should be valid)]
expected: FAIL

View file

@ -183,3 +183,39 @@
[[INPUT in NUMBER status\] The value is less than min(scientific notation)] [[INPUT in NUMBER status\] The value is less than min(scientific notation)]
expected: FAIL expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The min attribute is not set]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Value is empty string]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The min attribute is an invalid local date time string]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The min attribute is less than the value attribute]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is an invalid local date time string(hour is greater than 23)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is an invalid local date time string(year is two digits)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is less than min]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is less than min(with millisecond in 1 digit)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is less than min(with millisecond in 2 digits)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is less than min(with millisecond in 3 digits)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is less than min(Year is 10000 should be valid)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value is greater than max]
expected: FAIL

View file

@ -142,3 +142,15 @@
[[INPUT in FILE status\] validity.valid must be false if validity.valueMissing is true] [[INPUT in FILE status\] validity.valid must be false if validity.valueMissing is true]
expected: FAIL expected: FAIL
[[INPUT in DATETIME-LOCAL status\] validity.valid must be false if validity.rangeOverflow is true]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] validity.valid must be false if validity.rangeUnderflow is true]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] validity.valid must be false if validity.stepMismatch is true]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] validity.valid must be false if validity.valueMissing is true]
expected: FAIL

View file

@ -271,3 +271,36 @@
[[INPUT in NUMBER status\] Value is a string that cannot be converted to a number] [[INPUT in NUMBER status\] Value is a string that cannot be converted to a number]
expected: FAIL expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The required attribute is not set]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Valid local date and time string(2000-12-10T12:00:00)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Valid local date and time string(2000-12-10 12:00)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Valid local date and time string(1979-10-14T12:00:00.001)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value attribute is a number(1234567)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value attribute is a Date object]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Invalid local date and time string(1979-10-99 99:99)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Valid local date and time string(1979-10-14 12:00:00)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Invalid local date and time string(2001-12-21 12:00)-two white space]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] the value attribute is a string(abc)]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The value attribute is empty string]
expected: FAIL

View file

@ -250,3 +250,15 @@
[[BUTTON in SUBMIT status\] The willValidate attribute must be true if an element is mutable] [[BUTTON in SUBMIT status\] The willValidate attribute must be true if an element is mutable]
expected: FAIL expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Must be barred from the constraint validation if it is disabled]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The willValidate attribute must be true if an element is mutable]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] Must be barred from the constraint validation if it is readonly]
expected: FAIL
[[INPUT in DATETIME-LOCAL status\] The willValidate attribute must be false if it has a datalist ancestor]
expected: FAIL

View file

@ -0,0 +1,8 @@
[historical.html]
type: testharness
[<input type=datetime> should not be supported]
expected: FAIL
[<input name=isindex> should not be supported]
expected: FAIL

View file

@ -66,3 +66,6 @@
[text field selection for the input password] [text field selection for the input password]
expected: FAIL expected: FAIL
[text field selection for the input datetime-local]
expected: FAIL

View file

@ -6,6 +6,3 @@
[canceled activation steps on unchecked checkbox (indeterminate=true in onclick)] [canceled activation steps on unchecked checkbox (indeterminate=true in onclick)]
expected: FAIL expected: FAIL
[click on mutable checkbox fires a click event, then an input event, then a change event]
expected: FAIL

View file

@ -0,0 +1,14 @@
[cloning-steps.html]
type: testharness
[input element's value should be cloned]
expected: FAIL
[input element's dirty value flag should be cloned, so setAttribute doesn't affect the cloned input's value]
expected: FAIL
[input element's checkedness should be cloned]
expected: FAIL
[input element's dirty checkedness should be cloned, so setAttribute doesn't affect the cloned input's checkedness]
expected: FAIL

View file

@ -1,47 +0,0 @@
[datetime-2.html]
type: testharness
[datetime input value set to 2014-01-01 11:11Z without min/max]
expected: FAIL
[datetime input value set to 2014-01-01 11:11-04:00 without min/max]
expected: FAIL
[datetime input value set to 2014-01-01 11:11-0400 without min/max]
expected: FAIL
[datetime input value set to 2014-01-01 11:11:00.000-04:00 without min/max]
expected: FAIL
[datetime input value set to 2014-01-01 11:11:00.000Z without min/max]
expected: FAIL
[datetime input value set to 2014-01-01 11:11:00.000 without min/max]
expected: FAIL
[datetime input value set to 2014-01-01 11:11:00.000+ without min/max]
expected: FAIL
[datetime input value set to 2014-01-01 11:11:00.000+24 without min/max]
expected: FAIL
[datetime input value set to 2014-01-01 11:11:00.000+2360 without min/max]
expected: FAIL
[datetime input value set to 2014-01-0 11:11:00.000+0400 without min/max]
expected: FAIL
[datetime input value set to 2014-01-01 11:1:00.000+0400 without min/max]
expected: FAIL
[Value >= min attribute]
expected: FAIL
[Value < min attribute]
expected: FAIL
[Value <= max attribute]
expected: FAIL
[Value > max attribute]
expected: FAIL

View file

@ -840,3 +840,102 @@
[change state from button to color] [change state from button to color]
expected: FAIL expected: FAIL
[change state from hidden to datetime-local]
expected: FAIL
[change state from text to datetime-local]
expected: FAIL
[change state from search to datetime-local]
expected: FAIL
[change state from tel to datetime-local]
expected: FAIL
[change state from url to datetime-local]
expected: FAIL
[change state from email to datetime-local]
expected: FAIL
[change state from password to datetime-local]
expected: FAIL
[change state from datetime-local to text]
expected: FAIL
[change state from datetime-local to search]
expected: FAIL
[change state from datetime-local to tel]
expected: FAIL
[change state from datetime-local to url]
expected: FAIL
[change state from datetime-local to email]
expected: FAIL
[change state from datetime-local to password]
expected: FAIL
[change state from datetime-local to date]
expected: FAIL
[change state from datetime-local to month]
expected: FAIL
[change state from datetime-local to week]
expected: FAIL
[change state from datetime-local to time]
expected: FAIL
[change state from datetime-local to number]
expected: FAIL
[change state from datetime-local to range]
expected: FAIL
[change state from datetime-local to color]
expected: FAIL
[change state from date to datetime-local]
expected: FAIL
[change state from month to datetime-local]
expected: FAIL
[change state from week to datetime-local]
expected: FAIL
[change state from time to datetime-local]
expected: FAIL
[change state from number to datetime-local]
expected: FAIL
[change state from range to datetime-local]
expected: FAIL
[change state from color to datetime-local]
expected: FAIL
[change state from checkbox to datetime-local]
expected: FAIL
[change state from radio to datetime-local]
expected: FAIL
[change state from submit to datetime-local]
expected: FAIL
[change state from image to datetime-local]
expected: FAIL
[change state from reset to datetime-local]
expected: FAIL
[change state from button to datetime-local]
expected: FAIL

View file

@ -90,3 +90,9 @@
[value IDL attribute of input type button with value attribute] [value IDL attribute of input type button with value attribute]
expected: FAIL expected: FAIL
[value IDL attribute of input type datetime-local without value attribute]
expected: FAIL
[value IDL attribute of input type datetime-local with value attribute]
expected: FAIL

View file

@ -0,0 +1,8 @@
[cloning-steps.html]
type: testharness
[textarea element's value should be cloned]
expected: FAIL
[textarea element's dirty value flag should be cloned, so setAttribute doesn't affect the cloned textarea's value]
expected: FAIL

View file

@ -0,0 +1,14 @@
[historical.html]
type: testharness
[onbeforescriptexecute content attribute should not be supported]
expected: FAIL
[onafterscriptexecute content attribute should not be supported]
expected: FAIL
[beforescriptexecute event should not be supported]
expected: FAIL
[afterscriptexecute event should not be supported]
expected: FAIL

View file

@ -0,0 +1,5 @@
[load-event.html]
type: testharness
[load events should not be fired for inline scripts]
expected: FAIL

View file

@ -15,15 +15,6 @@
[innerHTML <listing> non-context starting with U+000A] [innerHTML <listing> non-context starting with U+000A]
expected: FAIL expected: FAIL
[innerHTML <pre> non-context not starting with U+000A]
expected: FAIL
[innerHTML <textarea> non-context not starting with U+000A]
expected: FAIL
[innerHTML <listing> non-context not starting with U+000A]
expected: FAIL
[outerHTML <pre> context starting with U+000A] [outerHTML <pre> context starting with U+000A]
expected: FAIL expected: FAIL
@ -33,15 +24,6 @@
[outerHTML <listing> context starting with U+000A] [outerHTML <listing> context starting with U+000A]
expected: FAIL expected: FAIL
[outerHTML <pre> context not starting with U+000A]
expected: FAIL
[outerHTML <textarea> context not starting with U+000A]
expected: FAIL
[outerHTML <listing> context not starting with U+000A]
expected: FAIL
[outerHTML <pre> non-context starting with U+000A] [outerHTML <pre> non-context starting with U+000A]
expected: FAIL expected: FAIL
@ -51,15 +33,6 @@
[outerHTML <listing> non-context starting with U+000A] [outerHTML <listing> non-context starting with U+000A]
expected: FAIL expected: FAIL
[outerHTML <pre> non-context not starting with U+000A]
expected: FAIL
[outerHTML <textarea> non-context not starting with U+000A]
expected: FAIL
[outerHTML <listing> non-context not starting with U+000A]
expected: FAIL
[innerHTML Void context node area] [innerHTML Void context node area]
expected: FAIL expected: FAIL

View file

@ -1 +1 @@
2d13178d2930da8668e77de078eeb65438eb502e d00639c55f9a342765483d347a3c29d4647f7411

View file

@ -0,0 +1,11 @@
[window-only.worker]
type: testharness
[NavigatorID properties exposed only for Window: appCodeName]
expected: FAIL
[NavigatorID properties exposed only for Window: product]
expected: FAIL
[NavigatorID properties exposed only for Window: taintEnabled]
expected: FAIL

View file

@ -24,3 +24,60 @@
[The TextMetrics interface object should be exposed.] [The TextMetrics interface object should be exposed.]
expected: FAIL expected: FAIL
[The CanvasPath interface object should be exposed.]
expected: FAIL
[The Path2D interface object should be exposed.]
expected: FAIL
[The PromiseRejectionEvent interface object should be exposed.]
expected: FAIL
[The BroadcastChannel interface object should be exposed.]
expected: FAIL
[The ReadableStream interface object should be exposed.]
expected: FAIL
[The WritableStream interface object should be exposed.]
expected: FAIL
[The ByteLengthQueuingStrategy interface object should be exposed.]
expected: FAIL
[The CountQueuingStrategy interface object should be exposed.]
expected: FAIL
[The IDBRequest interface object should be exposed.]
expected: FAIL
[The IDBOpenDBRequest interface object should be exposed.]
expected: FAIL
[The IDBVersionChangeEvent interface object should be exposed.]
expected: FAIL
[The IDBFactory interface object should be exposed.]
expected: FAIL
[The IDBDatabase interface object should be exposed.]
expected: FAIL
[The IDBObjectStore interface object should be exposed.]
expected: FAIL
[The IDBIndex interface object should be exposed.]
expected: FAIL
[The IDBKeyRange interface object should be exposed.]
expected: FAIL
[The IDBCursor interface object should be exposed.]
expected: FAIL
[The IDBCursorWithValue interface object should be exposed.]
expected: FAIL
[The IDBTransaction interface object should be exposed.]
expected: FAIL

View file

@ -15,3 +15,30 @@
[The MouseEvent interface object should not be exposed.] [The MouseEvent interface object should not be exposed.]
expected: FAIL expected: FAIL
[The CanvasRenderingContext2D interface object should not be exposed.]
expected: FAIL
[The CanvasGradient interface object should not be exposed.]
expected: FAIL
[The CanvasPattern interface object should not be exposed.]
expected: FAIL
[The PopStateEvent interface object should not be exposed.]
expected: FAIL
[The HashChangeEvent interface object should not be exposed.]
expected: FAIL
[The PageTransitionEvent interface object should not be exposed.]
expected: FAIL
[The UIEvent interface object should not be exposed.]
expected: FAIL
[The FocusEvent interface object should not be exposed.]
expected: FAIL
[The KeyboardEvent interface object should not be exposed.]
expected: FAIL

View file

@ -1,5 +1,6 @@
[003.html] [003.html]
type: testharness type: testharness
expected: ERROR
[available interface objects in shared worker] [available interface objects in shared worker]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,6 @@
[004.html] [004.html]
type: testharness type: testharness
expected: ERROR
[unavailable interface objects in shared worker] [unavailable interface objects in shared worker]
expected: FAIL expected: FAIL

View file

@ -764,32 +764,28 @@
"url": "/_mozilla/css/blur_a.html" "url": "/_mozilla/css/blur_a.html"
} }
], ],
"css/border_black_groove.html": [ "css/border_black_ridge_a.html": [
{ {
"path": "css/border_black_groove.html", "path": "css/border_black_ridge_a.html",
"references": [
[
"/_mozilla/css/border_black_solid.html",
"!="
]
],
"url": "/_mozilla/css/border_black_groove.html"
}
],
"css/border_black_ridge.html": [
{
"path": "css/border_black_ridge.html",
"references": [ "references": [
[ [
"/_mozilla/css/border_black_groove.html", "/_mozilla/css/border_black_groove.html",
"!=" "!="
], ]
],
"url": "/_mozilla/css/border_black_ridge_a.html"
}
],
"css/border_black_ridge_b.html": [
{
"path": "css/border_black_ridge_b.html",
"references": [
[ [
"/_mozilla/css/border_black_solid.html", "/_mozilla/css/border_black_solid.html",
"!=" "!="
] ]
], ],
"url": "/_mozilla/css/border_black_ridge.html" "url": "/_mozilla/css/border_black_ridge_b.html"
} }
], ],
"css/border_code_tag.html": [ "css/border_code_tag.html": [
@ -2177,7 +2173,7 @@
"path": "css/image_rendering_auto_a.html", "path": "css/image_rendering_auto_a.html",
"references": [ "references": [
[ [
"/_mozilla/css/image_rendering_pixelated_a.html", "/_mozilla/css/image_rendering_pixelated_ref.html",
"!=" "!="
] ]
], ],
@ -14394,20 +14390,28 @@
"url": "/_mozilla/css/border_black_groove.html" "url": "/_mozilla/css/border_black_groove.html"
} }
], ],
"css/border_black_ridge.html": [ "css/border_black_ridge_a.html": [
{ {
"path": "css/border_black_ridge.html", "path": "css/border_black_ridge_a.html",
"references": [ "references": [
[ [
"/_mozilla/css/border_black_groove.html", "/_mozilla/css/border_black_groove.html",
"!=" "!="
], ]
],
"url": "/_mozilla/css/border_black_ridge_a.html"
}
],
"css/border_black_ridge_b.html": [
{
"path": "css/border_black_ridge_b.html",
"references": [
[ [
"/_mozilla/css/border_black_solid.html", "/_mozilla/css/border_black_solid.html",
"!=" "!="
] ]
], ],
"url": "/_mozilla/css/border_black_ridge.html" "url": "/_mozilla/css/border_black_ridge_b.html"
} }
], ],
"css/border_code_tag.html": [ "css/border_code_tag.html": [
@ -15807,7 +15811,7 @@
"path": "css/image_rendering_auto_a.html", "path": "css/image_rendering_auto_a.html",
"references": [ "references": [
[ [
"/_mozilla/css/image_rendering_pixelated_a.html", "/_mozilla/css/image_rendering_pixelated_ref.html",
"!=" "!="
] ]
], ],

View file

@ -1,4 +0,0 @@
[tex_image_2d_canvas_no_context.html]
type: reftest
disabled:
if os == "linux": https://github.com/servo/servo/issues/7931

View file

@ -2,7 +2,6 @@
<html> <html>
<head> <head>
<link rel=mismatch href=border_black_groove.html> <link rel=mismatch href=border_black_groove.html>
<link rel=mismatch href=border_black_solid.html>
<style> <style>
.box { .box {
width: 100px; width: 100px;

View file

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<link rel=mismatch href=border_black_solid.html>
<style>
.box {
width: 100px;
height: 100px;
margin: 10px;
border-width: 20px;
border-color: black;
border-style: ridge;
}
</style>
</head>
<body>
<!-- Test mixed border styles. Expect a square with borders with
2 colors (lighter/dark), it fails if it has a solid dark border.
-->
<div class="box"></div>
</body>
</html>

View file

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<!-- Tests that `image-rendering: auto` uses bilinear filtering. --> <!-- Tests that `image-rendering: auto` uses bilinear filtering. -->
<link rel=mismatch href=image_rendering_pixelated_a.html> <link rel=mismatch href=image_rendering_pixelated_ref.html>
<style> <style>
img { img {
position: absolute; position: absolute;

View file

@ -5,4 +5,11 @@ python:
before_install: before_install:
- git submodule update --init --recursive - git submodule update --init --recursive
# command to run tests, e.g. python setup.py test # command to run tests, e.g. python setup.py test
script: ./lint script:
- ./lint
- ./manifest
- ./diff-manifest.py
notifications:
email:
on_success: never
on_failure: always

View file

@ -2,12 +2,14 @@
<html> <html>
<head> <head>
<title>HTML5 Canvas Test: isPointInPath() unaffected by the current transformation matrix</title> <title>HTML5 Canvas Test: isPointInPath() unaffected by the current transformation matrix</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="author" title="Microsoft" href="http://www.microsoft.com" /> <link rel="author" title="Microsoft" href="http://www.microsoft.com" />
<link rel="help" href="http://www.w3.org/TR/2dcontext/#dom-context-2d-ispointinpath" /> <link rel="help" href="http://www.w3.org/TR/2dcontext/#dom-context-2d-ispointinpath" />
<meta name="assert" content="isPointInPath must check the point (x, y) as coordinates unaffected by the current transformation matrix." /> <meta name="assert" content="isPointInPath must check the point (x, y) as coordinates unaffected by the current transformation matrix." />
<script type="text/javascript"> <script type="text/javascript">
function runTest() async_test(function(t) {
{ window.addEventListener("load", t.step_func_done(function runTest() {
var canvas = document.getElementById("canvas1"); var canvas = document.getElementById("canvas1");
var ctx = canvas.getContext("2d"); var ctx = canvas.getContext("2d");
@ -16,17 +18,14 @@
ctx.rect(0, 0, 100, 50); ctx.rect(0, 0, 100, 50);
// Ensure that the coordinates passed to isPointInPath are unaffected by the current transformation matrix. // Ensure that the coordinates passed to isPointInPath are unaffected by the current transformation matrix.
if (ctx.isPointInPath(125, 75) && !ctx.isPointInPath(25, 25)) assert_true(ctx.isPointInPath(125, 75), "isPointInPath(125, 75)");
{ assert_false(ctx.isPointInPath(25, 25), "!isPointInPath(25, 25)");
document.getElementById("testresult").firstChild.data = "PASS"; }));
} }, "isPointInPath unaffected by transformation matrix");
}
</script> </script>
</head> </head>
<body onload="runTest();"> <body>
<p>Description: isPointInPath must check the point (x, y) as coordinates unaffected by the current transformation matrix.</p> <p>Description: isPointInPath must check the point (x, y) as coordinates unaffected by the current transformation matrix.</p>
<p>Test passes if the word "PASS" appears below.</p>
<div id="testresult">FAIL</div>
<canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas> <canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas>
</body> </body>
</html> </html>

View file

@ -2,14 +2,18 @@
<html> <html>
<head> <head>
<title>HTML5 Canvas Test: createlinearGradient() with two points same</title> <title>HTML5 Canvas Test: createlinearGradient() with two points same</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="author" title="Microsoft" href="http://www.microsoft.com" /> <link rel="author" title="Microsoft" href="http://www.microsoft.com" />
<link rel="help" href="http://www.w3.org/TR/2dcontext/#dom-context-2d-createlineargradient" /> <link rel="help" href="http://www.w3.org/TR/2dcontext/#dom-context-2d-createlineargradient" />
<meta name="assert" content="If the two points in a linear gradient have identical x,y coordinates, the canvas must paint nothing." /> <meta name="assert" content="If the two points in a linear gradient have identical x,y coordinates, the canvas must paint nothing." />
<script type="text/javascript"> <script type="text/javascript">
function runTest() async_test(function(t) {
{ window.addEventListener("load", t.step_func_done(function runTest() {
var canvas = document.getElementById("canvas1"); var canvas = document.getElementById("canvas1");
var ctx = canvas.getContext("2d"); var ctx = canvas.getContext("2d");
var width = canvas.width;
var height = canvas.height;
// Start by drawing a left to right, green-to-blue linear gradient. // Start by drawing a left to right, green-to-blue linear gradient.
var lingrad = ctx.createLinearGradient(0, 50, 100, 50); var lingrad = ctx.createLinearGradient(0, 50, 100, 50);
@ -18,18 +22,38 @@
ctx.fillStyle = lingrad; ctx.fillStyle = lingrad;
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
// Get the current state of the canvas
var initial = ctx.getImageData(0, 0, width, height);
// Nothing must be drawn if the two points in the linear gradient are the same. // Nothing must be drawn if the two points in the linear gradient are the same.
lingrad = ctx.createLinearGradient(100, 100, 100, 100); lingrad = ctx.createLinearGradient(100, 100, 100, 100);
lingrad.addColorStop(0, "rgba(255, 0, 0, 1.0)"); lingrad.addColorStop(0, "rgba(255, 0, 0, 1.0)");
lingrad.addColorStop(1, "rgba(255, 0, 0, 1.0)"); lingrad.addColorStop(1, "rgba(255, 0, 0, 1.0)");
ctx.fillStyle = lingrad; ctx.fillStyle = lingrad;
ctx.fillRect(0, 0, 300, 150); ctx.fillRect(0, 0, 300, 150);
}
// Check that nothing is drawn.
var after = ctx.getImageData(0, 0, width, height);
// Asserts
assert_equals(initial.width, after.width, "widths are equal");
assert_equals(initial.height, after.height, "heights are equal");
assert_array_equals(initial.data, after.data, "data are equal");
for (var i = 0; i < after.data.length; i += 4) {
var r = after.data[i];
var g = after.data[i+1];
var b = after.data[i+2];
var a = after.data[i+3];
assert_false(r == 0xFF && g == 0 && b == 0 && a == 0xFF, "no red");
}
}));
}, "linear gradient from point to self draws nothing");
</script> </script>
</head> </head>
<body onload="runTest()"> <body>
<p>Description: If the two points in a linear gradient have identical x,y coordinates, the canvas must paint nothing.</p> <p>Description: If the two points in a linear gradient have identical x,y coordinates, the canvas must paint nothing.</p>
<p>Test passes if there is one left-to-right, green-to-blue linear gradient seen on the page and no red is seen on the page.</p> <p>Test passes if there is one left-to-right, green-to-blue linear gradient seen on the page and no red is seen on the page.</p>
<canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas> <canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas>
</body> </body>
</html> </html>

View file

@ -2,12 +2,14 @@
<html> <html>
<head> <head>
<title>HTML5 Canvas Test: Shadows for linear gradients</title> <title>HTML5 Canvas Test: Shadows for linear gradients</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="author" title="Microsoft" href="http://www.microsoft.com" /> <link rel="author" title="Microsoft" href="http://www.microsoft.com" />
<link rel="help" href="http://www.w3.org/TR/2dcontext/#shadows" /> <link rel="help" href="http://www.w3.org/TR/2dcontext/#shadows" />
<meta name="assert" content="Shadows must be drawn for linear gradients." /> <meta name="assert" content="Shadows must be drawn for linear gradients." />
<script type="text/javascript"> <script type="text/javascript">
function runTest() async_test(function(t) {
{ window.addEventListener("load", t.step_func_done(function runTest() {
var canvas = document.getElementById("canvas1"); var canvas = document.getElementById("canvas1");
var ctx = canvas.getContext("2d"); var ctx = canvas.getContext("2d");
@ -25,10 +27,32 @@
lingrad.addColorStop(1, "rgba(0, 0, 255, 1.0)"); lingrad.addColorStop(1, "rgba(0, 0, 255, 1.0)");
ctx.fillStyle = lingrad; ctx.fillStyle = lingrad;
ctx.fillRect(0, 0, 100, 50); ctx.fillRect(0, 0, 100, 50);
}
// Check the red is gone
var data = ctx.getImageData(150, 0, 100, 50);
for (var i = 0; i < data.data.length; i += 4) {
var r = data.data[i];
var g = data.data[i+1];
var b = data.data[i+2];
var a = data.data[i+3];
assert_equals(r, 0, "r channel");
assert_equals(g, 0, "g channel");
assert_equals(b, 0, "b channel");
assert_equals(a, 0xFF, "a channel");
}
for (var j = 0; j < data.data.length; j += 4) {
var r2 = data.data[j];
var g2 = data.data[j+1];
var b2 = data.data[j+2];
var a2 = data.data[j+3];
assert_false(r2 == 0xFF && g2 == 0 && b2 == 0 && a2 == 0xFF, "no red");
}
}));
}, "linear gradient fillRect draws shadow (black rectange)");
</script> </script>
</head> </head>
<body onload="runTest()"> <body>
<p>Description: Shadows must be drawn for linear gradients.</p> <p>Description: Shadows must be drawn for linear gradients.</p>
<p>Test passes if there is one gradient filled rectangle and one black rectangle, and no red seen on the page.</p> <p>Test passes if there is one gradient filled rectangle and one black rectangle, and no red seen on the page.</p>
<canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas> <canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas>

View file

@ -0,0 +1,22 @@
<!doctype HTML>
<html>
<head>
<title>HTML5 Canvas Test: Ignore property-independent style sheet syntax "inherit" in Text (reference)</title>
<script type="text/javascript">
function runTest()
{
var canvas = document.getElementById("canvas1");
var ctx = canvas.getContext("2d");
ctx.font = "40px Ahem";
ctx.fillText("Filler", 5, 50);
ctx.fillText("Filler", 5, 100);
}
</script>
</head>
<body onload="runTest()">
<p>Description: Ignore "inherit" property-independent style sheet syntax without assigning a new font value.</p>
<p>Test passes if there are two identical black boxes below.</p>
<canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas>
</body>
</html>

View file

@ -2,6 +2,7 @@
<html> <html>
<head> <head>
<title>HTML5 Canvas Test: Ignore property-independent style sheet syntax "inherit" in Text</title> <title>HTML5 Canvas Test: Ignore property-independent style sheet syntax "inherit" in Text</title>
<link rel="match" href="canvas_text_font_001-ref.htm" />
<link rel="author" title="Microsoft" href="http://www.microsoft.com" /> <link rel="author" title="Microsoft" href="http://www.microsoft.com" />
<link rel="help" href="http://www.w3.org/TR/2dcontext/#dom-context-2d-font" /> <link rel="help" href="http://www.w3.org/TR/2dcontext/#dom-context-2d-font" />
<meta name="assert" content=": Ignore 'inherit' property-independent style sheet syntax without assigning a new font value." /> <meta name="assert" content=": Ignore 'inherit' property-independent style sheet syntax without assigning a new font value." />
@ -12,21 +13,21 @@
var ctx = canvas.getContext("2d"); var ctx = canvas.getContext("2d");
// Assign a valid font. // Assign a valid font.
ctx.font = "40px Times New Roman"; ctx.font = "40px Ahem";
// Assign property-independent style sheet syntax 'inherit' as font. // Assign property-independent style sheet syntax 'inherit' as font (this must be ignored).
ctx.font = "20px inherit"; ctx.font = "20px inherit";
ctx.fillText("Test String", 5, 50); ctx.fillText("Filler", 5, 50);
// Assign a valid font which was used earlier. // Assign a valid font which was used earlier.
ctx.font = "40px Times New Roman"; ctx.font = "40px Ahem";
ctx.fillText("Test String", 5, 100); ctx.fillText("Filler", 5, 100);
} }
</script> </script>
</head> </head>
<body onload="runTest()"> <body onload="runTest()">
<p>Description: Ignore "inherit" property-independent style sheet syntax without assigning a new font value.</p> <p>Description: Ignore "inherit" property-independent style sheet syntax without assigning a new font value.</p>
<p>Test passes if both strings are identical in both size, style, and text.</p> <p>Test passes if there are two identical black boxes below.</p>
<canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas> <canvas id="canvas1" width="300" height="150">Browser does not support HTML5 Canvas.</canvas>
</body> </body>
</html> </html>

View file

@ -45,15 +45,14 @@ git submodule update --init --recursive
The test environment can then be started using The test environment can then be started using
``` ./serve
./serve
```
This will start HTTP servers on two ports and a websockets server on This will start HTTP servers on two ports and a websockets server on
one port. By default one web server starts on port 8000 and the other one port. By default one web server starts on port 8000 and the other
ports are randomly-chosen free ports. Tests must be loaded from the ports are randomly-chosen free ports. Tests must be loaded from the
*first* HTTP server in the output. To change the ports, edit the *first* HTTP server in the output. To change the ports, copy the
`config.json` file, for example, replacing the part that reads: `config.default.json` file to `config.json` and edit the new file,
replacing the part that reads:
``` ```
"http": [8000, "auto"] "http": [8000, "auto"]
@ -62,7 +61,7 @@ ports are randomly-chosen free ports. Tests must be loaded from the
to some port of your choice e.g. to some port of your choice e.g.
``` ```
"http":[1234, "auto"] "http": [1234, "auto"]
``` ```
If you installed OpenSSL in such a way that running `openssl` at a If you installed OpenSSL in such a way that running `openssl` at a
@ -79,7 +78,7 @@ like:
Running wptserve with SSL enabled on Windows typically requires Running wptserve with SSL enabled on Windows typically requires
installing an OpenSSL distribution. installing an OpenSSL distribution.
[Shining Light](http://slproweb.com/products/Win32OpenSSL.html) [Shining Light](https://slproweb.com/products/Win32OpenSSL.html)
provide a convenient installer that is known to work, but requires a provide a convenient installer that is known to work, but requires a
little extra setup. little extra setup.

View file

@ -33,10 +33,7 @@ function run_test() {
Object.keys(derivations[derivedKeySize][saltSize]).forEach(function(hashName) { Object.keys(derivations[derivedKeySize][saltSize]).forEach(function(hashName) {
Object.keys(derivations[derivedKeySize][saltSize][hashName]).forEach(function(infoSize) { Object.keys(derivations[derivedKeySize][saltSize][hashName]).forEach(function(infoSize) {
var testName = derivedKeySize + " derivedKey, " + saltSize + " salt, " + hashName + ", with " + infoSize + " info"; var testName = derivedKeySize + " derivedKey, " + saltSize + " salt, " + hashName + ", with " + infoSize + " info";
var algorithm = {name: "HKDF", salt: salts[saltSize], hash: hashName}; var algorithm = {name: "HKDF", salt: salts[saltSize], info: infos[infoSize], hash: hashName};
if (infoSize !== "missing") {
algorithm.info = infos[infoSize];
}
// Check for correct deriveBits result // Check for correct deriveBits result
promise_test(function(test) { promise_test(function(test) {
@ -121,6 +118,27 @@ function run_test() {
}); });
// Test various error conditions for deriveBits below: // Test various error conditions for deriveBits below:
// missing salt (TypeError)
promise_test(function(test) {
return subtle.deriveBits({name: "HKDF", info: infos[infoSize], hash: hashName}, baseKeys[derivedKeySize], 0)
.then(function(derivation) {
assert_equals(derivation.byteLength, 0, "Derived even with missing salt");
}, function(err) {
assert_equals(err.name, "TypeError", "deriveBits missing salt correctly threw OperationError: " + err.message);
});
}, testName + " with missing salt");
// missing info (TypeError)
promise_test(function(test) {
return subtle.deriveBits({name: "HKDF", salt: salts[saltSize], hash: hashName}, baseKeys[derivedKeySize], 0)
.then(function(derivation) {
assert_equals(derivation.byteLength, 0, "Derived even with missing info");
}, function(err) {
assert_equals(err.name, "TypeError", "deriveBits missing info correctly threw OperationError: " + err.message);
});
}, testName + " with missing info");
// length null (OperationError) // length null (OperationError)
promise_test(function(test) { promise_test(function(test) {
return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], null) return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], null)

View file

@ -55,14 +55,12 @@ function getTestData() {
var salts = { var salts = {
"normal": new Uint8Array([83, 111, 100, 105, 117, 109, 32, 67, 104, 108, 111, 114, 105, 100, 101, 32, 99, 111, 109, 112, 111, 117, 110, 100]), "normal": new Uint8Array([83, 111, 100, 105, 117, 109, 32, 67, 104, 108, 111, 114, 105, 100, 101, 32, 99, 111, 109, 112, 111, 117, 110, 100]),
"empty": new Uint8Array([]), "empty": new Uint8Array([])
"missing": null
}; };
var infos = { var infos = {
"normal": new Uint8Array([72, 75, 68, 70, 32, 101, 120, 116, 114, 97, 32, 105, 110, 102, 111]), "normal": new Uint8Array([72, 75, 68, 70, 32, 101, 120, 116, 114, 97, 32, 105, 110, 102, 111]),
"empty": new Uint8Array([]), "empty": new Uint8Array([])
"missing": null
}; };
var derivations = { var derivations = {
@ -70,67 +68,37 @@ function getTestData() {
"normal": { "normal": {
"SHA-384": { "SHA-384": {
"normal": new Uint8Array([25, 186, 116, 54, 142, 107, 153, 51, 144, 242, 127, 233, 167, 208, 43, 195, 56, 23, 63, 114, 190, 113, 161, 159, 199, 68, 252, 219, 63, 212, 184, 75]), "normal": new Uint8Array([25, 186, 116, 54, 142, 107, 153, 51, 144, 242, 127, 233, 167, 208, 43, 195, 56, 23, 63, 114, 190, 113, 161, 159, 199, 68, 252, 219, 63, 212, 184, 75]),
"empty": new Uint8Array([151, 96, 31, 78, 12, 83, 165, 211, 243, 162, 129, 0, 153, 188, 104, 32, 236, 80, 8, 52, 52, 118, 155, 89, 252, 36, 164, 23, 169, 84, 55, 52]), "empty": new Uint8Array([151, 96, 31, 78, 12, 83, 165, 211, 243, 162, 129, 0, 153, 188, 104, 32, 236, 80, 8, 52, 52, 118, 155, 89, 252, 36, 164, 23, 169, 84, 55, 52])
"missing": new Uint8Array([151, 96, 31, 78, 12, 83, 165, 211, 243, 162, 129, 0, 153, 188, 104, 32, 236, 80, 8, 52, 52, 118, 155, 89, 252, 36, 164, 23, 169, 84, 55, 52])
}, },
"SHA-512": { "SHA-512": {
"normal": new Uint8Array([75, 189, 109, 178, 67, 95, 182, 150, 21, 127, 96, 137, 201, 119, 195, 199, 63, 62, 172, 94, 243, 221, 107, 170, 230, 4, 203, 83, 191, 187, 21, 62]), "normal": new Uint8Array([75, 189, 109, 178, 67, 95, 182, 150, 21, 127, 96, 137, 201, 119, 195, 199, 63, 62, 172, 94, 243, 221, 107, 170, 230, 4, 203, 83, 191, 187, 21, 62]),
"empty": new Uint8Array([47, 49, 87, 231, 254, 12, 16, 176, 18, 152, 200, 240, 136, 106, 144, 237, 207, 128, 171, 222, 245, 219, 193, 223, 43, 20, 130, 83, 43, 82, 185, 52]), "empty": new Uint8Array([47, 49, 87, 231, 254, 12, 16, 176, 18, 152, 200, 240, 136, 106, 144, 237, 207, 128, 171, 222, 245, 219, 193, 223, 43, 20, 130, 83, 43, 82, 185, 52])
"missing": new Uint8Array([47, 49, 87, 231, 254, 12, 16, 176, 18, 152, 200, 240, 136, 106, 144, 237, 207, 128, 171, 222, 245, 219, 193, 223, 43, 20, 130, 83, 43, 82, 185, 52])
}, },
"SHA-1": { "SHA-1": {
"normal": new Uint8Array([5, 173, 34, 237, 33, 56, 201, 96, 14, 77, 158, 39, 37, 222, 211, 1, 245, 210, 135, 251, 251, 87, 2, 249, 153, 188, 101, 54, 211, 237, 239, 152]), "normal": new Uint8Array([5, 173, 34, 237, 33, 56, 201, 96, 14, 77, 158, 39, 37, 222, 211, 1, 245, 210, 135, 251, 251, 87, 2, 249, 153, 188, 101, 54, 211, 237, 239, 152]),
"empty": new Uint8Array([213, 27, 111, 183, 229, 153, 202, 48, 197, 238, 38, 69, 147, 228, 184, 95, 34, 32, 199, 195, 171, 0, 49, 87, 191, 248, 203, 79, 54, 156, 117, 96]), "empty": new Uint8Array([213, 27, 111, 183, 229, 153, 202, 48, 197, 238, 38, 69, 147, 228, 184, 95, 34, 32, 199, 195, 171, 0, 49, 87, 191, 248, 203, 79, 54, 156, 117, 96])
"missing": new Uint8Array([213, 27, 111, 183, 229, 153, 202, 48, 197, 238, 38, 69, 147, 228, 184, 95, 34, 32, 199, 195, 171, 0, 49, 87, 191, 248, 203, 79, 54, 156, 117, 96])
}, },
"SHA-256": { "SHA-256": {
"normal": new Uint8Array([42, 245, 144, 30, 40, 132, 156, 40, 68, 56, 87, 56, 106, 161, 172, 59, 177, 39, 233, 38, 49, 193, 192, 81, 72, 45, 102, 144, 148, 23, 114, 180]), "normal": new Uint8Array([42, 245, 144, 30, 40, 132, 156, 40, 68, 56, 87, 56, 106, 161, 172, 59, 177, 39, 233, 38, 49, 193, 192, 81, 72, 45, 102, 144, 148, 23, 114, 180]),
"empty": new Uint8Array([158, 75, 113, 144, 51, 116, 33, 1, 233, 15, 26, 214, 30, 47, 243, 180, 37, 104, 99, 102, 114, 150, 215, 67, 137, 241, 240, 42, 242, 196, 230, 166]), "empty": new Uint8Array([158, 75, 113, 144, 51, 116, 33, 1, 233, 15, 26, 214, 30, 47, 243, 180, 37, 104, 99, 102, 114, 150, 215, 67, 137, 241, 240, 42, 242, 196, 230, 166])
"missing": new Uint8Array([158, 75, 113, 144, 51, 116, 33, 1, 233, 15, 26, 214, 30, 47, 243, 180, 37, 104, 99, 102, 114, 150, 215, 67, 137, 241, 240, 42, 242, 196, 230, 166])
} }
}, },
"empty": { "empty": {
"SHA-384": { "SHA-384": {
"normal": new Uint8Array([251, 72, 47, 242, 44, 79, 141, 70, 108, 77, 254, 110, 41, 242, 204, 46, 205, 171, 245, 136, 67, 40, 251, 240, 138, 115, 143, 217, 69, 241, 102, 203]), "normal": new Uint8Array([251, 72, 47, 242, 44, 79, 141, 70, 108, 77, 254, 110, 41, 242, 204, 46, 205, 171, 245, 136, 67, 40, 251, 240, 138, 115, 143, 217, 69, 241, 102, 203]),
"empty": new Uint8Array([30, 2, 60, 23, 179, 64, 83, 60, 234, 239, 57, 35, 12, 184, 179, 187, 219, 246, 99, 161, 61, 96, 117, 208, 221, 50, 108, 4, 148, 120, 251, 165]), "empty": new Uint8Array([30, 2, 60, 23, 179, 64, 83, 60, 234, 239, 57, 35, 12, 184, 179, 187, 219, 246, 99, 161, 61, 96, 117, 208, 221, 50, 108, 4, 148, 120, 251, 165])
"missing": new Uint8Array([30, 2, 60, 23, 179, 64, 83, 60, 234, 239, 57, 35, 12, 184, 179, 187, 219, 246, 99, 161, 61, 96, 117, 208, 221, 50, 108, 4, 148, 120, 251, 165])
}, },
"SHA-512": { "SHA-512": {
"normal": new Uint8Array([241, 123, 91, 220, 216, 215, 211, 212, 96, 16, 54, 161, 148, 54, 49, 125, 22, 68, 249, 164, 224, 149, 110, 252, 14, 55, 43, 131, 172, 218, 207, 219]), "normal": new Uint8Array([241, 123, 91, 220, 216, 215, 211, 212, 96, 16, 54, 161, 148, 54, 49, 125, 22, 68, 249, 164, 224, 149, 110, 252, 14, 55, 43, 131, 172, 218, 207, 219]),
"empty": new Uint8Array([199, 180, 116, 148, 47, 49, 248, 63, 175, 93, 20, 115, 24, 2, 177, 189, 73, 71, 133, 73, 203, 58, 143, 61, 191, 237, 196, 211, 32, 156, 245, 182]), "empty": new Uint8Array([199, 180, 116, 148, 47, 49, 248, 63, 175, 93, 20, 115, 24, 2, 177, 189, 73, 71, 133, 73, 203, 58, 143, 61, 191, 237, 196, 211, 32, 156, 245, 182])
"missing": new Uint8Array([199, 180, 116, 148, 47, 49, 248, 63, 175, 93, 20, 115, 24, 2, 177, 189, 73, 71, 133, 73, 203, 58, 143, 61, 191, 237, 196, 211, 32, 156, 245, 182])
}, },
"SHA-1": { "SHA-1": {
"normal": new Uint8Array([193, 38, 241, 230, 242, 90, 157, 228, 44, 247, 212, 39, 5, 154, 82, 237, 150, 1, 242, 154, 88, 21, 203, 251, 198, 75, 199, 246, 104, 198, 163, 65]), "normal": new Uint8Array([193, 38, 241, 230, 242, 90, 157, 228, 44, 247, 212, 39, 5, 154, 82, 237, 150, 1, 242, 154, 88, 21, 203, 251, 198, 75, 199, 246, 104, 198, 163, 65]),
"empty": new Uint8Array([50, 21, 195, 240, 141, 231, 5, 73, 176, 81, 183, 3, 55, 69, 168, 24, 79, 140, 186, 166, 177, 115, 83, 48, 210, 188, 182, 177, 111, 70, 66, 239]), "empty": new Uint8Array([50, 21, 195, 240, 141, 231, 5, 73, 176, 81, 183, 3, 55, 69, 168, 24, 79, 140, 186, 166, 177, 115, 83, 48, 210, 188, 182, 177, 111, 70, 66, 239])
"missing": new Uint8Array([50, 21, 195, 240, 141, 231, 5, 73, 176, 81, 183, 3, 55, 69, 168, 24, 79, 140, 186, 166, 177, 115, 83, 48, 210, 188, 182, 177, 111, 70, 66, 239])
}, },
"SHA-256": { "SHA-256": {
"normal": new Uint8Array([115, 60, 139, 107, 207, 172, 135, 92, 127, 8, 152, 42, 110, 63, 251, 86, 10, 206, 166, 241, 101, 71, 110, 184, 52, 96, 185, 53, 62, 212, 29, 254]), "normal": new Uint8Array([115, 60, 139, 107, 207, 172, 135, 92, 127, 8, 152, 42, 110, 63, 251, 86, 10, 206, 166, 241, 101, 71, 110, 184, 52, 96, 185, 53, 62, 212, 29, 254]),
"empty": new Uint8Array([200, 225, 39, 116, 19, 83, 5, 201, 20, 127, 44, 196, 118, 110, 94, 173, 37, 216, 244, 87, 185, 161, 149, 61, 82, 103, 115, 97, 206, 213, 88, 251]), "empty": new Uint8Array([200, 225, 39, 116, 19, 83, 5, 201, 20, 127, 44, 196, 118, 110, 94, 173, 37, 216, 244, 87, 185, 161, 149, 61, 82, 103, 115, 97, 206, 213, 88, 251])
"missing": new Uint8Array([200, 225, 39, 116, 19, 83, 5, 201, 20, 127, 44, 196, 118, 110, 94, 173, 37, 216, 244, 87, 185, 161, 149, 61, 82, 103, 115, 97, 206, 213, 88, 251])
}
},
"missing": {
"SHA-384": {
"normal": new Uint8Array([251, 72, 47, 242, 44, 79, 141, 70, 108, 77, 254, 110, 41, 242, 204, 46, 205, 171, 245, 136, 67, 40, 251, 240, 138, 115, 143, 217, 69, 241, 102, 203]),
"empty": new Uint8Array([30, 2, 60, 23, 179, 64, 83, 60, 234, 239, 57, 35, 12, 184, 179, 187, 219, 246, 99, 161, 61, 96, 117, 208, 221, 50, 108, 4, 148, 120, 251, 165]),
"missing": new Uint8Array([30, 2, 60, 23, 179, 64, 83, 60, 234, 239, 57, 35, 12, 184, 179, 187, 219, 246, 99, 161, 61, 96, 117, 208, 221, 50, 108, 4, 148, 120, 251, 165])
},
"SHA-512": {
"normal": new Uint8Array([241, 123, 91, 220, 216, 215, 211, 212, 96, 16, 54, 161, 148, 54, 49, 125, 22, 68, 249, 164, 224, 149, 110, 252, 14, 55, 43, 131, 172, 218, 207, 219]),
"empty": new Uint8Array([199, 180, 116, 148, 47, 49, 248, 63, 175, 93, 20, 115, 24, 2, 177, 189, 73, 71, 133, 73, 203, 58, 143, 61, 191, 237, 196, 211, 32, 156, 245, 182]),
"missing": new Uint8Array([199, 180, 116, 148, 47, 49, 248, 63, 175, 93, 20, 115, 24, 2, 177, 189, 73, 71, 133, 73, 203, 58, 143, 61, 191, 237, 196, 211, 32, 156, 245, 182])
},
"SHA-1": {
"normal": new Uint8Array([193, 38, 241, 230, 242, 90, 157, 228, 44, 247, 212, 39, 5, 154, 82, 237, 150, 1, 242, 154, 88, 21, 203, 251, 198, 75, 199, 246, 104, 198, 163, 65]),
"empty": new Uint8Array([50, 21, 195, 240, 141, 231, 5, 73, 176, 81, 183, 3, 55, 69, 168, 24, 79, 140, 186, 166, 177, 115, 83, 48, 210, 188, 182, 177, 111, 70, 66, 239]),
"missing": new Uint8Array([50, 21, 195, 240, 141, 231, 5, 73, 176, 81, 183, 3, 55, 69, 168, 24, 79, 140, 186, 166, 177, 115, 83, 48, 210, 188, 182, 177, 111, 70, 66, 239])
},
"SHA-256": {
"normal": new Uint8Array([115, 60, 139, 107, 207, 172, 135, 92, 127, 8, 152, 42, 110, 63, 251, 86, 10, 206, 166, 241, 101, 71, 110, 184, 52, 96, 185, 53, 62, 212, 29, 254]),
"empty": new Uint8Array([200, 225, 39, 116, 19, 83, 5, 201, 20, 127, 44, 196, 118, 110, 94, 173, 37, 216, 244, 87, 185, 161, 149, 61, 82, 103, 115, 97, 206, 213, 88, 251]),
"missing": new Uint8Array([200, 225, 39, 116, 19, 83, 5, 201, 20, 127, 44, 196, 118, 110, 94, 173, 37, 216, 244, 87, 185, 161, 149, 61, 82, 103, 115, 97, 206, 213, 88, 251])
} }
} }
}, },
@ -138,67 +106,37 @@ function getTestData() {
"normal": { "normal": {
"SHA-384": { "SHA-384": {
"normal": new Uint8Array([249, 21, 113, 181, 33, 247, 238, 241, 62, 87, 58, 164, 99, 120, 101, 158, 243, 183, 243, 111, 253, 209, 187, 5, 93, 178, 205, 119, 210, 96, 196, 103]), "normal": new Uint8Array([249, 21, 113, 181, 33, 247, 238, 241, 62, 87, 58, 164, 99, 120, 101, 158, 243, 183, 243, 111, 253, 209, 187, 5, 93, 178, 205, 119, 210, 96, 196, 103]),
"empty": new Uint8Array([104, 175, 28, 44, 246, 185, 55, 13, 32, 84, 52, 71, 152, 189, 187, 24, 71, 204, 244, 7, 183, 101, 43, 121, 61, 209, 54, 212, 100, 14, 3, 72]), "empty": new Uint8Array([104, 175, 28, 44, 246, 185, 55, 13, 32, 84, 52, 71, 152, 189, 187, 24, 71, 204, 244, 7, 183, 101, 43, 121, 61, 209, 54, 212, 100, 14, 3, 72])
"missing": new Uint8Array([104, 175, 28, 44, 246, 185, 55, 13, 32, 84, 52, 71, 152, 189, 187, 24, 71, 204, 244, 7, 183, 101, 43, 121, 61, 209, 54, 212, 100, 14, 3, 72])
}, },
"SHA-512": { "SHA-512": {
"normal": new Uint8Array([113, 10, 174, 47, 223, 136, 158, 69, 254, 15, 185, 149, 178, 194, 107, 51, 235, 152, 134, 80, 236, 15, 174, 241, 103, 2, 138, 122, 108, 203, 54, 56]), "normal": new Uint8Array([113, 10, 174, 47, 223, 136, 158, 69, 254, 15, 185, 149, 178, 194, 107, 51, 235, 152, 134, 80, 236, 15, 174, 241, 103, 2, 138, 122, 108, 203, 54, 56]),
"empty": new Uint8Array([229, 222, 86, 128, 129, 199, 30, 86, 39, 80, 130, 152, 113, 195, 66, 117, 129, 4, 118, 94, 214, 243, 6, 240, 97, 60, 157, 75, 179, 54, 242, 170]), "empty": new Uint8Array([229, 222, 86, 128, 129, 199, 30, 86, 39, 80, 130, 152, 113, 195, 66, 117, 129, 4, 118, 94, 214, 243, 6, 240, 97, 60, 157, 75, 179, 54, 242, 170])
"missing": new Uint8Array([229, 222, 86, 128, 129, 199, 30, 86, 39, 80, 130, 152, 113, 195, 66, 117, 129, 4, 118, 94, 214, 243, 6, 240, 97, 60, 157, 75, 179, 54, 242, 170])
}, },
"SHA-1": { "SHA-1": {
"normal": new Uint8Array([127, 149, 126, 220, 188, 227, 203, 11, 112, 86, 110, 30, 182, 14, 253, 30, 64, 90, 19, 48, 76, 102, 29, 54, 99, 119, 129, 9, 191, 6, 137, 156]), "normal": new Uint8Array([127, 149, 126, 220, 188, 227, 203, 11, 112, 86, 110, 30, 182, 14, 253, 30, 64, 90, 19, 48, 76, 102, 29, 54, 99, 119, 129, 9, 191, 6, 137, 156]),
"empty": new Uint8Array([48, 98, 243, 207, 26, 115, 11, 156, 239, 81, 240, 44, 29, 250, 200, 94, 217, 30, 75, 0, 101, 235, 80, 202, 159, 216, 176, 16, 126, 114, 135, 51]), "empty": new Uint8Array([48, 98, 243, 207, 26, 115, 11, 156, 239, 81, 240, 44, 29, 250, 200, 94, 217, 30, 75, 0, 101, 235, 80, 202, 159, 216, 176, 16, 126, 114, 135, 51])
"missing": new Uint8Array([48, 98, 243, 207, 26, 115, 11, 156, 239, 81, 240, 44, 29, 250, 200, 94, 217, 30, 75, 0, 101, 235, 80, 202, 159, 216, 176, 16, 126, 114, 135, 51])
}, },
"SHA-256": { "SHA-256": {
"normal": new Uint8Array([49, 183, 214, 133, 48, 168, 99, 231, 23, 192, 129, 202, 105, 23, 182, 134, 80, 179, 221, 154, 41, 243, 6, 6, 226, 202, 209, 153, 190, 193, 77, 19]), "normal": new Uint8Array([49, 183, 214, 133, 48, 168, 99, 231, 23, 192, 129, 202, 105, 23, 182, 134, 80, 179, 221, 154, 41, 243, 6, 6, 226, 202, 209, 153, 190, 193, 77, 19]),
"empty": new Uint8Array([229, 121, 209, 249, 231, 240, 142, 111, 153, 15, 252, 252, 206, 30, 210, 1, 197, 227, 126, 98, 205, 246, 6, 240, 186, 74, 202, 128, 66, 127, 188, 68]), "empty": new Uint8Array([229, 121, 209, 249, 231, 240, 142, 111, 153, 15, 252, 252, 206, 30, 210, 1, 197, 227, 126, 98, 205, 246, 6, 240, 186, 74, 202, 128, 66, 127, 188, 68])
"missing": new Uint8Array([229, 121, 209, 249, 231, 240, 142, 111, 153, 15, 252, 252, 206, 30, 210, 1, 197, 227, 126, 98, 205, 246, 6, 240, 186, 74, 202, 128, 66, 127, 188, 68])
} }
}, },
"empty": { "empty": {
"SHA-384": { "SHA-384": {
"normal": new Uint8Array([97, 158, 182, 249, 40, 115, 149, 187, 213, 237, 106, 103, 201, 104, 70, 90, 216, 43, 108, 85, 159, 60, 56, 182, 4, 187, 176, 143, 88, 50, 11, 3]), "normal": new Uint8Array([97, 158, 182, 249, 40, 115, 149, 187, 213, 237, 106, 103, 201, 104, 70, 90, 216, 43, 108, 85, 159, 60, 56, 182, 4, 187, 176, 143, 88, 50, 11, 3]),
"empty": new Uint8Array([255, 68, 123, 66, 61, 131, 254, 118, 131, 108, 50, 51, 114, 40, 181, 107, 91, 217, 191, 104, 213, 142, 125, 202, 75, 124, 202, 132, 42, 69, 225, 26]), "empty": new Uint8Array([255, 68, 123, 66, 61, 131, 254, 118, 131, 108, 50, 51, 114, 40, 181, 107, 91, 217, 191, 104, 213, 142, 125, 202, 75, 124, 202, 132, 42, 69, 225, 26])
"missing": new Uint8Array([255, 68, 123, 66, 61, 131, 254, 118, 131, 108, 50, 51, 114, 40, 181, 107, 91, 217, 191, 104, 213, 142, 125, 202, 75, 124, 202, 132, 42, 69, 225, 26])
}, },
"SHA-512": { "SHA-512": {
"normal": new Uint8Array([19, 62, 138, 127, 127, 244, 51, 105, 12, 200, 132, 50, 194, 163, 56, 194, 119, 229, 193, 55, 86, 255, 135, 143, 70, 117, 63, 230, 165, 100, 227, 229]), "normal": new Uint8Array([19, 62, 138, 127, 127, 244, 51, 105, 12, 200, 132, 50, 194, 163, 56, 194, 119, 229, 193, 55, 86, 255, 135, 143, 70, 117, 63, 230, 165, 100, 227, 229]),
"empty": new Uint8Array([222, 84, 247, 238, 200, 12, 156, 198, 109, 52, 159, 201, 135, 248, 13, 70, 29, 178, 239, 79, 244, 225, 133, 5, 210, 139, 216, 12, 180, 44, 125, 118]), "empty": new Uint8Array([222, 84, 247, 238, 200, 12, 156, 198, 109, 52, 159, 201, 135, 248, 13, 70, 29, 178, 239, 79, 244, 225, 133, 5, 210, 139, 216, 12, 180, 44, 125, 118])
"missing": new Uint8Array([222, 84, 247, 238, 200, 12, 156, 198, 109, 52, 159, 201, 135, 248, 13, 70, 29, 178, 239, 79, 244, 225, 133, 5, 210, 139, 216, 12, 180, 44, 125, 118])
}, },
"SHA-1": { "SHA-1": {
"normal": new Uint8Array([173, 185, 60, 219, 206, 121, 183, 213, 17, 89, 182, 192, 19, 26, 43, 98, 242, 56, 40, 210, 106, 205, 104, 94, 52, 192, 101, 53, 230, 247, 116, 150]), "normal": new Uint8Array([173, 185, 60, 219, 206, 121, 183, 213, 17, 89, 182, 192, 19, 26, 43, 98, 242, 56, 40, 210, 106, 205, 104, 94, 52, 192, 101, 53, 230, 247, 116, 150]),
"empty": new Uint8Array([71, 113, 13, 42, 117, 7, 224, 90, 29, 220, 200, 122, 124, 47, 144, 97, 119, 162, 102, 239, 185, 230, 34, 81, 12, 204, 179, 113, 60, 208, 141, 88]), "empty": new Uint8Array([71, 113, 13, 42, 117, 7, 224, 90, 29, 220, 200, 122, 124, 47, 144, 97, 119, 162, 102, 239, 185, 230, 34, 81, 12, 204, 179, 113, 60, 208, 141, 88])
"missing": new Uint8Array([71, 113, 13, 42, 117, 7, 224, 90, 29, 220, 200, 122, 124, 47, 144, 97, 119, 162, 102, 239, 185, 230, 34, 81, 12, 204, 179, 113, 60, 208, 141, 88])
}, },
"SHA-256": { "SHA-256": {
"normal": new Uint8Array([164, 1, 215, 201, 21, 138, 41, 229, 199, 25, 58, 185, 115, 15, 7, 72, 133, 28, 197, 186, 173, 180, 44, 173, 2, 75, 98, 144, 254, 33, 52, 54]), "normal": new Uint8Array([164, 1, 215, 201, 21, 138, 41, 229, 199, 25, 58, 185, 115, 15, 7, 72, 133, 28, 197, 186, 173, 180, 44, 173, 2, 75, 98, 144, 254, 33, 52, 54]),
"empty": new Uint8Array([180, 247, 231, 85, 118, 116, 213, 1, 203, 251, 192, 20, 138, 216, 0, 192, 117, 1, 137, 254, 41, 90, 42, 202, 94, 27, 244, 18, 44, 133, 237, 249]), "empty": new Uint8Array([180, 247, 231, 85, 118, 116, 213, 1, 203, 251, 192, 20, 138, 216, 0, 192, 117, 1, 137, 254, 41, 90, 42, 202, 94, 27, 244, 18, 44, 133, 237, 249])
"missing": new Uint8Array([180, 247, 231, 85, 118, 116, 213, 1, 203, 251, 192, 20, 138, 216, 0, 192, 117, 1, 137, 254, 41, 90, 42, 202, 94, 27, 244, 18, 44, 133, 237, 249])
}
},
"missing": {
"SHA-384": {
"normal": new Uint8Array([97, 158, 182, 249, 40, 115, 149, 187, 213, 237, 106, 103, 201, 104, 70, 90, 216, 43, 108, 85, 159, 60, 56, 182, 4, 187, 176, 143, 88, 50, 11, 3]),
"empty": new Uint8Array([255, 68, 123, 66, 61, 131, 254, 118, 131, 108, 50, 51, 114, 40, 181, 107, 91, 217, 191, 104, 213, 142, 125, 202, 75, 124, 202, 132, 42, 69, 225, 26]),
"missing": new Uint8Array([255, 68, 123, 66, 61, 131, 254, 118, 131, 108, 50, 51, 114, 40, 181, 107, 91, 217, 191, 104, 213, 142, 125, 202, 75, 124, 202, 132, 42, 69, 225, 26])
},
"SHA-512": {
"normal": new Uint8Array([19, 62, 138, 127, 127, 244, 51, 105, 12, 200, 132, 50, 194, 163, 56, 194, 119, 229, 193, 55, 86, 255, 135, 143, 70, 117, 63, 230, 165, 100, 227, 229]),
"empty": new Uint8Array([222, 84, 247, 238, 200, 12, 156, 198, 109, 52, 159, 201, 135, 248, 13, 70, 29, 178, 239, 79, 244, 225, 133, 5, 210, 139, 216, 12, 180, 44, 125, 118]),
"missing": new Uint8Array([222, 84, 247, 238, 200, 12, 156, 198, 109, 52, 159, 201, 135, 248, 13, 70, 29, 178, 239, 79, 244, 225, 133, 5, 210, 139, 216, 12, 180, 44, 125, 118])
},
"SHA-1": {
"normal": new Uint8Array([173, 185, 60, 219, 206, 121, 183, 213, 17, 89, 182, 192, 19, 26, 43, 98, 242, 56, 40, 210, 106, 205, 104, 94, 52, 192, 101, 53, 230, 247, 116, 150]),
"empty": new Uint8Array([71, 113, 13, 42, 117, 7, 224, 90, 29, 220, 200, 122, 124, 47, 144, 97, 119, 162, 102, 239, 185, 230, 34, 81, 12, 204, 179, 113, 60, 208, 141, 88]),
"missing": new Uint8Array([71, 113, 13, 42, 117, 7, 224, 90, 29, 220, 200, 122, 124, 47, 144, 97, 119, 162, 102, 239, 185, 230, 34, 81, 12, 204, 179, 113, 60, 208, 141, 88])
},
"SHA-256": {
"normal": new Uint8Array([164, 1, 215, 201, 21, 138, 41, 229, 199, 25, 58, 185, 115, 15, 7, 72, 133, 28, 197, 186, 173, 180, 44, 173, 2, 75, 98, 144, 254, 33, 52, 54]),
"empty": new Uint8Array([180, 247, 231, 85, 118, 116, 213, 1, 203, 251, 192, 20, 138, 216, 0, 192, 117, 1, 137, 254, 41, 90, 42, 202, 94, 27, 244, 18, 44, 133, 237, 249]),
"missing": new Uint8Array([180, 247, 231, 85, 118, 116, 213, 1, 203, 251, 192, 20, 138, 216, 0, 192, 117, 1, 137, 254, 41, 90, 42, 202, 94, 27, 244, 18, 44, 133, 237, 249])
} }
} }
}, },
@ -206,67 +144,37 @@ function getTestData() {
"normal": { "normal": {
"SHA-384": { "SHA-384": {
"normal": new Uint8Array([106, 134, 50, 228, 134, 137, 157, 194, 100, 241, 161, 249, 32, 89, 63, 40, 128, 128, 78, 14, 26, 218, 207, 148, 235, 78, 213, 229, 248, 61, 13, 18]), "normal": new Uint8Array([106, 134, 50, 228, 134, 137, 157, 194, 100, 241, 161, 249, 32, 89, 63, 40, 128, 128, 78, 14, 26, 218, 207, 148, 235, 78, 213, 229, 248, 61, 13, 18]),
"empty": new Uint8Array([234, 80, 18, 254, 181, 135, 81, 213, 188, 142, 182, 78, 13, 234, 205, 89, 126, 215, 16, 201, 243, 82, 88, 174, 107, 154, 8, 122, 237, 7, 37, 174]), "empty": new Uint8Array([234, 80, 18, 254, 181, 135, 81, 213, 188, 142, 182, 78, 13, 234, 205, 89, 126, 215, 16, 201, 243, 82, 88, 174, 107, 154, 8, 122, 237, 7, 37, 174])
"missing": new Uint8Array([234, 80, 18, 254, 181, 135, 81, 213, 188, 142, 182, 78, 13, 234, 205, 89, 126, 215, 16, 201, 243, 82, 88, 174, 107, 154, 8, 122, 237, 7, 37, 174])
}, },
"SHA-512": { "SHA-512": {
"normal": new Uint8Array([199, 151, 225, 209, 242, 202, 183, 242, 138, 95, 67, 69, 92, 16, 89, 127, 148, 51, 133, 237, 251, 66, 140, 254, 43, 152, 190, 212, 169, 85, 215, 161]), "normal": new Uint8Array([199, 151, 225, 209, 242, 202, 183, 242, 138, 95, 67, 69, 92, 16, 89, 127, 148, 51, 133, 237, 251, 66, 140, 254, 43, 152, 190, 212, 169, 85, 215, 161]),
"empty": new Uint8Array([224, 140, 220, 196, 197, 166, 170, 121, 157, 134, 188, 3, 169, 84, 117, 39, 110, 187, 128, 29, 154, 222, 1, 110, 20, 168, 250, 91, 100, 5, 22, 81]), "empty": new Uint8Array([224, 140, 220, 196, 197, 166, 170, 121, 157, 134, 188, 3, 169, 84, 117, 39, 110, 187, 128, 29, 154, 222, 1, 110, 20, 168, 250, 91, 100, 5, 22, 81])
"missing": new Uint8Array([224, 140, 220, 196, 197, 166, 170, 121, 157, 134, 188, 3, 169, 84, 117, 39, 110, 187, 128, 29, 154, 222, 1, 110, 20, 168, 250, 91, 100, 5, 22, 81])
}, },
"SHA-1": { "SHA-1": {
"normal": new Uint8Array([171, 103, 158, 103, 188, 180, 48, 95, 238, 66, 239, 148, 14, 80, 156, 221, 212, 6, 227, 73, 143, 133, 116, 24, 169, 121, 171, 57, 207, 49, 95, 81]), "normal": new Uint8Array([171, 103, 158, 103, 188, 180, 48, 95, 238, 66, 239, 148, 14, 80, 156, 221, 212, 6, 227, 73, 143, 133, 116, 24, 169, 121, 171, 57, 207, 49, 95, 81]),
"empty": new Uint8Array([254, 66, 33, 135, 24, 140, 134, 54, 211, 109, 170, 213, 142, 242, 132, 49, 164, 51, 191, 15, 239, 114, 209, 202, 231, 53, 160, 75, 219, 190, 185, 211]), "empty": new Uint8Array([254, 66, 33, 135, 24, 140, 134, 54, 211, 109, 170, 213, 142, 242, 132, 49, 164, 51, 191, 15, 239, 114, 209, 202, 231, 53, 160, 75, 219, 190, 185, 211])
"missing": new Uint8Array([254, 66, 33, 135, 24, 140, 134, 54, 211, 109, 170, 213, 142, 242, 132, 49, 164, 51, 191, 15, 239, 114, 209, 202, 231, 53, 160, 75, 219, 190, 185, 211])
}, },
"SHA-256": { "SHA-256": {
"normal": new Uint8Array([223, 146, 185, 169, 250, 156, 1, 184, 152, 206, 234, 161, 49, 52, 131, 46, 49, 203, 28, 8, 29, 22, 165, 35, 92, 105, 216, 86, 81, 227, 23, 172]), "normal": new Uint8Array([223, 146, 185, 169, 250, 156, 1, 184, 152, 206, 234, 161, 49, 52, 131, 46, 49, 203, 28, 8, 29, 22, 165, 35, 92, 105, 216, 86, 81, 227, 23, 172]),
"empty": new Uint8Array([230, 13, 67, 43, 6, 238, 136, 157, 250, 183, 41, 154, 32, 236, 35, 105, 117, 49, 209, 25, 252, 247, 102, 208, 152, 141, 10, 203, 12, 0, 199, 247]), "empty": new Uint8Array([230, 13, 67, 43, 6, 238, 136, 157, 250, 183, 41, 154, 32, 236, 35, 105, 117, 49, 209, 25, 252, 247, 102, 208, 152, 141, 10, 203, 12, 0, 199, 247])
"missing": new Uint8Array([230, 13, 67, 43, 6, 238, 136, 157, 250, 183, 41, 154, 32, 236, 35, 105, 117, 49, 209, 25, 252, 247, 102, 208, 152, 141, 10, 203, 12, 0, 199, 247])
} }
}, },
"empty": { "empty": {
"SHA-384": { "SHA-384": {
"normal": new Uint8Array([234, 203, 157, 102, 112, 255, 59, 25, 4, 119, 154, 65, 145, 1, 177, 255, 170, 189, 109, 101, 16, 189, 80, 133, 104, 1, 116, 106, 135, 31, 123, 49]), "normal": new Uint8Array([234, 203, 157, 102, 112, 255, 59, 25, 4, 119, 154, 65, 145, 1, 177, 255, 170, 189, 109, 101, 16, 189, 80, 133, 104, 1, 116, 106, 135, 31, 123, 49]),
"empty": new Uint8Array([71, 12, 198, 83, 135, 202, 74, 16, 199, 166, 138, 59, 81, 72, 200, 229, 19, 218, 166, 49, 1, 0, 7, 57, 196, 198, 101, 155, 134, 17, 136, 132]), "empty": new Uint8Array([71, 12, 198, 83, 135, 202, 74, 16, 199, 166, 138, 59, 81, 72, 200, 229, 19, 218, 166, 49, 1, 0, 7, 57, 196, 198, 101, 155, 134, 17, 136, 132])
"missing": new Uint8Array([71, 12, 198, 83, 135, 202, 74, 16, 199, 166, 138, 59, 81, 72, 200, 229, 19, 218, 166, 49, 1, 0, 7, 57, 196, 198, 101, 155, 134, 17, 136, 132])
}, },
"SHA-512": { "SHA-512": {
"normal": new Uint8Array([87, 3, 145, 116, 241, 111, 84, 24, 168, 104, 86, 218, 235, 119, 246, 157, 75, 77, 80, 0, 51, 75, 109, 209, 244, 244, 179, 231, 179, 220, 185, 211]), "normal": new Uint8Array([87, 3, 145, 116, 241, 111, 84, 24, 168, 104, 86, 218, 235, 119, 246, 157, 75, 77, 80, 0, 51, 75, 109, 209, 244, 244, 179, 231, 179, 220, 185, 211]),
"empty": new Uint8Array([157, 115, 201, 142, 121, 30, 128, 235, 229, 180, 203, 69, 105, 58, 163, 47, 221, 68, 181, 250, 62, 218, 179, 236, 130, 249, 208, 244, 214, 105, 5, 226]), "empty": new Uint8Array([157, 115, 201, 142, 121, 30, 128, 235, 229, 180, 203, 69, 105, 58, 163, 47, 221, 68, 181, 250, 62, 218, 179, 236, 130, 249, 208, 244, 214, 105, 5, 226])
"missing": new Uint8Array([157, 115, 201, 142, 121, 30, 128, 235, 229, 180, 203, 69, 105, 58, 163, 47, 221, 68, 181, 250, 62, 218, 179, 236, 130, 249, 208, 244, 214, 105, 5, 226])
}, },
"SHA-1": { "SHA-1": {
"normal": new Uint8Array([161, 189, 216, 195, 50, 198, 70, 74, 75, 182, 162, 242, 49, 174, 201, 164, 68, 35, 126, 171, 224, 77, 47, 85, 242, 171, 37, 212, 12, 84, 235, 238]), "normal": new Uint8Array([161, 189, 216, 195, 50, 198, 70, 74, 75, 182, 162, 242, 49, 174, 201, 164, 68, 35, 126, 171, 224, 77, 47, 85, 242, 171, 37, 212, 12, 84, 235, 238]),
"empty": new Uint8Array([136, 95, 192, 41, 179, 34, 75, 137, 110, 9, 224, 187, 229, 235, 52, 126, 197, 158, 104, 39, 200, 232, 87, 179, 148, 245, 79, 244, 155, 136, 168, 246]), "empty": new Uint8Array([136, 95, 192, 41, 179, 34, 75, 137, 110, 9, 224, 187, 229, 235, 52, 126, 197, 158, 104, 39, 200, 232, 87, 179, 148, 245, 79, 244, 155, 136, 168, 246])
"missing": new Uint8Array([136, 95, 192, 41, 179, 34, 75, 137, 110, 9, 224, 187, 229, 235, 52, 126, 197, 158, 104, 39, 200, 232, 87, 179, 148, 245, 79, 244, 155, 136, 168, 246])
}, },
"SHA-256": { "SHA-256": {
"normal": new Uint8Array([183, 184, 110, 66, 42, 209, 200, 165, 113, 253, 165, 40, 218, 22, 160, 102, 244, 36, 134, 221, 64, 86, 121, 47, 217, 51, 98, 8, 142, 93, 212, 194]), "normal": new Uint8Array([183, 184, 110, 66, 42, 209, 200, 165, 113, 253, 165, 40, 218, 22, 160, 102, 244, 36, 134, 221, 64, 86, 121, 47, 217, 51, 98, 8, 142, 93, 212, 194]),
"empty": new Uint8Array([235, 112, 240, 29, 237, 233, 175, 175, 164, 73, 238, 225, 177, 40, 101, 4, 225, 246, 35, 136, 179, 247, 221, 79, 149, 102, 151, 176, 232, 40, 254, 24]), "empty": new Uint8Array([235, 112, 240, 29, 237, 233, 175, 175, 164, 73, 238, 225, 177, 40, 101, 4, 225, 246, 35, 136, 179, 247, 221, 79, 149, 102, 151, 176, 232, 40, 254, 24])
"missing": new Uint8Array([235, 112, 240, 29, 237, 233, 175, 175, 164, 73, 238, 225, 177, 40, 101, 4, 225, 246, 35, 136, 179, 247, 221, 79, 149, 102, 151, 176, 232, 40, 254, 24])
}
},
"missing": {
"SHA-384": {
"normal": new Uint8Array([234, 203, 157, 102, 112, 255, 59, 25, 4, 119, 154, 65, 145, 1, 177, 255, 170, 189, 109, 101, 16, 189, 80, 133, 104, 1, 116, 106, 135, 31, 123, 49]),
"empty": new Uint8Array([71, 12, 198, 83, 135, 202, 74, 16, 199, 166, 138, 59, 81, 72, 200, 229, 19, 218, 166, 49, 1, 0, 7, 57, 196, 198, 101, 155, 134, 17, 136, 132]),
"missing": new Uint8Array([71, 12, 198, 83, 135, 202, 74, 16, 199, 166, 138, 59, 81, 72, 200, 229, 19, 218, 166, 49, 1, 0, 7, 57, 196, 198, 101, 155, 134, 17, 136, 132])
},
"SHA-512": {
"normal": new Uint8Array([87, 3, 145, 116, 241, 111, 84, 24, 168, 104, 86, 218, 235, 119, 246, 157, 75, 77, 80, 0, 51, 75, 109, 209, 244, 244, 179, 231, 179, 220, 185, 211]),
"empty": new Uint8Array([157, 115, 201, 142, 121, 30, 128, 235, 229, 180, 203, 69, 105, 58, 163, 47, 221, 68, 181, 250, 62, 218, 179, 236, 130, 249, 208, 244, 214, 105, 5, 226]),
"missing": new Uint8Array([157, 115, 201, 142, 121, 30, 128, 235, 229, 180, 203, 69, 105, 58, 163, 47, 221, 68, 181, 250, 62, 218, 179, 236, 130, 249, 208, 244, 214, 105, 5, 226])
},
"SHA-1": {
"normal": new Uint8Array([161, 189, 216, 195, 50, 198, 70, 74, 75, 182, 162, 242, 49, 174, 201, 164, 68, 35, 126, 171, 224, 77, 47, 85, 242, 171, 37, 212, 12, 84, 235, 238]),
"empty": new Uint8Array([136, 95, 192, 41, 179, 34, 75, 137, 110, 9, 224, 187, 229, 235, 52, 126, 197, 158, 104, 39, 200, 232, 87, 179, 148, 245, 79, 244, 155, 136, 168, 246]),
"missing": new Uint8Array([136, 95, 192, 41, 179, 34, 75, 137, 110, 9, 224, 187, 229, 235, 52, 126, 197, 158, 104, 39, 200, 232, 87, 179, 148, 245, 79, 244, 155, 136, 168, 246])
},
"SHA-256": {
"normal": new Uint8Array([183, 184, 110, 66, 42, 209, 200, 165, 113, 253, 165, 40, 218, 22, 160, 102, 244, 36, 134, 221, 64, 86, 121, 47, 217, 51, 98, 8, 142, 93, 212, 194]),
"empty": new Uint8Array([235, 112, 240, 29, 237, 233, 175, 175, 164, 73, 238, 225, 177, 40, 101, 4, 225, 246, 35, 136, 179, 247, 221, 79, 149, 102, 151, 176, 232, 40, 254, 24]),
"missing": new Uint8Array([235, 112, 240, 29, 237, 233, 175, 175, 164, 73, 238, 225, 177, 40, 101, 4, 225, 246, 35, 136, 179, 247, 221, 79, 149, 102, 151, 176, 232, 40, 254, 24])
} }
} }
} }

View file

@ -1,25 +0,0 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>XMLHttpRequest Test: event - error</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<meta name="assert" content="Check if event onerror is fired When the request has failed.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
async_test(function (t) {
var client = new XMLHttpRequest();
client.onerror = t.step_func(function(e) {
assert_true(e instanceof ProgressEvent);
assert_equals(e.type, "error");
t.done();
});
client.open("GET", "http://nonexistent-origin.{{host}}:{{ports[http][0]}}");
client.send("null");
}, document.title);
</script>

View file

@ -11,7 +11,7 @@
<script> <script>
test(function() { test(function() {
var client = new XMLHttpRequest() var client = new XMLHttpRequest()
client.open("POST", "resources/inspect-headers.py?filter_value=t1, t2, t3", false) client.open("POST", "resources/inspect-headers.py?filter_value=t1,t2,t3", false)
client.setRequestHeader("x-test", "t1") client.setRequestHeader("x-test", "t1")
client.setRequestHeader("X-TEST", "t2") client.setRequestHeader("X-TEST", "t2")
client.setRequestHeader("X-teST", "t3") client.setRequestHeader("X-teST", "t3")

View file

@ -4,7 +4,7 @@
<title>XMLHttpRequest: setRequestHeader() - headers that are allowed</title> <title>XMLHttpRequest: setRequestHeader() - headers that are allowed</title>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<link rel="help" href="https://xhr.spec.whatwg.org/#the-setrequestheader()-method" data-tested-assertations="/following::ol/li[6] /following::ol/li[7]" /> <link rel="help" href="https://xhr.spec.whatwg.org/#the-setrequestheader()-method" data-tested-assertations="/following::ol/li[6] /following::ol/li[7]" />
</head> </head>
<body> <body>
<div id="log"></div> <div id="log"></div>
@ -12,7 +12,7 @@
function request(header) { function request(header) {
test(function() { test(function() {
var client = new XMLHttpRequest() var client = new XMLHttpRequest()
client.open("POST", "resources/inspect-headers.py?filter_value=t1, t2", false) client.open("POST", "resources/inspect-headers.py?filter_value=t1,t2", false)
client.setRequestHeader(header, "t1") client.setRequestHeader(header, "t1")
client.setRequestHeader(header, "t2") client.setRequestHeader(header, "t2")
client.send(null) client.send(null)

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>AmbientLightSensor Test: Sensor readings must only be available in the top-level browsing context</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://www.w3.org/TR/ambient-light/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<iframe src="support-iframe.html" id="frame" style="display:none">
</iframe>
<script>
async_test(function (t) {
document.getElementById('frame').onload = t.step_func_done(function(event) {
var iframe = document.getElementById('frame').contentWindow;
let reading = iframe.document.getElementById('reading').value;
assert_equals(reading, "null");
});
}, "sensor readings can not be fired within iframes");
test(function() {
let sensor = new AmbientLightSensor();
sensor.start();
var win = window.open('', '_blank');
let reading = String(sensor.reading);
win.close();
sensor.stop();
assert_equals(reading, "null");
}, "sensor readings can not be fired on the background tab");
</script>

View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>AmbientLightSensor Test: onchange</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://www.w3.org/TR/ambient-light/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<h2>Description</h2>
<p>
This test validates that the "onchange" event can be invoked when changing the ambient light illuminance of the device.
</p>
<h2>Precondition</h2>
<ol>
<li>
Change the ambient light illuminance of the device.
</li>
</ol>
<script>
async_test(function(t) {
let sensor = new AmbientLightSensor();
sensor.start();
sensor.onchange = t.step_func_done(function(event) {
sensor.stop();
});
sensor.onerror = t.step_func_done(function(event) {
assert_unreached(event.error.name + ":" + event.error.message);
});
}, "event change fired");
</script>

View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>AmbientLightSensor Test: onstatechange</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://www.w3.org/TR/ambient-light/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var sensor;
setup(function() {
sensor = new AmbientLightSensor();
});
test(function() {
assert_equals(sensor.state, "idle");
}, "The default sensor.state is 'idle'.");
async_test(function(t) {
sensor.onstatechange = t.step_func_done(function(event) {
assert_equals(sensor.state, "activating");
});
sensor.onerror = t.step_func_done(function(event) {
assert_unreached(event.error.name + ":" + event.error.message);
});
sensor.start();
}, "The sensor.state changes to 'activating' after sensor.start().");
async_test(function(t) {
sensor.onstatechange = t.step_func_done(function(event) {
assert_equals(sensor.state, "idle");
});
sensor.onerror = t.step_func_done(function(event) {
assert_unreached(event.error.name + ":" + event.error.message);
});
sensor.stop();
}, "The sensor.state changes to 'idle' after sensor.stop().");
</script>

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>AmbientLightSensor Test: start()</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://www.w3.org/TR/ambient-light/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var sensor, start_return;
setup(function() {
sensor = new AmbientLightSensor();
start_return = sensor.start();
});
test(function() {
assert_equals(String(sensor.reading), "[object AmbientLightSensorReading]");
}, "the sensor.reading is AmbientLightSensorReading after executing start() method");
test(function() {
assert_throws("InvalidStateError", function() { sensor.start(); }, "start() twice");
}, "throw an InvalidStateError exception when state is neither idle nor errored");
//TODO: The permission is not ready.
test(function() {
assert_equals(start_return, undefined);
}, "the sensor.start() return undefined");
</script>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>AmbientLightSensor Test: stop()</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://www.w3.org/TR/ambient-light/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var sensor, stop_return;
setup(function() {
sensor = new AmbientLightSensor();
sensor.start();
stop_return = sensor.stop();
});
test(function() {
assert_equals(String(sensor.reading), "null");
}, "the sensor.reading is null after executing stop() method");
test(function() {
assert_throws("InvalidStateError", function() { sensor.stop(); }, "stop() twice");
}, "throw an InvalidStateError exception when state is either idle or errored");
test(function() {
assert_equals(stop_return, undefined);
}, "the sensor.stop() returns undefined");
</script>

View file

@ -98,7 +98,7 @@ dictionary AmbientLightSensorReadingInit {
idl_array.add_objects({ idl_array.add_objects({
AmbientLightSensor: ['new AmbientLightSensor();'], AmbientLightSensor: ['new AmbientLightSensor();'],
AmbientLightSensorReading: ['new AmbientLightSensorReading({ illuminance: 750 });'], AmbientLightSensorReading: ['new AmbientLightSensorReading({ illuminance: 750 });'],
SensorReadingEvent: ['new SensorReadingEvent({ reading: new AmbientLightSensorReading({ illuminance: 750 }) });'] SensorReadingEvent: ['new SensorReadingEvent("reading", { reading: new AmbientLightSensorReading({ illuminance: 750 }) });']
}); });
idl_array.test(); idl_array.test();

View file

@ -0,0 +1,11 @@
<!DOCTYPE HTML>
<meta charset="utf-8">
<input type="text" id="reading" />
<script>
let sensor = new AmbientLightSensor();
sensor.start();
document.getElementById("reading").value = String(sensor.reading);
sensor.stop();
</script>

View file

@ -5,7 +5,7 @@
"expectedResult": "valid", "expectedResult": "valid",
"onUnexpectedResult" : "failAndContinue", "onUnexpectedResult" : "failAndContinue",
"errorMessage": "ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.", "errorMessage": "ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.",
"title": "Annotation has **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", "title": "Implements **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)",
"description": "True when the Annotation has @context key and 'http://www.w3.org/ns/anno.jsonld' is an @context value (Section 3.1)", "description": "True when the Annotation has @context key and 'http://www.w3.org/ns/anno.jsonld' is an @context value (Section 3.1)",
"type": "object", "type": "object",
"required": [ "@context" ], "required": [ "@context" ],

View file

@ -5,7 +5,7 @@
"expectedResult": "valid", "expectedResult": "valid",
"onUnexpectedResult" : "failAndContinue", "onUnexpectedResult" : "failAndContinue",
"errorMessage": "ERROR: Annotation is missing id key or its value is not a single string of format uri.", "errorMessage": "ERROR: Annotation is missing id key or its value is not a single string of format uri.",
"title": "Annotation has **_id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", "title": "Implements **Annotation _id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)",
"description": "True when the Annotation has a single id that is a string of format uri (Section 3.1)", "description": "True when the Annotation has a single id that is a string of format uri (Section 3.1)",
"$ref": "id.json#/definitions/idValueFound" "$ref": "id.json#/definitions/idValueFound"
} }

View file

@ -5,7 +5,7 @@
"expectedResult": "valid", "expectedResult": "valid",
"onUnexpectedResult" : "failAndContinue", "onUnexpectedResult" : "failAndContinue",
"errorMessage": "ERROR: Annotation is missing type key or 'Annotation' is not a value of type.", "errorMessage": "ERROR: Annotation is missing type key or 'Annotation' is not a value of type.",
"title": "Annotation has **_type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", "title": "Implements **Annotation _type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)",
"allOf": [ "allOf": [
{ "$ref": "annotations.json#/definitions/annotationTypeValueFound"} { "$ref": "annotations.json#/definitions/annotationTypeValueFound"}
] ]

View file

@ -5,7 +5,7 @@
"expectedResult": "valid", "expectedResult": "valid",
"onUnexpectedResult" : "failAndContinue", "onUnexpectedResult" : "failAndContinue",
"errorMessage": "Error: Annotation is missing target key.", "errorMessage": "Error: Annotation is missing target key.",
"title": "Annotation has a **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", "title": "Implements **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)",
"description": "True when the Annotation has a target key (Section 3.1)", "description": "True when the Annotation has a target key (Section 3.1)",
"type": "object", "type": "object",
"required": ["target" ] "required": ["target" ]

View file

@ -6,7 +6,7 @@
"onUnexpectedResult" : "failAndContinue", "onUnexpectedResult" : "failAndContinue",
"errorMessage": "ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.", "errorMessage": "ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.",
"title": "If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", "title": "If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)",
"description": "True when all Body(ies) are one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource (Sections 3.2, Section 4)", "description": "True when all Bodies are one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource (Sections 3.2, Section 4)",
"type": "object", "type": "object",
"properties": "properties":
{ {

View file

@ -1,10 +1,10 @@
{ {
"$schema": "http://json-schema.org/draft-04/schema#", "$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.3.1-annotationCreatedImplemented.json", "id": "3.3.1-annotationCreatedImplemented.json",
"assertionType": "may", "assertionType": "should",
"expectedResult": "valid", "expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue", "onUnexpectedResult" : "passAndContinue",
"errorMessage": "Valid Annotation-level created key not found. Annotation may have zero or exactly one created key value.", "errorMessage": "Valid Annotation-level created key not found. Annotation should have exactly one created key value.",
"title": "Implements Annotation-level **_created_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", "title": "Implements Annotation-level **_created_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)",
"description": "True when the Annotation implements exactly one created key value (Section 3.3.1)", "description": "True when the Annotation implements exactly one created key value (Section 3.3.1)",
"allOf": "allOf":

View file

@ -1,6 +1,6 @@
{ {
"$schema": "http://json-schema.org/draft-04/schema#", "$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.3.7-annotationviaValidated.json", "id": "3.3.7-annotationViaValidated.json",
"assertionType": "must", "assertionType": "must",
"expectedResult": "valid", "expectedResult": "valid",
"onUnexpectedResult" : "failAndContinue", "onUnexpectedResult" : "failAndContinue",

View file

@ -1,25 +0,0 @@
{
"@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
"name": "Annotation implements optional keys and meets optional key value constraints for Creator and Generator Agents",
"description": "Agents (Creators, Generators) involved in an Annotation: <ul> <li>Should include certain properties (keys)</li> <li>May include additional keys</li> <li>should have Agent key values that conform to model recommended constraints</li> </ul> Note: failing an assertion indicates that a recommended or optional feature has not been implemented or has not been implemented correctly.",
"testType": "manual",
"ref": "https://www.w3.org/TR/annotation-model/#other-properties",
"assertions": [
"annotations/3.3.2-annotationCreatorAgentIdImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentIdImplemented.json",
"annotations/3.3.2-annotationCreatorAgentTypeImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json",
"annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json",
"annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json",
"annotations/3.3.2-annotationCreatorAgentNameImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentNameImplemented.json",
"annotations/3.3.2-annotationCreatorAgentEmailImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json",
"annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json",
"annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json",
"annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json"
]
}

View file

@ -1,7 +1,8 @@
<!doctype html> <!doctype html>
<html> <html>
<head> <head>
<title>Annotation has all required keys and all annotation keys used meet required value constraints</title> <title>A single ANNOTATION has all required keys and all annotation keys used meet required value constraints</title>
<link rel="stylesheet" href="/resources/testharness.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/annotation-model/scripts/ajv.min.js"></script> <script src="/annotation-model/scripts/ajv.min.js"></script>
@ -11,26 +12,12 @@
setup({explicit_timeout: true, explicit_done: true }); setup({explicit_timeout: true, explicit_done: true });
var theDefinitions=[ var theDefinitions=[
"definitions/compositeDetected.json",
"definitions/processingLanguageDetected.json",
"definitions/textDirectionDetected.json",
"definitions/independentsDetected.json",
"definitions/specificResource.json", "definitions/specificResource.json",
"definitions/stringUri.json",
"definitions/choiceSet.json", "definitions/choiceSet.json",
"definitions/bodyTarget.json", "definitions/bodyTarget.json",
"definitions/listDetected.json",
"definitions/formatDetected.json",
"definitions/annotations.json", "definitions/annotations.json",
"definitions/otherProperties.json", "definitions/otherProperties.json",
"definitions/choiceDetected.json", "definitions/id.json"
"definitions/externalWebResource.json",
"definitions/externalWebResourceDetected.json",
"definitions/languageDetected.json",
"definitions/textualBody.json",
"definitions/id.json",
"definitions/itemsDetected.json",
"definitions/specificResourceDetected.json"
]; ];
var theTestFile="annotationMusts.test"; var theTestFile="annotationMusts.test";
@ -49,13 +36,13 @@ var runningTest = new JSONtest( {
<p>Fill the textarea below with JSON output from your annotation client <p>Fill the textarea below with JSON output from your annotation client
implementation that supports the following criteria:</p> implementation that supports the following criteria:</p>
<div id="testDescription"></div> <div id="testDescription"></div>
<p>Specifically, the following assertions will be evaluated:</p>
<div id="assertion"></div>
<form name="annotation" id="annotation"> <form name="annotation" id="annotation">
<textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea> <textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea>
<p><input type="button" id="annotation-run" name="Loading..." value="Loading..."> <p><input type="button" id="annotation-run" name="Loading..." value="Loading...">
<input style="display: none" type="button" id="annotation-close" <input style="display: none" type="button" id="annotation-close"
name="Close" value="Close"></p> name="Close" value="Close"></p>
</form> </form>
<p>Specifically, the following assertions will be evaluated:</p>
<div id="assertion"></div>
</body> </body>
</html> </html>

View file

@ -1,9 +1,9 @@
{ {
"@context": "https://www.w3.org/ns/JSONtest-v1.jsonld", "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
"name": "Annotation has all required keys and all annotation keys used meet required value constraints", "name": "A single ANNOTATION has all required keys and all annotation keys used meet required value constraints",
"description": "Web Annotations: <ul> <li>MUST include certain properties (keys)</li> <li>MUST NOT have both body and bodyValue keys simultaneously</li> <li>MUST satisfy model constraints on values of required and any optional Annotation keys used</li> </ul> Note: Optional Annotation keys, optional constraints on key values, and optional and required details of body(ies) and target(s) checked by other tests.", "description": "Web Annotations: <ul> <li>MUST include certain properties (keys)</li> <li>MUST NOT have both body and bodyValue keys simultaneously</li> <li>MUST satisfy model constraints on values of required and any optional Annotation keys used</li> </ul> Note: Implementation of optional Annotation keys (features), optional constraints on key values, and optional keys and constraints on Agents involved in an Annotation checked by other tests.",
"testType": "manual", "testType": "manual",
"ref": "https://www.w3.org/TR/annotation-model/#annotations", "ref": "https://www.w3.org/TR/annotation-model/",
"assertions": [ "assertions": [
"annotations/3.1-annotationContextValidated.json", "annotations/3.1-annotationContextValidated.json",
"annotations/3.1-annotationIdValidated.json", "annotations/3.1-annotationIdValidated.json",
@ -18,6 +18,46 @@
"annotations/3.3.1-annotationGeneratedValidated.json", "annotations/3.3.1-annotationGeneratedValidated.json",
"annotations/3.3.6-annotationRightsValidated.json", "annotations/3.3.6-annotationRightsValidated.json",
"annotations/3.3.7-annotationCanonicalValidated.json", "annotations/3.3.7-annotationCanonicalValidated.json",
"annotations/3.3.7-annotationViaValidated.json" "annotations/3.3.7-annotationViaValidated.json",
"annotations/bodiesTargets/3.2.1-bodyTextDirectionValidated.json",
"annotations/bodiesTargets/3.3.1-bodyCreatedValidated.json",
"annotations/bodiesTargets/3.3.1-bodyModifiedValidated.json",
"annotations/bodiesTargets/3.3.6-bodyRightsValidated.json",
"annotations/bodiesTargets/3.3.7-bodyCanonicalValidated.json",
"annotations/bodiesTargets/3.3.7-bodyViaValidated.json",
"annotations/bodiesTargets/3.2.7-bodyEWRNoItems.json",
"annotations/bodiesTargets/3.3.5-bodyEWRNoPurpose.json",
"annotations/bodiesTargets/3.2.4-bodyChoiceSetNoValue.json",
"annotations/bodiesTargets/4-bodyChoiceSetNoSource.json",
"annotations/bodiesTargets/3.3.5-bodyChoiceSetNoPurpose.json",
"annotations/bodiesTargets/3.2.7-bodyEmbeddedTextualNoItems.json",
"annotations/bodiesTargets/4-bodyEmbeddedTextualNoSource.json",
"annotations/bodiesTargets/3.2.7-bodySpecificResourceNoItems.json",
"annotations/bodiesTargets/4-bodySpecificResourceNoValue.json",
"annotations/bodiesTargets/3.2.1-targTextDirectionValidated.json",
"annotations/bodiesTargets/3.3.1-targCreatedValidated.json",
"annotations/bodiesTargets/3.3.1-targModifiedValidated.json",
"annotations/bodiesTargets/3.3.6-targRightsValidated.json",
"annotations/bodiesTargets/3.3.7-targCanonicalValidated.json",
"annotations/bodiesTargets/3.3.7-targViaValidated.json",
"annotations/bodiesTargets/3.2.7-targEWRNoItems.json",
"annotations/bodiesTargets/3.3.5-targEWRNoPurpose.json",
"annotations/bodiesTargets/3.2.4-targChoiceSetNoValue.json",
"annotations/bodiesTargets/4-targChoiceSetNoSource.json",
"annotations/bodiesTargets/3.3.5-targChoiceSetNoPurpose.json",
"annotations/bodiesTargets/3.2.7-targSpecificResourceNoItems.json",
"annotations/bodiesTargets/4-targSpecificResourceNoValue.json",
"annotations/bodiesTargets/3.2.4-targNoTypeTextualBody.json",
"annotations/specificResource/4.2-selectorValidIfPresent.json",
"annotations/specificResource/4.3-stateValidIfPresent.json",
"annotations/specificResource/4.3.3-refinedByValidated.json",
"annotations/specificResource/4.4-styleClassValidIfPresent.json",
"annotations/specificResource/4.2-fragmentCssXPathSelectorValid.json",
"annotations/specificResource/4.2.4-textQuoteSelectorValid.json",
"annotations/specificResource/4.2-TextDataPositionSelectorValid.json",
"annotations/specificResource/4.2.7-svgSelectorValid.json",
"annotations/specificResource/4.2.8-rangeSelectorValid.json",
"annotations/specificResource/4.3.1-timeStateValid.json",
"annotations/specificResource/4.3.2-httpRequestStateValid.json"
] ]
} }

View file

@ -2,6 +2,7 @@
<html> <html>
<head> <head>
<title>Annotation implements optional keys and meets optional key value constraints</title> <title>Annotation implements optional keys and meets optional key value constraints</title>
<link rel="stylesheet" href="/resources/testharness.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/annotation-model/scripts/ajv.min.js"></script> <script src="/annotation-model/scripts/ajv.min.js"></script>
@ -11,26 +12,12 @@
setup({explicit_timeout: true, explicit_done: true }); setup({explicit_timeout: true, explicit_done: true });
var theDefinitions=[ var theDefinitions=[
"definitions/compositeDetected.json",
"definitions/processingLanguageDetected.json",
"definitions/textDirectionDetected.json",
"definitions/independentsDetected.json",
"definitions/specificResource.json", "definitions/specificResource.json",
"definitions/stringUri.json",
"definitions/choiceSet.json", "definitions/choiceSet.json",
"definitions/bodyTarget.json", "definitions/bodyTarget.json",
"definitions/listDetected.json",
"definitions/formatDetected.json",
"definitions/annotations.json", "definitions/annotations.json",
"definitions/otherProperties.json", "definitions/otherProperties.json",
"definitions/choiceDetected.json", "definitions/id.json"
"definitions/externalWebResource.json",
"definitions/externalWebResourceDetected.json",
"definitions/languageDetected.json",
"definitions/textualBody.json",
"definitions/id.json",
"definitions/itemsDetected.json",
"definitions/specificResourceDetected.json"
]; ];
var theTestFile="annotationOptionals.test"; var theTestFile="annotationOptionals.test";
@ -49,13 +36,13 @@ var runningTest = new JSONtest( {
<p>Fill the textarea below with JSON output from your annotation client <p>Fill the textarea below with JSON output from your annotation client
implementation that supports the following criteria:</p> implementation that supports the following criteria:</p>
<div id="testDescription"></div> <div id="testDescription"></div>
<p>Specifically, the following assertions will be evaluated:</p>
<div id="assertion"></div>
<form name="annotation" id="annotation"> <form name="annotation" id="annotation">
<textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea> <textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea>
<p><input type="button" id="annotation-run" name="Loading..." value="Loading..."> <p><input type="button" id="annotation-run" name="Loading..." value="Loading...">
<input style="display: none" type="button" id="annotation-close" <input style="display: none" type="button" id="annotation-close"
name="Close" value="Close"></p> name="Close" value="Close"></p>
</form> </form>
<p>Specifically, the following assertions will be evaluated:</p>
<div id="assertion"></div>
</body> </body>
</html> </html>

View file

@ -5,13 +5,10 @@
"testType": "manual", "testType": "manual",
"ref": "https://www.w3.org/TR/annotation-model/#other-properties", "ref": "https://www.w3.org/TR/annotation-model/#other-properties",
"assertions": [ "assertions": [
"annotations/3.1-bodyKeyFound.json",
"annotations/3.3.1-annotationSingleCreatorImplemented.json", "annotations/3.3.1-annotationSingleCreatorImplemented.json",
"annotations/3.3.1-annotationCreatedImplemented.json", "annotations/3.3.1-annotationCreatedImplemented.json",
"annotations/3.3.5-annotationSingleMotivationImplemented.json", "annotations/3.3.5-annotationSingleMotivationImplemented.json",
"annotations/3.2.5-bodyValueImplemented.json", "annotations/3.2.5-bodyValueImplemented.json",
"annotations/3.3.1-annotationCreatorImplemented.json",
"annotations/3.3.1-annotationGeneratorImplemented.json",
"annotations/3.3.1-annotationGeneratedImplemented.json", "annotations/3.3.1-annotationGeneratedImplemented.json",
"annotations/3.3.1-annotationModifiedImplemented.json", "annotations/3.3.1-annotationModifiedImplemented.json",
"annotations/3.3.3-annotationAudienceImplemented.json", "annotations/3.3.3-annotationAudienceImplemented.json",
@ -19,7 +16,76 @@
"annotations/3.3.6-annotationRightsImplemented.json", "annotations/3.3.6-annotationRightsImplemented.json",
"annotations/3.3.7-annotationCanonicalImplemented.json", "annotations/3.3.7-annotationCanonicalImplemented.json",
"annotations/3.3.7-annotationViaImplemented.json", "annotations/3.3.7-annotationViaImplemented.json",
"annotations/4.4-annotationStylesheetImplemented.json" "annotations/4.4-annotationStylesheetImplemented.json",
"annotations/3.1-bodyKeyFound.json",
"annotations/bodiesTargets/3.2.1-bodySingleFormat.json",
"annotations/bodiesTargets/3.2.1-bodySingleLanguage.json",
"annotations/bodiesTargets/3.3.1-bodySingleCreator.json",
"annotations/bodiesTargets/3.3.1-bodyCreated.json",
"annotations/bodiesTargets/3.2.1-bodyFormat.json",
"annotations/bodiesTargets/3.2.1-bodyLanguage.json",
"annotations/bodiesTargets/3.2.2-bodyType.json",
"annotations/bodiesTargets/3.2.1-bodyProcessingLanguage.json",
"annotations/bodiesTargets/3.2.1-bodyTextDirection.json",
"annotations/bodiesTargets/3.3.1-bodyModified.json",
"annotations/bodiesTargets/3.3.3-bodyAudience.json",
"annotations/bodiesTargets/3.3.4-bodyAccessibility.json",
"annotations/bodiesTargets/3.3.5-bodyPurpose.json",
"annotations/bodiesTargets/3.3.6-bodyRights.json",
"annotations/bodiesTargets/3.3.7-bodyCanonical.json",
"annotations/bodiesTargets/3.3.7-bodyVia.json",
"annotations/bodiesTargets/3.2.1-bodyEWR.json",
"annotations/bodiesTargets/3.2.4-bodyETB.json",
"annotations/bodiesTargets/3.2.4-bodyETBTypeTextualBody.json",
"annotations/bodiesTargets/3.2.4-bodyETBTypeText.json",
"annotations/bodiesTargets/3.2.7-bodyChoiceSet.json",
"annotations/bodiesTargets/3.2.7-bodyChoice.json",
"annotations/bodiesTargets/3.2.8-bodyList.json",
"annotations/bodiesTargets/3.2.8-bodyComposite.json",
"annotations/bodiesTargets/3.2.8-bodyIndependents.json",
"annotations/bodiesTargets/3.2.1-targSingleFormat.json",
"annotations/bodiesTargets/3.2.1-targSingleLanguage.json",
"annotations/bodiesTargets/3.3.1-targSingleCreator.json",
"annotations/bodiesTargets/3.3.1-targCreated.json",
"annotations/bodiesTargets/3.2.1-targFormat.json",
"annotations/bodiesTargets/3.2.1-targLanguage.json",
"annotations/bodiesTargets/3.2.2-targType.json",
"annotations/bodiesTargets/3.2.1-targProcessingLanguage.json",
"annotations/bodiesTargets/3.2.1-targTextDirection.json",
"annotations/bodiesTargets/3.3.1-targModified.json",
"annotations/bodiesTargets/3.3.3-targAudience.json",
"annotations/bodiesTargets/3.3.4-targAccessibility.json",
"annotations/bodiesTargets/3.3.5-targPurpose.json",
"annotations/bodiesTargets/3.3.6-targRights.json",
"annotations/bodiesTargets/3.3.7-targCanonical.json",
"annotations/bodiesTargets/3.3.7-targVia.json",
"annotations/bodiesTargets/3.2.1-targEWR.json",
"annotations/bodiesTargets/3.2.7-targChoiceSet.json",
"annotations/bodiesTargets/3.2.7-targChoice.json",
"annotations/bodiesTargets/3.2.8-targList.json",
"annotations/bodiesTargets/3.2.8-targComposite.json",
"annotations/bodiesTargets/3.2.8-targIndependents.json",
"annotations/bodiesTargets/4-bodySpecificResource.json",
"annotations/bodiesTargets/4-targSpecificResource.json",
"annotations/specificResource/4.3.3-refinedBy.json",
"annotations/specificResource/4.4-styleClass.json",
"annotations/specificResource/4.5-renderedVia.json",
"annotations/specificResource/4.6-scope.json",
"annotations/specificResource/4.2-selectorFound.json",
"annotations/specificResource/4.2.1-fragmentSelector.json",
"annotations/specificResource/4.2.1-conformsTo.json",
"annotations/specificResource/4.2.2-cssSelector.json",
"annotations/specificResource/4.2.3-xpathSelector.json",
"annotations/specificResource/4.2.4-textQuoteSelector.json",
"annotations/specificResource/4.2.4-prefix.json",
"annotations/specificResource/4.2.4-suffix.json",
"annotations/specificResource/4.2.5-textPositionSelector.json",
"annotations/specificResource/4.2.6-dataPositionSelector.json",
"annotations/specificResource/4.2.7-svgSelector.json",
"annotations/specificResource/4.2.8-rangeSelector.json",
"annotations/specificResource/4.3-stateFound.json",
"annotations/specificResource/4.3.1-timeState.json",
"annotations/specificResource/4.3.2-requestHeaderState.json",
"annotations/specificResource/4.3.1-cached.json"
] ]
} }

View file

@ -2,6 +2,7 @@
<html> <html>
<head> <head>
<title>Annotation implements optional keys and meets optional key value constraints for Creator and Generator Agents</title> <title>Annotation implements optional keys and meets optional key value constraints for Creator and Generator Agents</title>
<link rel="stylesheet" href="/resources/testharness.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/annotation-model/scripts/ajv.min.js"></script> <script src="/annotation-model/scripts/ajv.min.js"></script>
@ -11,29 +12,15 @@
setup({explicit_timeout: true, explicit_done: true }); setup({explicit_timeout: true, explicit_done: true });
var theDefinitions=[ var theDefinitions=[
"definitions/compositeDetected.json",
"definitions/processingLanguageDetected.json",
"definitions/textDirectionDetected.json",
"definitions/independentsDetected.json",
"definitions/specificResource.json", "definitions/specificResource.json",
"definitions/stringUri.json",
"definitions/choiceSet.json", "definitions/choiceSet.json",
"definitions/bodyTarget.json", "definitions/bodyTarget.json",
"definitions/listDetected.json",
"definitions/formatDetected.json",
"definitions/annotations.json", "definitions/annotations.json",
"definitions/otherProperties.json", "definitions/otherProperties.json",
"definitions/choiceDetected.json", "definitions/id.json"
"definitions/externalWebResource.json",
"definitions/externalWebResourceDetected.json",
"definitions/languageDetected.json",
"definitions/textualBody.json",
"definitions/id.json",
"definitions/itemsDetected.json",
"definitions/specificResourceDetected.json"
]; ];
var theTestFile="annotationAgentOptionals.test"; var theTestFile="annotationsAgentOptionals.test";
var runningTest = new JSONtest( { var runningTest = new JSONtest( {
"testInput" : "annotation-input", "testInput" : "annotation-input",
@ -49,13 +36,13 @@ var runningTest = new JSONtest( {
<p>Fill the textarea below with JSON output from your annotation client <p>Fill the textarea below with JSON output from your annotation client
implementation that supports the following criteria:</p> implementation that supports the following criteria:</p>
<div id="testDescription"></div> <div id="testDescription"></div>
<p>Specifically, the following assertions will be evaluated:</p>
<div id="assertion"></div>
<form name="annotation" id="annotation"> <form name="annotation" id="annotation">
<textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea> <textarea name="annotation-input" id="annotation-input" style="width: 90%; height: 10em" ></textarea>
<p><input type="button" id="annotation-run" name="Loading..." value="Loading..."> <p><input type="button" id="annotation-run" name="Loading..." value="Loading...">
<input style="display: none" type="button" id="annotation-close" <input style="display: none" type="button" id="annotation-close"
name="Close" value="Close"></p> name="Close" value="Close"></p>
</form> </form>
<p>Specifically, the following assertions will be evaluated:</p>
<div id="assertion"></div>
</body> </body>
</html> </html>

View file

@ -0,0 +1,46 @@
{
"@context": "https://www.w3.org/ns/JSONtest-v1.jsonld",
"name": "Annotation implements optional keys and meets optional key value constraints for Creator and Generator Agents",
"description": "Agents (Creators, Generators) involved in an Annotation: <ul> <li>Should include certain properties (keys)</li> <li>May include additional keys</li> <li>should have Agent key values that conform to model recommended constraints</li> </ul> Note: failing an assertion indicates that a recommended or optional feature has not been implemented or has not been implemented correctly.",
"testType": "manual",
"ref": "https://www.w3.org/TR/annotation-model/#other-properties",
"assertions":
[
"annotations/3.3.1-annotationCreatorImplemented.json",
"annotations/3.3.2-annotationCreatorAgentIdImplemented.json",
"annotations/3.3.2-annotationCreatorAgentTypeImplemented.json",
"annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json",
"annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json",
"annotations/3.3.2-annotationCreatorAgentNameImplemented.json",
"annotations/3.3.2-annotationCreatorAgentEmailImplemented.json",
"annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json",
"annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json",
"annotations/3.3.1-annotationGeneratorImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentIdImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentNameImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json",
"annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json",
"annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json",
"annotations/bodiesTargets/3.3.1-bodyCreator.json",
"annotations/bodiesTargets/3.3.2-bodyCreatorAgentIdImplemented.json",
"annotations/bodiesTargets/3.3.2-bodyCreatorAgentTypeImplemented.json",
"annotations/bodiesTargets/3.3.2-bodyCreatorAgentNicknameImplemented.json",
"annotations/bodiesTargets/3.3.2-bodyCreatorAgentSingleNameImplemented.json",
"annotations/bodiesTargets/3.3.2-bodyCreatorAgentNameImplemented.json",
"annotations/bodiesTargets/3.3.2-bodyCreatorAgentEmailImplemented.json",
"annotations/bodiesTargets/3.3.2-bodyCreatorAgentEmail_sha1Implemented.json",
"annotations/bodiesTargets/3.3.2-bodyCreatorAgentHomepageImplemented.json",
"annotations/bodiesTargets/3.3.1-targCreator.json",
"annotations/bodiesTargets/3.3.2-targCreatorAgentIdImplemented.json",
"annotations/bodiesTargets/3.3.2-targCreatorAgentTypeImplemented.json",
"annotations/bodiesTargets/3.3.2-targCreatorAgentNicknameImplemented.json",
"annotations/bodiesTargets/3.3.2-targCreatorAgentSingleNameImplemented.json",
"annotations/bodiesTargets/3.3.2-targCreatorAgentNameImplemented.json",
"annotations/bodiesTargets/3.3.2-targCreatorAgentEmailImplemented.json",
"annotations/bodiesTargets/3.3.2-targCreatorAgentEmail_sha1Implemented.json",
"annotations/bodiesTargets/3.3.2-targCreatorAgentHomepageImplemented.json"
]
}

View file

@ -0,0 +1,26 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-bodyEWR.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "An External Web Resource body may be used as an Annotation Body.",
"title": "Implements **External Web Resource** with **_id_ key** as a body of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more External Web Resources as Annotation body(ies). (Section 3.2.1)",
"type": "object",
"required": ["body"],
"properties":
{
"body":
{
"anyOf": [
{ "$ref": "bodyTarget.json#/definitions/externalWebResourceDetected" },
{ "not": { "items": { "not": { "$ref": "bodyTarget.json#/definitions/externalWebResourceDetected" } } } },
{ "$ref": "bodyTarget.json#/definitions/sourceEwrDetected" },
{ "not": { "items": { "not": { "$ref": "bodyTarget.json#/definitions/sourceEwrDetected" } } } },
{ "$ref": "bodyTarget.json#/definitions/itemEwrDetected" },
{ "not": { "items": { "not": { "$ref": "bodyTarget.json#/definitions/itemEwrDetected" } } } }
]
}
}
}

View file

@ -0,0 +1,38 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-bodyFormat.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a body may include format key with one or more values that are each a media type.",
"title": "Implements **body _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more bodies, one or more of which include format key with one or more values that are each a media type. (Section 3.2.1)",
"type": "object",
"required": ["body"],
"properties":
{
"body":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/formatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceFormatPropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/formatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceFormatPropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,38 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-bodyLanguage.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a body may include language key with one or more values that are each a language code.",
"title": "Implements **body _language_ key** with one or more values each of which is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more bodies, one or more of which include language key with one or more values that are each a language code. (Section 3.2.1)",
"type": "object",
"required": ["body"],
"properties":
{
"body":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/languagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceLanguagePropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/languagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceLanguagePropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,38 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-bodyProcessingLanguage.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a Body may include processingLanguage key with a single value that is a language code.",
"title": "Implements **body _processingLanguage_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more Bodies, one or more of which include single processingLanguage key with a language code as value. (Section 3.2.1)",
"type": "object",
"required": ["body"],
"properties":
{
"body":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/processingLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemProcessingLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceProcessingLanguagePropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/processingLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemProcessingLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceProcessingLanguagePropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,39 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-bodySingleFormat.json",
"assertionType": "should",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a Body should include format key with a single value that is a media type.",
"title": "Implements **body _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more bodies, one or more of which include single format key with a media type as value. (Section 3.2.1)",
"type": "object",
"required": ["body"],
"properties":
{
"body":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/singleFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemSingleFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceSingleFormatPropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/singleFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemSingleFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceSingleFormatPropertyFound" }
]
}
}
}
}
]
}
},
"required": ["body"]
}

View file

@ -0,0 +1,38 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-bodySingleLanguage.json",
"assertionType": "should",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a Body should include language key with a single value that is a language code.",
"title": "Implements **body _language_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or moreBodies, one or more of which include single language key with a language code as value. (Section 3.2.1)",
"type": "object",
"required": ["body"],
"properties":
{
"body":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/singleLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemSingleLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceSingleLanguagePropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/singleLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemSingleLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceSingleLanguagePropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,38 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-bodyTextDirection.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a Body may include textDirection key with a single value that is one of ltr, rtl, or auto.",
"title": "Implements **body _textDirection_ key** with a **single value** that is is **one of ltr, rtl, or auto** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more Bodies, one or more of which include single textDirection key with one of ltr, rtl, or auto as value. (Section 3.2.1)",
"type": "object",
"required": ["body"],
"properties":
{
"body":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/textDirectionPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemTextDirectionPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceTextDirectionPropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/textDirectionPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemTextDirectionPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceTextDirectionPropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,44 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-bodyTextDirectionValidated.json",
"assertionType": "must",
"expectedResult": "valid",
"onUnexpectedResult" : "failAndContinue",
"errorMessage": "ERROR: A body or body/source has multiple textDirection key values for a body or source, or a single textDirection key with a value that is not one of ltr, rtl, auto.",
"title": "If present as a body or body/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)",
"description": "True when no body-level or body/source-level (SR body) textDirection key present or when all textDirection keys have a single value that is one of ltr, rtl, auto (Section 3.2.1)",
"type": "object",
"properties":
{
"body":
{
"oneOf":
[
{ "$ref": "id.json#/definitions/arraySingleStringUri" },
{ "allOf":
[
{ "$ref": "bodyTarget.json#/definitions/textDirectionValidIfPresent" },
{ "$ref": "specificResource.json#/definitions/sourceWithTextDirection" }
]
},
{
"type": "array",
"minItems": 1,
"items":
{
"oneOf":
[
{ "$ref": "id.json#/definitions/arraySingleStringUri" },
{ "allOf":
[
{ "$ref": "bodyTarget.json#/definitions/textDirectionValidIfPresent" },
{ "$ref": "specificResource.json#/definitions/sourceWithTextDirection" }
]
}
]
}
}
]
}
}
}

View file

@ -0,0 +1,25 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-targEWR.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "An External Web Resource target may be used as an Annotation Target.",
"title": "Implements **External Web Resource** with **_id_ key** as a target of the Annotation [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more External Web Resources as Annotation target(ies). (Section 3.2.1)",
"type": "object",
"properties":
{
"target":
{
"anyOf": [
{ "$ref": "bodyTarget.json#/definitions/externalWebResourceDetected" },
{ "not": { "items": { "not": { "$ref": "bodyTarget.json#/definitions/externalWebResourceDetected" } } } },
{ "$ref": "bodyTarget.json#/definitions/sourceEwrDetected" },
{ "not": { "items": { "not": { "$ref": "bodyTarget.json#/definitions/sourceEwrDetected" } } } },
{ "$ref": "bodyTarget.json#/definitions/itemEwrDetected" },
{ "not": { "items": { "not": { "$ref": "bodyTarget.json#/definitions/itemEwrDetected" } } } }
]
}
}
}

View file

@ -0,0 +1,37 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-targFormat.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a target may include format key with one or more values that are each a media type.",
"title": "Implements **target _format_ key** with one or more values each of which is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more targets, one or more of which include format key with one or more values that are each a media type. (Section 3.2.1)",
"type": "object",
"properties":
{
"target":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/formatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceFormatPropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/formatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceFormatPropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,37 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-targLanguage.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a target may include language key with one or more values that are each a language code.",
"title": "Implements **target _language_ key** with one or more values each of which is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more targets, one or more of which include language key with one or more values that are each a language code. (Section 3.2.1)",
"type": "object",
"properties":
{
"target":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/languagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceLanguagePropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/languagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceLanguagePropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,37 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-targProcessingLanguage.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a Target may include processingLanguage key with a single value that is a language code.",
"title": "Implements **target _processingLanguage_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more Targets, one or more of which include single processingLanguage key with a language code as value. (Section 3.2.1)",
"type": "object",
"properties":
{
"target":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/processingLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemProcessingLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceProcessingLanguagePropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/processingLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemProcessingLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceProcessingLanguagePropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,37 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-targSingleFormat.json",
"assertionType": "should",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a Target should include format key with a single value that is a media type.",
"title": "Implements **target _format_ key** with a **single value** that is a **media type** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more targets, one or more of which include single format key with a media type as value. (Section 3.2.1)",
"type": "object",
"properties":
{
"target":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/singleFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemSingleFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceSingleFormatPropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/singleFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemSingleFormatPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceSingleFormatPropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,37 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-targSingleLanguage.json",
"assertionType": "should",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a Target should include language key with a single value that is a language code.",
"title": "Implements **target _language_ key** with a **single value** that is a **language code** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or moreTargets, one or more of which include single language key with a language code as value. (Section 3.2.1)",
"type": "object",
"properties":
{
"target":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/singleLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemSingleLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceSingleLanguagePropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/singleLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemSingleLanguagePropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceSingleLanguagePropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,37 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-targTextDirection.json",
"assertionType": "may",
"expectedResult": "valid",
"onUnexpectedResult" : "passAndContinue",
"errorMessage": "The description of a Target may include textDirection key with a single value that is one of ltr, rtl, or auto.",
"title": "Implements **target _textDirection_ key** with a **single value** that is is **one of ltr, rtl, or auto** [model 3.2.1](https://www.w3.org/TR/annotation-model/#bodies-and-targets)",
"description": "True when Annotation includes one or more Targets, one or more of which include single textDirection key with one of ltr, rtl, or auto as value. (Section 3.2.1)",
"type": "object",
"properties":
{
"target":
{
"oneOf": [
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/textDirectionPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemTextDirectionPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceTextDirectionPropertyFound" }
]
},
{ "not":
{ "items":
{ "not":
{ "anyOf": [
{ "$ref": "bodyTarget.json#/definitions/textDirectionPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/itemTextDirectionPropertyFound" },
{ "$ref": "bodyTarget.json#/definitions/sourceTextDirectionPropertyFound" }
]
}
}
}
}
]
}
}
}

View file

@ -0,0 +1,44 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "3.2.1-targTextDirectionValidated.json",
"assertionType": "must",
"expectedResult": "valid",
"onUnexpectedResult" : "failAndContinue",
"errorMessage": "ERROR: A target or target/source has multiple textDirection key values for a target or source, or a single textDirection key with a value that is not one of ltr, rtl, auto.",
"title": "If present as a target or target/source property, the **_textDirection_ key** has a **single value** which is **one of 'ltr', 'rtl', 'auto'** - [model 3.2.1](https://www.w3.org/TR/annotation-model/#external-web-resources)",
"description": "True when no target-level or target/source-level (SR target) textDirection key present or when all textDirection keys have a single value that is one of ltr, rtl, auto (Section 3.2.1)",
"type": "object",
"properties":
{
"target":
{
"oneOf":
[
{ "$ref": "id.json#/definitions/arraySingleStringUri" },
{ "allOf":
[
{ "$ref": "bodyTarget.json#/definitions/textDirectionValidIfPresent" },
{ "$ref": "specificResource.json#/definitions/sourceWithTextDirection" }
]
},
{
"type": "array",
"minItems": 1,
"items":
{
"oneOf":
[
{ "$ref": "id.json#/definitions/arraySingleStringUri" },
{ "allOf":
[
{ "$ref": "bodyTarget.json#/definitions/textDirectionValidIfPresent" },
{ "$ref": "specificResource.json#/definitions/sourceWithTextDirection" }
]
}
]
}
}
]
}
}
}

Some files were not shown because too many files have changed in this diff Show more