diff options
Diffstat (limited to 'test/data/validator')
22 files changed, 11647 insertions, 0 deletions
diff --git a/test/data/validator/attributes.test b/test/data/validator/attributes.test new file mode 100755 index 0000000..2815976 --- /dev/null +++ b/test/data/validator/attributes.test @@ -0,0 +1,1035 @@ +{"tests": [ + +{"description": "allowed 'class' attribute on <span>", +"input": "<span class>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'contenteditable' attribute on <span>", +"input": "<span contenteditable>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'contextmenu' attribute on <span>", +"input": "<span contextmenu>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'dir' attribute on <span>", +"input": "<span dir>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'draggable' attribute on <span>", +"input": "<span draggable>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'id' attribute on <span>", +"input": "<span id>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'irrelevant' attribute on <span>", +"input": "<span irrelevant>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'lang' attribute on <span>", +"input": "<span lang>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ref' attribute on <span>", +"input": "<span ref>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'tabindex' attribute on <span>", +"input": "<span tabindex>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'template' attribute on <span>", +"input": "<span template>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'title' attribute on <span>", +"input": "<span title>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onabort' attribute on <span>", +"input": "<span onabort>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onbeforeunload' attribute on <span>", +"input": "<span onbeforeunload>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onblur' attribute on <span>", +"input": "<span onblur>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onchange' attribute on <span>", +"input": "<span onchange>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onclick' attribute on <span>", +"input": "<span onclick>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'oncontextmenu' attribute on <span>", +"input": "<span oncontextmenu>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ondblclick' attribute on <span>", +"input": "<span ondblclick>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ondrag' attribute on <span>", +"input": "<span ondrag>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ondragend' attribute on <span>", +"input": "<span ondragend>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ondragenter' attribute on <span>", +"input": "<span ondragenter>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ondragleave' attribute on <span>", +"input": "<span ondragleave>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ondragover' attribute on <span>", +"input": "<span ondragover>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ondragstart' attribute on <span>", +"input": "<span ondragstart>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ondrop' attribute on <span>", +"input": "<span ondrop>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onerror' attribute on <span>", +"input": "<span onerror>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onfocus' attribute on <span>", +"input": "<span onfocus>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onkeydown' attribute on <span>", +"input": "<span onkeydown>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onkeypress' attribute on <span>", +"input": "<span onkeypress>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onkeyup' attribute on <span>", +"input": "<span onkeyup>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onload' attribute on <span>", +"input": "<span onload>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onmessage' attribute on <span>", +"input": "<span onmessage>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onmousedown' attribute on <span>", +"input": "<span onmousedown>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onmousemove' attribute on <span>", +"input": "<span onmousemove>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onmouseout' attribute on <span>", +"input": "<span onmouseout>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onmouseover' attribute on <span>", +"input": "<span onmouseover>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onmouseup' attribute on <span>", +"input": "<span onmouseup>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onmousewheel' attribute on <span>", +"input": "<span onmousewheel>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onresize' attribute on <span>", +"input": "<span onresize>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onscroll' attribute on <span>", +"input": "<span onscroll>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onselect' attribute on <span>", +"input": "<span onselect>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onsubmit' attribute on <span>", +"input": "<span onsubmit>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onunload' attribute on <span>", +"input": "<span onunload>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <command>", +"input": "<command type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'label' attribute on <command>", +"input": "<command label>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'icon' attribute on <command>", +"input": "<command icon>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'hidden' attribute on <command>", +"input": "<command hidden>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'disabled' attribute on <command>", +"input": "<command disabled>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'checked' attribute on <command>", +"input": "<command checked>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'radiogroup' attribute on <command>", +"input": "<command radiogroup>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'default' attribute on <command>", +"input": "<command default>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'value' attribute on <meter>", +"input": "<meter value>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'min' attribute on <meter>", +"input": "<meter min>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'low' attribute on <meter>", +"input": "<meter low>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'high' attribute on <meter>", +"input": "<meter high>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'max' attribute on <meter>", +"input": "<meter max>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'optimum' attribute on <meter>", +"input": "<meter optimum>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'cite' attribute on <ins>", +"input": "<ins cite>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'datetime' attribute on <ins>", +"input": "<ins datetime>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'multiple' attribute on <datagrid>", +"input": "<datagrid multiple>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'disabled' attribute on <datagrid>", +"input": "<datagrid disabled>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'name' attribute on <meta>", +"input": "<meta name>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'http-equiv' attribute on <meta>", +"input": "<meta http-equiv>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'content' attribute on <meta>", +"input": "<meta content>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'charset' attribute on <meta>", +"input": "<meta charset>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'src' attribute on <video>", +"input": "<video src>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'autoplay' attribute on <video>", +"input": "<video autoplay>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'start' attribute on <video>", +"input": "<video start>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'loopstart' attribute on <video>", +"input": "<video loopstart>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'loopend' attribute on <video>", +"input": "<video loopend>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'end' attribute on <video>", +"input": "<video end>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'loopcount' attribute on <video>", +"input": "<video loopcount>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'controls' attribute on <video>", +"input": "<video controls>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'style' attribute on <font>", +"input": "<font style>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'media' attribute on <style>", +"input": "<style media>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <style>", +"input": "<style type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'scoped' attribute on <style>", +"input": "<style scoped>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'alt' attribute on <img>", +"input": "<img alt>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'src' attribute on <img>", +"input": "<img src>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'usemap' attribute on <img>", +"input": "<img usemap>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ismap' attribute on <img>", +"input": "<img ismap>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'height' attribute on <img>", +"input": "<img height>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'width' attribute on <img>", +"input": "<img width>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'alt' attribute on <area>", +"input": "<area alt>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'coords' attribute on <area>", +"input": "<area coords>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'shape' attribute on <area>", +"input": "<area shape>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'href' attribute on <area>", +"input": "<area href>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'target' attribute on <area>", +"input": "<area target>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ping' attribute on <area>", +"input": "<area ping>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'rel' attribute on <area>", +"input": "<area rel>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'media' attribute on <area>", +"input": "<area media>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'hreflang' attribute on <area>", +"input": "<area hreflang>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <area>", +"input": "<area type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <menu>", +"input": "<menu type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'label' attribute on <menu>", +"input": "<menu label>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'autosubmit' attribute on <menu>", +"input": "<menu autosubmit>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'name' attribute on <param>", +"input": "<param name>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'value' attribute on <param>", +"input": "<param value>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'value' attribute on <li>", +"input": "<li value>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'src' attribute on <source>", +"input": "<source src>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <source>", +"input": "<source type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'media' attribute on <source>", +"input": "<source media>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'xmlns' attribute on <html>", +"input": "<html xmlns>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'open' attribute on <details>", +"input": "<details open>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'colspan' attribute on <th>", +"input": "<th colspan>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'rowspan' attribute on <th>", +"input": "<th rowspan>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'scope' attribute on <th>", +"input": "<th scope>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'value' attribute on <progress>", +"input": "<progress value>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'max' attribute on <progress>", +"input": "<progress max>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'colspan' attribute on <td>", +"input": "<td colspan>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'rowspan' attribute on <td>", +"input": "<td rowspan>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'cite' attribute on <blockquote>", +"input": "<blockquote cite>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'data' attribute on <object>", +"input": "<object data>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <object>", +"input": "<object type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'usemap' attribute on <object>", +"input": "<object usemap>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'height' attribute on <object>", +"input": "<object height>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'width' attribute on <object>", +"input": "<object width>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'height' attribute on <canvas>", +"input": "<canvas height>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'width' attribute on <canvas>", +"input": "<canvas width>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'href' attribute on <base>", +"input": "<base href>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'target' attribute on <base>", +"input": "<base target>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'href' attribute on <link>", +"input": "<link href>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'rel' attribute on <link>", +"input": "<link rel>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'media' attribute on <link>", +"input": "<link media>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'hreflang' attribute on <link>", +"input": "<link hreflang>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <link>", +"input": "<link type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'href' attribute on <a>", +"input": "<a href>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'target' attribute on <a>", +"input": "<a target>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'ping' attribute on <a>", +"input": "<a ping>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'rel' attribute on <a>", +"input": "<a rel>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'media' attribute on <a>", +"input": "<a media>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'hreflang' attribute on <a>", +"input": "<a hreflang>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <a>", +"input": "<a type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'src' attribute on <event-source>", +"input": "<event-source src>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'start' attribute on <ol>", +"input": "<ol start>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'span' attribute on <colgroup>", +"input": "<colgroup span>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'src' attribute on <script>", +"input": "<script src>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'defer' attribute on <script>", +"input": "<script defer>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'async' attribute on <script>", +"input": "<script async>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <script>", +"input": "<script type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'cite' attribute on <q>", +"input": "<q cite>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'cite' attribute on <del>", +"input": "<del cite>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'datetime' attribute on <del>", +"input": "<del datetime>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'src' attribute on <iframe>", +"input": "<iframe src>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'datetime' attribute on <time>", +"input": "<time datetime>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'src' attribute on <audio>", +"input": "<audio src>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'autoplay' attribute on <audio>", +"input": "<audio autoplay>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'start' attribute on <audio>", +"input": "<audio start>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'loopstart' attribute on <audio>", +"input": "<audio loopstart>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'loopend' attribute on <audio>", +"input": "<audio loopend>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'end' attribute on <audio>", +"input": "<audio end>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'loopcount' attribute on <audio>", +"input": "<audio loopcount>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'controls' attribute on <audio>", +"input": "<audio controls>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'span' attribute on <col>", +"input": "<col span>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'disabled' attribute on <fieldset>", +"input": "<fieldset disabled>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'form' attribute on <fieldset>", +"input": "<fieldset form>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onsubmit' attribute on <form>", +"input": "<form onsubmit>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'name' attribute on <form>", +"input": "<form name>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onreset' attribute on <form>", +"input": "<form onreset>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'accept' attribute on <form>", +"input": "<form accept>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'replace' attribute on <form>", +"input": "<form replace>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'accept-charset' attribute on <form>", +"input": "<form accept-charset>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'action' attribute on <form>", +"input": "<form action>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'data' attribute on <form>", +"input": "<form data>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'method' attribute on <form>", +"input": "<form method>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'enctype' attribute on <form>", +"input": "<form enctype>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'rows' attribute on <textarea>", +"input": "<textarea rows>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'name' attribute on <textarea>", +"input": "<textarea name>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'form' attribute on <textarea>", +"input": "<textarea form>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'required' attribute on <textarea>", +"input": "<textarea required>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'cols' attribute on <textarea>", +"input": "<textarea cols>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'accept' attribute on <textarea>", +"input": "<textarea accept>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'disabled' attribute on <textarea>", +"input": "<textarea disabled>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'readonly' attribute on <textarea>", +"input": "<textarea readonly>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'wrap' attribute on <textarea>", +"input": "<textarea wrap>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'autofocus' attribute on <textarea>", +"input": "<textarea autofocus>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'maxlength' attribute on <textarea>", +"input": "<textarea maxlength>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'a' attribute on <datalist>", +"input": "<datalist a>", +"fail-unless": "unknown-attribute"}, + +{"description": "allowed 'd' attribute on <datalist>", +"input": "<datalist d>", +"fail-unless": "unknown-attribute"}, + +{"description": "allowed 't' attribute on <datalist>", +"input": "<datalist t>", +"fail-unless": "unknown-attribute"}, + +{"description": "allowed 'action' attribute on <button>", +"input": "<button action>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'enctype' attribute on <button>", +"input": "<button enctype>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'method' attribute on <button>", +"input": "<button method>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'replace' attribute on <button>", +"input": "<button replace>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'template' attribute on <button>", +"input": "<button template>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'name' attribute on <button>", +"input": "<button name>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'form' attribute on <button>", +"input": "<button form>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'value' attribute on <button>", +"input": "<button value>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'disabled' attribute on <button>", +"input": "<button disabled>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'autofocus' attribute on <button>", +"input": "<button autofocus>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'type' attribute on <button>", +"input": "<button type>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'accesskey' attribute on <label>", +"input": "<label accesskey>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'form' attribute on <label>", +"input": "<label form>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'for' attribute on <label>", +"input": "<label for>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'disabled' attribute on <optgroup>", +"input": "<optgroup disabled>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'label' attribute on <optgroup>", +"input": "<optgroup label>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onforminput' attribute on <output>", +"input": "<output onforminput>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'onformchange' attribute on <output>", +"input": "<output onformchange>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'name' attribute on <output>", +"input": "<output name>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'form' attribute on <output>", +"input": "<output form>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'for' attribute on <output>", +"input": "<output for>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'multiple' attribute on <select>", +"input": "<select multiple>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'name' attribute on <select>", +"input": "<select name>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'form' attribute on <select>", +"input": "<select form>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'accesskey' attribute on <select>", +"input": "<select accesskey>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'disabled' attribute on <select>", +"input": "<select disabled>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'autofocus' attribute on <select>", +"input": "<select autofocus>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'data' attribute on <select>", +"input": "<select data>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'size' attribute on <select>", +"input": "<select size>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'selected' attribute on <option>", +"input": "<option selected>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'value' attribute on <option>", +"input": "<option value>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'label' attribute on <option>", +"input": "<option label>", +"fail-if": "unknown-attribute"}, + +{"description": "allowed 'disabled' attribute on <option>", +"input": "<option disabled>", +"fail-if": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <command>", +"input": "<command foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <meter>", +"input": "<meter foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <ins>", +"input": "<ins foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <datagrid>", +"input": "<datagrid foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <meta>", +"input": "<meta foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <video>", +"input": "<video foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <font>", +"input": "<font foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <style>", +"input": "<style foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <img>", +"input": "<img foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <area>", +"input": "<area foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <menu>", +"input": "<menu foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <param>", +"input": "<param foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <li>", +"input": "<li foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <source>", +"input": "<source foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <html>", +"input": "<html foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <details>", +"input": "<details foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <th>", +"input": "<th foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <progress>", +"input": "<progress foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <td>", +"input": "<td foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <blockquote>", +"input": "<blockquote foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <object>", +"input": "<object foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <canvas>", +"input": "<canvas foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <base>", +"input": "<base foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <link>", +"input": "<link foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <a>", +"input": "<a foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <event-source>", +"input": "<event-source foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <ol>", +"input": "<ol foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <colgroup>", +"input": "<colgroup foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <script>", +"input": "<script foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <q>", +"input": "<q foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <del>", +"input": "<del foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <iframe>", +"input": "<iframe foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <time>", +"input": "<time foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <audio>", +"input": "<audio foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <col>", +"input": "<col foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "missing required 'href' attribute on <link>", +"input": "<link rel>", +"fail-unless": "missing-required-attribute"}, + +{"description": "missing required 'rel' attribute on <link>", +"input": "<link href>", +"fail-unless": "missing-required-attribute"}, + +{"description": "missing required 'dir' attribute on <bdo>", +"input": "<bdo>", +"fail-unless": "missing-required-attribute"}, + +{"description": "missing required 'src' attribute on <img>", +"input": "<img>", +"fail-unless": "missing-required-attribute"}, + +{"description": "missing required 'src' attribute on <embed>", +"input": "<embed>", +"fail-unless": "missing-required-attribute"}, + +{"description": "missing required 'name' attribute on <param>", +"input": "<param value>", +"fail-unless": "missing-required-attribute"}, + +{"description": "missing required 'value' attribute on <param>", +"input": "<param name>", +"fail-unless": "missing-required-attribute"}, + +{"description": "missing required 'src' attribute on <source>", +"input": "<source>", +"fail-unless": "missing-required-attribute"}, + +{"description": "missing required 'id' attribute on <map>", +"input": "<map>", +"fail-unless": "missing-required-attribute"} + +]} diff --git a/test/data/validator/base-href-attribute.test b/test/data/validator/base-href-attribute.test new file mode 100755 index 0000000..83a626a --- /dev/null +++ b/test/data/validator/base-href-attribute.test @@ -0,0 +1,787 @@ +{"tests": [ + +{"description": "base href contains invalid URI due to leading space", +"input": "<base href=' http://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to trailing space", +"input": "<base href='http://www.example.com/ '", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to space in scheme", +"input": "<base href='ht tp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to space in domain", +"input": "<base href='http://www.example. com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to space in path", +"input": "<base href='http://www.example.com/a b'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to space in fragment", +"input": "<base href='http://www.example.com/a#b c'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to space in query", +"input": "<base href='http://www.example.com/a?b c'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to leading tab", +"input": "<base href='\thttp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to trailing tab", +"input": "<base href='http://www.example.com/\t'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to tab in scheme", +"input": "<base href='ht\ttp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to tab in domain", +"input": "<base href='http://www.example.\tcom/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to tab in path", +"input": "<base href='http://www.example.com/a\tb'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to tab in fragment", +"input": "<base href='http://www.example.com/a#b\tc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to tab in query", +"input": "<base href='http://www.example.com/a?b\tc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to leading LF", +"input": "<base href='\nhttp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LF in scheme", +"input": "<base href='ht\ntp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LF in domain", +"input": "<base href='http://www.example.\ncom/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LF in path", +"input": "<base href='http://www.example.com/a\nb'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LF in fragment", +"input": "<base href='http://www.example.com/a#b\nc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LF in query", +"input": "<base href='http://www.example.com/a?b\nc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to leading LT", +"input": "<base href='\u000Bhttp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to trailing LT", +"input": "<base href='http://www.example.com/\u000B'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LT in scheme", +"input": "<base href='ht\u000Btp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LT in domain", +"input": "<base href='http://www.example.\u000Bcom/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LT in path", +"input": "<base href='http://www.example.com/a\u000Bb'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LT in fragment", +"input": "<base href='http://www.example.com/a#b\u000Bc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to LT in query", +"input": "<base href='http://www.example.com/a?b\u000Bc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to leading FF", +"input": "<base href='\u000Chttp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to trailing FF", +"input": "<base href='http://www.example.com/\u000C'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to FF in scheme", +"input": "<base href='ht\u000Ctp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to FF in domain", +"input": "<base href='http://www.example.\u000Ccom/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to FF in path", +"input": "<base href='http://www.example.com/a\u000Cb'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to FF in fragment", +"input": "<base href='http://www.example.com/a#b\u000Cc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to FF in query", +"input": "<base href='http://www.example.com/a?b\u000Cc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to leading CR", +"input": "<base href='\rhttp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to CR in scheme", +"input": "<base href='ht\rtp://www.example.com/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to CR in domain", +"input": "<base href='http://www.example.\rcom/'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to CR in path", +"input": "<base href='http://www.example.com/a\rb'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to CR in fragment", +"input": "<base href='http://www.example.com/a#b\rc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains invalid URI due to CR in query", +"input": "<base href='http://www.example.com/a?b\rc'", +"fail-unless": "invalid-uri-char"}, + +{"description": "base href contains valid URI scheme 'ftp'", +"input": "<base href='ftp://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'http'", +"input": "<base href='http://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'gopher'", +"input": "<base href='gopher://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'mailto'", +"input": "<base href='mailto://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'news'", +"input": "<base href='news://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'nntp'", +"input": "<base href='nntp://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'telnet'", +"input": "<base href='telnet://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'wais'", +"input": "<base href='wais://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'file'", +"input": "<base href='file://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'prospero'", +"input": "<base href='prospero://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'z39.50s'", +"input": "<base href='z39.50s://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'z39.50r'", +"input": "<base href='z39.50r://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'cid'", +"input": "<base href='cid://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'mid'", +"input": "<base href='mid://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'vemmi'", +"input": "<base href='vemmi://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'service'", +"input": "<base href='service://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'imap'", +"input": "<base href='imap://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'nfs'", +"input": "<base href='nfs://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'acap'", +"input": "<base href='acap://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'rtsp'", +"input": "<base href='rtsp://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'tip'", +"input": "<base href='tip://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'pop'", +"input": "<base href='pop://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'data'", +"input": "<base href='data://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'dav'", +"input": "<base href='dav://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'opaquelocktoken'", +"input": "<base href='opaquelocktoken://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'sip'", +"input": "<base href='sip://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'sips'", +"input": "<base href='sips://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'tel'", +"input": "<base href='tel://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'fax'", +"input": "<base href='fax://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'modem'", +"input": "<base href='modem://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'ldap'", +"input": "<base href='ldap://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'https'", +"input": "<base href='https://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'soap.beep'", +"input": "<base href='soap.beep://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'soap.beeps'", +"input": "<base href='soap.beeps://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'xmlrpc.beep'", +"input": "<base href='xmlrpc.beep://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'xmlrpc.beeps'", +"input": "<base href='xmlrpc.beeps://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'urn'", +"input": "<base href='urn://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'go'", +"input": "<base href='go://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'h323'", +"input": "<base href='h323://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'ipp'", +"input": "<base href='ipp://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'tftp'", +"input": "<base href='tftp://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'mupdate'", +"input": "<base href='mupdate://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'pres'", +"input": "<base href='pres://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'im'", +"input": "<base href='im://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'mtqp'", +"input": "<base href='mtqp://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'iris.beep'", +"input": "<base href='iris.beep://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'dict'", +"input": "<base href='dict://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'snmp'", +"input": "<base href='snmp://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'crid'", +"input": "<base href='crid://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'tag'", +"input": "<base href='tag://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'dns'", +"input": "<base href='dns://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'info'", +"input": "<base href='info://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'javascript'", +"input": "<base href='javascript:foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'FTP'", +"input": "<base href='FTP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'HTTP'", +"input": "<base href='HTTP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'GOPHER'", +"input": "<base href='GOPHER://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'MAILTO'", +"input": "<base href='MAILTO://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'NEWS'", +"input": "<base href='NEWS://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'NNTP'", +"input": "<base href='NNTP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'TELNET'", +"input": "<base href='TELNET://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'WAIS'", +"input": "<base href='WAIS://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'FILE'", +"input": "<base href='FILE://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'PROSPERO'", +"input": "<base href='PROSPERO://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'Z39.50S'", +"input": "<base href='Z39.50S://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'Z39.50R'", +"input": "<base href='Z39.50R://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'CID'", +"input": "<base href='CID://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'MID'", +"input": "<base href='MID://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'VEMMI'", +"input": "<base href='VEMMI://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'SERVICE'", +"input": "<base href='SERVICE://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'IMAP'", +"input": "<base href='IMAP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'NFS'", +"input": "<base href='NFS://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'ACAP'", +"input": "<base href='ACAP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'RTSP'", +"input": "<base href='RTSP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'TIP'", +"input": "<base href='TIP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'POP'", +"input": "<base href='POP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'DATA'", +"input": "<base href='DATA://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'DAV'", +"input": "<base href='DAV://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'OPAQUELOCKTOKEN'", +"input": "<base href='OPAQUELOCKTOKEN://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'SIP'", +"input": "<base href='SIP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'SIPS'", +"input": "<base href='SIPS://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'TEL'", +"input": "<base href='TEL://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'FAX'", +"input": "<base href='FAX://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'MODEM'", +"input": "<base href='MODEM://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'LDAP'", +"input": "<base href='LDAP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'HTTPS'", +"input": "<base href='HTTPS://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'SOAP.BEEP'", +"input": "<base href='SOAP.BEEP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'SOAP.BEEPS'", +"input": "<base href='SOAP.BEEPS://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'XMLRPC.BEEP'", +"input": "<base href='XMLRPC.BEEP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'XMLRPC.BEEPS'", +"input": "<base href='XMLRPC.BEEPS://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'URN'", +"input": "<base href='URN://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'GO'", +"input": "<base href='GO://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'H323'", +"input": "<base href='H323://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'IPP'", +"input": "<base href='IPP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'TFTP'", +"input": "<base href='TFTP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'MUPDATE'", +"input": "<base href='MUPDATE://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'PRES'", +"input": "<base href='PRES://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'IM'", +"input": "<base href='IM://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'MTQP'", +"input": "<base href='MTQP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'IRIS.BEEP'", +"input": "<base href='IRIS.BEEP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'DICT'", +"input": "<base href='DICT://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'SNMP'", +"input": "<base href='SNMP://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'CRID'", +"input": "<base href='CRID://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'TAG'", +"input": "<base href='TAG://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'DNS'", +"input": "<base href='DNS://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'INFO'", +"input": "<base href='INFO://foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'JAVASCRIPT'", +"input": "<base href='JAVASCRIPT:foo'", +"fail-if": "invalid-scheme"}, + +{"description": "base href contains valid URI scheme 'foo'", +"input": "<base href='foo:bar'", +"fail-unless": "invalid-scheme"}, + +{"description": "base href contains valid URI 'g'", +"input": "<base href='g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI './g'", +"input": "<base href='./g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g/'", +"input": "<base href='g/'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '/g'", +"input": "<base href='/g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '//g'", +"input": "<base href='//g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '?y'", +"input": "<base href='?y'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g?y'", +"input": "<base href='g?y'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '#s'", +"input": "<base href='#s'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g#s'", +"input": "<base href='g#s'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g?y#s'", +"input": "<base href='g?y#s'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI ';x'", +"input": "<base href=';x'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g;x'", +"input": "<base href='g;x'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g;x?y#s'", +"input": "<base href='g;x?y#s'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '.'", +"input": "<base href='.'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI './'", +"input": "<base href='./'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '..'", +"input": "<base href='..'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '../'", +"input": "<base href='../'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '../g'", +"input": "<base href='../g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '../..'", +"input": "<base href='../..'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '../../'", +"input": "<base href='../../'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '../../g'", +"input": "<base href='../../g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '../../../g'", +"input": "<base href='../../../g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '../../../../g'", +"input": "<base href='../../../../g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '/./g'", +"input": "<base href='/./g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '/../g'", +"input": "<base href='/../g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g.'", +"input": "<base href='g.'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '.g'", +"input": "<base href='.g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g..'", +"input": "<base href='g..'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI '..g'", +"input": "<base href='..g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI './../g'", +"input": "<base href='./../g'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI './g/.'", +"input": "<base href='./g/.'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g/./h'", +"input": "<base href='g/./h'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g/../h'", +"input": "<base href='g/../h'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g;x=1/./y'", +"input": "<base href='g;x=1/./y'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g;x=1/../y'", +"input": "<base href='g;x=1/../y'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g?y/./x'", +"input": "<base href='g?y/./x'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g?y/../x'", +"input": "<base href='g?y/../x'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g#s/./x'", +"input": "<base href='g#s/./x'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'g#s/../x'", +"input": "<base href='g#s/../x'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI './g:h'", +"input": "<base href='./g:h'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'http://www.w%33.org'", +"input": "<base href='http://www.w%33.org'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'http://r%C3%A4ksm%C3%B6rg%C3%A5s.josefsson.org'", +"input": "<base href='http://r%C3%A4ksm%C3%B6rg%C3%A5s.josefsson.org'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'http://xn--rksmrgs-5wao1o.josefsson.org'", +"input": "<base href='http://xn--rksmrgs-5wao1o.josefsson.org'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'http://%E7%B4%8D%E8%B1%86.w3.mag.keio.ac.jp'", +"input": "<base href='http://%E7%B4%8D%E8%B1%86.w3.mag.keio.ac.jp'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'http://xn--99zt52a.w3.mag.keio.ac.jp'", +"input": "<base href='http://xn--99zt52a.w3.mag.keio.ac.jp'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'http://www.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/'", +"input": "<base href='http://www.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/'", +"input": "<base href='http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'http://%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/'", +"input": "<base href='http://%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/'", +"fail-if": "invalid-attribute-value"}, + +{"description": "base href contains valid URI 'http://xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/'", +"input": "<base href='http://xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/'", +"fail-if": "invalid-attribute-value"} + +]} diff --git a/test/data/validator/base-target-attribute.test b/test/data/validator/base-target-attribute.test new file mode 100755 index 0000000..6d4db20 --- /dev/null +++ b/test/data/validator/base-target-attribute.test @@ -0,0 +1,35 @@ +{"tests": [ + +{"description": "valid base target attribute '_self'", +"input": "<base target=_self>", +"fail-if": "invalid-browsing-context"}, + +{"description": "valid base target attribute '_parent'", +"input": "<base target=_parent>", +"fail-if": "invalid-browsing-context"}, + +{"description": "valid base target attribute '_top'", +"input": "<base target=_top>", +"fail-if": "invalid-browsing-context"}, + +{"description": "valid base target attribute '_blank'", +"input": "<base target=_blank>", +"fail-if": "invalid-browsing-context"}, + +{"description": "valid base target attribute 'foo'", +"input": "<base target=foo>", +"fail-if": "invalid-browsing-context"}, + +{"description": "base target attribute may be blank", +"input": "<base target>", +"fail-if": "invalid-browsing-context"}, + +{"description": "invalid base target attribute '_'", +"input": "<base target=_>", +"fail-unless": "invalid-browsing-context"}, + +{"description": "invalid base target attribute '_foo'", +"input": "<base target=_foo>", +"fail-unless": "invalid-browsing-context"} + +]}
\ No newline at end of file diff --git a/test/data/validator/blockquote-cite-attribute.test b/test/data/validator/blockquote-cite-attribute.test new file mode 100755 index 0000000..153c6e6 --- /dev/null +++ b/test/data/validator/blockquote-cite-attribute.test @@ -0,0 +1,7 @@ +{"tests": [ + +{"description": "blockquote cite contains invalid URI due to space in domain", +"input": "<blockquote cite='http://www.example. com/'", +"fail-unless": "invalid-uri-char"} + +]}
\ No newline at end of file diff --git a/test/data/validator/classattribute.test b/test/data/validator/classattribute.test new file mode 100755 index 0000000..0fe703f --- /dev/null +++ b/test/data/validator/classattribute.test @@ -0,0 +1,152 @@ +{"tests": [ + +{"description": "valid single class attribute value", +"input": "<span class=a>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading space", +"input": "<span class=' a'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with trailing space", +"input": "<span class='a '>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading and trailing space", +"input": "<span class=' a '>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading tab", +"input": "<span class='\ta'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with trailing tab", +"input": "<span class='a\t'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading and trailing tab", +"input": "<span class='\ta\t'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading LF", +"input": "<span class='\na'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with trailing LF", +"input": "<span class='a\n'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading and trailing LF", +"input": "<span class='\na\n'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading LT", +"input": "<span class='\u000Ba'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with trailing LT", +"input": "<span class='a\u000B'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading and trailing LT", +"input": "<span class='\u000Ba\u000B'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading FF", +"input": "<span class='\u000Ca'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with trailing FF", +"input": "<span class='a\u000C'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading and trailing FF", +"input": "<span class='\u000Ca\u000C'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading CR", +"input": "<span class='\ra'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with trailing CR", +"input": "<span class='a\r'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid single class attribute value with leading and trailing CR", +"input": "<span class='\ra\r'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid double class attribute value separated by space", +"input": "<span class='a b'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid double class attribute value separated by tab", +"input": "<span class='a\tb'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid double class attribute value separated by LF", +"input": "<span class='a\nb'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid double class attribute value separated by LT", +"input": "<span class='a\u000Bb'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid double class attribute value separated by FF", +"input": "<span class='a\u000Cb'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid double class attribute value separated by CR", +"input": "<span class='a\rb'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "invalid duplicated class attribute value separated by space", +"input": "<span class='a a'>", +"fail-unless": "invalid-attribute-value"}, + +{"description": "invalid duplicated class attribute value separated by tab", +"input": "<span class='a\ta'>", +"fail-unless": "invalid-attribute-value"}, + +{"description": "invalid duplicated class attribute value separated by LF", +"input": "<span class='a\na'>", +"fail-unless": "invalid-attribute-value"}, + +{"description": "invalid duplicated class attribute value separated by LT", +"input": "<span class='a\u000Ba'>", +"fail-unless": "invalid-attribute-value"}, + +{"description": "invalid duplicated class attribute value separated by FF", +"input": "<span class='a\u000Ca'>", +"fail-unless": "invalid-attribute-value"}, + +{"description": "invalid duplicated class attribute value separated by CR", +"input": "<span class='a\ra'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated class attribute value separated by space", +"input": "<span class='a a'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated class attribute value separated by tab", +"input": "<span class='a\ta'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated class attribute value separated by LF", +"input": "<span class='a\na'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated class attribute value separated by LT", +"input": "<span class='a\u000Ba'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated class attribute value separated by FF", +"input": "<span class='a\u000Ca'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated class attribute value separated by CR", +"input": "<span class='a\ra'>", +"fail-unless": "duplicate-value-in-token-list"} + +]} + diff --git a/test/data/validator/contenteditableattribute.test b/test/data/validator/contenteditableattribute.test new file mode 100755 index 0000000..b6ae1d2 --- /dev/null +++ b/test/data/validator/contenteditableattribute.test @@ -0,0 +1,59 @@ +{"tests": [ + +{"description": "valid contenteditable attribute value 'true'", +"input": "<span contenteditable=true>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid contenteditable attribute value 'TRUE'", +"input": "<span contenteditable=TRUE>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid contenteditable attribute value 'TrUe'", +"input": "<span contenteditable=TrUe>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid contenteditable attribute value 'false'", +"input": "<span contenteditable=false>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid contenteditable attribute value 'FALSE'", +"input": "<span contenteditable=FALSE>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid contenteditable attribute value 'FalSe'", +"input": "<span contenteditable=FalSe>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid contenteditable attribute value ''", +"input": "<span contenteditable=''>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid contenteditable attribute value (not specified)", +"input": "<span contenteditable>", +"fail-if": "invalid-attribute-value"}, + +{"description": "invalid contenteditable attribute value 'foo'", +"input": "<span contenteditable=foo>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid contenteditable attribute value '0'", +"input": "<span contenteditable=0>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid contenteditable attribute value '1'", +"input": "<span contenteditable=1>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid contenteditable attribute value 'yes'", +"input": "<span contenteditable=yes>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid contenteditable attribute value 'no'", +"input": "<span contenteditable=no>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid contenteditable attribute value 'inherit'", +"input": "<span contenteditable=inherit>", +"fail-unless": "invalid-enumerated-value"} + +]}
\ No newline at end of file diff --git a/test/data/validator/contextmenuattribute.test b/test/data/validator/contextmenuattribute.test new file mode 100755 index 0000000..59e4397 --- /dev/null +++ b/test/data/validator/contextmenuattribute.test @@ -0,0 +1,115 @@ +{"tests": [ + +{"description": "contextmenu points to valid ID earlier", +"input": "<menu id=a><span contextmenu=a>", +"fail-if": "id-does-not-exist"}, + +{"description": "contextmenu points to valid ID later", +"input": "<span contextmenu=a><menu id=a>", +"fail-if": "id-does-not-exist"}, + +{"description": "contextmenu points to non-existent ID", +"input": "<span contextmenu=a>", +"fail-unless": "id-does-not-exist"}, + +{"description": "contextmenu points to ID on non-menu element", +"input": "<span id=a><span contextmenu=a>", +"fail-unless": "contextmenu-must-point-to-menu"}, + +{"description": "uppercase contextmenu points to ID on non-menu element", +"input": "<span id=a><span CONTEXTMENU=a>", +"fail-unless": "contextmenu-must-point-to-menu"}, + +{"description": "valid ID 'a'", +"input": "<span contextmenu=a>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid ID '1'", +"input": "<span contextmenu=1>", +"fail-if": "invalid-attribute-value"}, + +{"description": "wacky but valid ID", +"input": "<span contextmenu='<html><head><title>a</title></head><body><p>b</p></body></html>'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "invalid blank ID", +"input": "<span id>", +"fail-unless": "attribute-value-can-not-be-blank"}, + +{"description": "invalid blank ID with quotes", +"input": "<span contextmenu=''>", +"fail-unless": "attribute-value-can-not-be-blank"}, + +{"description": "invalid ID because of leading space", +"input": "<span contextmenu=' a'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing space", +"input": "<span contextmenu='a '>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of space in value", +"input": "<span contextmenu='a b'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading tab", +"input": "<span contextmenu='\ta'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing tab", +"input": "<span contextmenu='a\t'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of tab in value", +"input": "<span contextmenu='a\tb'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading LF", +"input": "<span contextmenu='\na'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing LF", +"input": "<span contextmenu='a\n'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of LF in value", +"input": "<span contextmenu='a\nb'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading LT", +"input": "<span contextmenu='\u000Ba'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing LT", +"input": "<span contextmenu='a\u000B'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of LT in value", +"input": "<span contextmenu='a\u000Bb'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading FF", +"input": "<span contextmenu='\u000Ca'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing FF", +"input": "<span contextmenu='a\u000C'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of FF in value", +"input": "<span contextmenu='a\u000Cb'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading CR", +"input": "<span contextmenu='\ra'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing CR", +"input": "<span contextmenu='a\r'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of CR in value", +"input": "<span contextmenu='a\rb'>", +"fail-unless": "space-in-id"} + +]} diff --git a/test/data/validator/dirattribute.test b/test/data/validator/dirattribute.test new file mode 100755 index 0000000..71883dc --- /dev/null +++ b/test/data/validator/dirattribute.test @@ -0,0 +1,59 @@ +{"tests": [ + +{"description": "valid dir attribute value 'ltr'", +"input": "<span dir=ltr>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid dir attribute value 'LTR'", +"input": "<span dir=LTR>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid dir attribute value 'LtR'", +"input": "<span dir=LtR>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid dir attribute value 'rtl'", +"input": "<span dir=rtl>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid dir attribute value 'RTL'", +"input": "<span dir=RTL>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid dir attribute value 'RtL'", +"input": "<span dir=RtL>", +"fail-if": "invalid-attribute-value"}, + +{"description": "invalid dir attribute value due to leading space", +"input": "<span dir=' ltr'>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "dir attribute value can not be blank", +"input": "<span dir>", +"fail-unless": "attribute-value-can-not-be-blank"}, + +{"description": "dir attribute value can not be blank (with quotes)", +"input": "<span dir=''>", +"fail-unless": "attribute-value-can-not-be-blank"}, + +{"description": "invalid dir attribute value 'left'", +"input": "<span dir=left>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid dir attribute value 'right'", +"input": "<span dir=right>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid dir attribute value 'lefttoright'", +"input": "<span dir=lefttoright>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid dir attribute value 'righttoleft'", +"input": "<span dir=righttoleft>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid dir attribute value 'inherit'", +"input": "<span dir=inherit>", +"fail-unless": "invalid-enumerated-value"} + +]}
\ No newline at end of file diff --git a/test/data/validator/draggableattribute.test b/test/data/validator/draggableattribute.test new file mode 100755 index 0000000..49e692d --- /dev/null +++ b/test/data/validator/draggableattribute.test @@ -0,0 +1,63 @@ +{"tests": [ + +{"description": "valid draggable attribute value 'true'", +"input": "<span draggable=true>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid draggable attribute value 'TRUE'", +"input": "<span draggable=TRUE>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid draggable attribute value 'TrUe'", +"input": "<span draggable=TrUe>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid draggable attribute value 'false'", +"input": "<span draggable=false>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid draggable attribute value 'FALSE'", +"input": "<span draggable=FALSE>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid draggable attribute value 'FalSe'", +"input": "<span draggable=FalSe>", +"fail-if": "invalid-attribute-value"}, + +{"description": "invalid draggable attribute value ''", +"input": "<span draggable=''>", +"fail-unless": "attribute-value-can-not-be-blank"}, + +{"description": "valid draggable attribute value (not specified)", +"input": "<span draggable>", +"fail-unless": "attribute-value-can-not-be-blank"}, + +{"description": "invalid draggable attribute value 'foo'", +"input": "<span draggable=foo>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid draggable attribute value '0'", +"input": "<span draggable=0>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid draggable attribute value '1'", +"input": "<span draggable=1>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid draggable attribute value 'yes'", +"input": "<span draggable=yes>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid draggable attribute value 'no'", +"input": "<span draggable=no>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid draggable attribute value 'auto'", +"input": "<span draggable=auto>", +"fail-unless": "invalid-enumerated-value"}, + +{"description": "invalid draggable attribute value 'inherit'", +"input": "<span draggable=inherit>", +"fail-unless": "invalid-enumerated-value"} + +]}
\ No newline at end of file diff --git a/test/data/validator/html-xmlns-attribute.test b/test/data/validator/html-xmlns-attribute.test new file mode 100755 index 0000000..2ebd19e --- /dev/null +++ b/test/data/validator/html-xmlns-attribute.test @@ -0,0 +1,23 @@ +{"tests": [ + +{"description": "valid html xmlns attribute", +"input": "<html xmlns=http://www.w3.org/1999/xhtml>", +"fail-if": "invalid-root-namespace"}, + +{"description": "invalid html xmlns attribute due to leading space", +"input": "<html xmlns=' http://www.w3.org/1999/xhtml'>", +"fail-unless": "invalid-root-namespace"}, + +{"description": "invalid html xmlns attribute due to trailing space", +"input": "<html xmlns='http://www.w3.org/1999/xhtml '>", +"fail-unless": "invalid-root-namespace"}, + +{"description": "invalid html xmlns attribute due to uppercase", +"input": "<html xmlns=HTTP://WWW.W3.ORG/1999/XHTML>", +"fail-unless": "invalid-root-namespace"}, + +{"description": "invalid xmlns attribute on non-html element", +"input": "<body xmlns=http://www.w3.org/1999/xhtml>", +"fail-unless": "unknown-attribute"} + +]}
\ No newline at end of file diff --git a/test/data/validator/idattribute.test b/test/data/validator/idattribute.test new file mode 100755 index 0000000..4058d52 --- /dev/null +++ b/test/data/validator/idattribute.test @@ -0,0 +1,115 @@ +{"tests": [ + +{"description": "valid ID 'a'", +"input": "<span id=a>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid ID '1'", +"input": "<span id=1>", +"fail-if": "invalid-attribute-value"}, + +{"description": "wacky but valid ID", +"input": "<span id='<html><head><title>a</title></head><body><p>b</p></body></html>'>", +"fail-if": "invalid-attribute-value"}, + +{"description": "invalid blank ID", +"input": "<span id>", +"fail-unless": "attribute-value-can-not-be-blank"}, + +{"description": "invalid blank ID with quotes", +"input": "<span id=''>", +"fail-unless": "attribute-value-can-not-be-blank"}, + +{"description": "invalid ID because of leading space", +"input": "<span id=' a'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing space", +"input": "<span id='a '>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of space in value", +"input": "<span id='a b'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading tab", +"input": "<span id='\ta'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing tab", +"input": "<span id='a\t'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of tab in value", +"input": "<span id='a\tb'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading LF", +"input": "<span id='\na'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing LF", +"input": "<span id='a\n'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of LF in value", +"input": "<span id='a\nb'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading LT", +"input": "<span id='\u000Ba'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing LT", +"input": "<span id='a\u000B'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of LT in value", +"input": "<span id='a\u000Bb'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading FF", +"input": "<span id='\u000Ca'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing FF", +"input": "<span id='a\u000C'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of FF in value", +"input": "<span id='a\u000Cb'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of leading CR", +"input": "<span id='\ra'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of trailing CR", +"input": "<span id='a\r'>", +"fail-unless": "space-in-id"}, + +{"description": "invalid ID because of CR in value", +"input": "<span id='a\rb'>", +"fail-unless": "space-in-id"}, + +{"description": "duplicate ID values", +"input": "<span id=a><span id=a>", +"fail-unless": "duplicate-id"}, + +{"description": "duplicate ID values with spaces (weird but true)", +"input": "<span id='a '><span id='a '>", +"fail-unless": "duplicate-id"}, + +{"description": "not duplicate ID values because spaces don't match", +"input": "<span id=a><span id='a '>", +"fail-if": "duplicate-id"}, + +{"description": "not duplicate ID values because spaces don't match", +"input": "<span id=' a'><span id='a '>", +"fail-if": "duplicate-id"}, + +{"description": "not duplicate ID values because case doesn't match", +"input": "<span id=a><span id=A>", +"fail-if": "duplicate-id"} + +]} diff --git a/test/data/validator/inputattributes.test b/test/data/validator/inputattributes.test new file mode 100755 index 0000000..acdc50e --- /dev/null +++ b/test/data/validator/inputattributes.test @@ -0,0 +1,2795 @@ +{"tests": [ + +{"description": "'size' attribute deprecated on <input type='text'>", +"input": "<input type=text size>", +"fail-unless": "deprecated-attribute"}, + +{"description": "'size' attribute deprecated on <input type='password'>", +"input": "<input type=password size>", +"fail-unless": "deprecated-attribute"}, + +{"description": "allowed 'accesskey' attribute on <input type='checkbox'>", +"input": "<input type=checkbox accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='checkbox'>", +"input": "<input type=checkbox disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'checked' attribute on <input type='checkbox'>", +"input": "<input type=checkbox checked>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='checkbox'>", +"input": "<input type=checkbox autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='checkbox'>", +"input": "<input type=checkbox form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='checkbox'>", +"input": "<input type=checkbox name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='checkbox'>", +"input": "<input type=checkbox required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='checkbox'>", +"input": "<input type=checkbox value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='checkbox'>", +"input": "<input type=checkbox action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='checkbox'>", +"input": "<input type=checkbox tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='text'>", +"input": "<input type=text accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='text'>", +"input": "<input type=text accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='text'>", +"input": "<input type=text replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='text'>", +"input": "<input type=text disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='text'>", +"input": "<input type=text alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'size' attribute on <input type='text'>", +"input": "<input type=text size>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='text'>", +"input": "<input type=text checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='text'>", +"input": "<input type=text min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'pattern' attribute on <input type='text'>", +"input": "<input type=text pattern>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='text'>", +"input": "<input type=text readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='text'>", +"input": "<input type=text template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='text'>", +"input": "<input type=text autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='text'>", +"input": "<input type=text target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='text'>", +"input": "<input type=text method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='text'>", +"input": "<input type=text form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='text'>", +"input": "<input type=text max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='text'>", +"input": "<input type=text step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='text'>", +"input": "<input type=text enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='text'>", +"input": "<input type=text src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='text'>", +"input": "<input type=text name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='text'>", +"input": "<input type=text required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='text'>", +"input": "<input type=text list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='text'>", +"input": "<input type=text value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='text'>", +"input": "<input type=text autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'inputmode' attribute on <input type='text'>", +"input": "<input type=text inputmode>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'maxlength' attribute on <input type='text'>", +"input": "<input type=text maxlength>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='text'>", +"input": "<input type=text action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='text'>", +"input": "<input type=text tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='image'>", +"input": "<input type=image accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='image'>", +"input": "<input type=image accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'replace' attribute on <input type='image'>", +"input": "<input type=image replace>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='image'>", +"input": "<input type=image disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'alt' attribute on <input type='image'>", +"input": "<input type=image alt>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='image'>", +"input": "<input type=image size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='image'>", +"input": "<input type=image checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='image'>", +"input": "<input type=image min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='image'>", +"input": "<input type=image pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='image'>", +"input": "<input type=image readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='image'>", +"input": "<input type=image template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='image'>", +"input": "<input type=image autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'target' attribute on <input type='image'>", +"input": "<input type=image target>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'method' attribute on <input type='image'>", +"input": "<input type=image method>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='image'>", +"input": "<input type=image form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='image'>", +"input": "<input type=image max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='image'>", +"input": "<input type=image step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'enctype' attribute on <input type='image'>", +"input": "<input type=image enctype>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'src' attribute on <input type='image'>", +"input": "<input type=image src>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='image'>", +"input": "<input type=image name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'required' attribute not allowed on <input type='image'>", +"input": "<input type=image required>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='image'>", +"input": "<input type=image list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'value' attribute not allowed on <input type='image'>", +"input": "<input type=image value>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='image'>", +"input": "<input type=image autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='image'>", +"input": "<input type=image inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='image'>", +"input": "<input type=image maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'action' attribute on <input type='image'>", +"input": "<input type=image action>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='image'>", +"input": "<input type=image tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='number'>", +"input": "<input type=number accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='number'>", +"input": "<input type=number accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='number'>", +"input": "<input type=number replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='number'>", +"input": "<input type=number disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='number'>", +"input": "<input type=number alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='number'>", +"input": "<input type=number size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='number'>", +"input": "<input type=number checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'min' attribute on <input type='number'>", +"input": "<input type=number min>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='number'>", +"input": "<input type=number pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='number'>", +"input": "<input type=number readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='number'>", +"input": "<input type=number template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='number'>", +"input": "<input type=number autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='number'>", +"input": "<input type=number target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='number'>", +"input": "<input type=number method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='number'>", +"input": "<input type=number form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'max' attribute on <input type='number'>", +"input": "<input type=number max>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'step' attribute on <input type='number'>", +"input": "<input type=number step>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='number'>", +"input": "<input type=number enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='number'>", +"input": "<input type=number src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='number'>", +"input": "<input type=number name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='number'>", +"input": "<input type=number required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='number'>", +"input": "<input type=number list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='number'>", +"input": "<input type=number value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='number'>", +"input": "<input type=number autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='number'>", +"input": "<input type=number inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='number'>", +"input": "<input type=number maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='number'>", +"input": "<input type=number action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='number'>", +"input": "<input type=number tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='month'>", +"input": "<input type=month accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='month'>", +"input": "<input type=month accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='month'>", +"input": "<input type=month replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='month'>", +"input": "<input type=month disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='month'>", +"input": "<input type=month alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='month'>", +"input": "<input type=month size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='month'>", +"input": "<input type=month checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'min' attribute on <input type='month'>", +"input": "<input type=month min>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='month'>", +"input": "<input type=month pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='month'>", +"input": "<input type=month readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='month'>", +"input": "<input type=month template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='month'>", +"input": "<input type=month autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='month'>", +"input": "<input type=month target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='month'>", +"input": "<input type=month method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='month'>", +"input": "<input type=month form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'max' attribute on <input type='month'>", +"input": "<input type=month max>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'step' attribute on <input type='month'>", +"input": "<input type=month step>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='month'>", +"input": "<input type=month enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='month'>", +"input": "<input type=month src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='month'>", +"input": "<input type=month name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='month'>", +"input": "<input type=month required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='month'>", +"input": "<input type=month list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='month'>", +"input": "<input type=month value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='month'>", +"input": "<input type=month autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='month'>", +"input": "<input type=month inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='month'>", +"input": "<input type=month maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='month'>", +"input": "<input type=month action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='month'>", +"input": "<input type=month tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='radio'>", +"input": "<input type=radio accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='radio'>", +"input": "<input type=radio accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='radio'>", +"input": "<input type=radio replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='radio'>", +"input": "<input type=radio disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='radio'>", +"input": "<input type=radio alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='radio'>", +"input": "<input type=radio size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'checked' attribute on <input type='radio'>", +"input": "<input type=radio checked>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='radio'>", +"input": "<input type=radio min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='radio'>", +"input": "<input type=radio pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='radio'>", +"input": "<input type=radio readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='radio'>", +"input": "<input type=radio template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='radio'>", +"input": "<input type=radio autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='radio'>", +"input": "<input type=radio target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='radio'>", +"input": "<input type=radio method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='radio'>", +"input": "<input type=radio form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='radio'>", +"input": "<input type=radio max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='radio'>", +"input": "<input type=radio step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='radio'>", +"input": "<input type=radio enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='radio'>", +"input": "<input type=radio src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='radio'>", +"input": "<input type=radio name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='radio'>", +"input": "<input type=radio required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='radio'>", +"input": "<input type=radio list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='radio'>", +"input": "<input type=radio value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='radio'>", +"input": "<input type=radio autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='radio'>", +"input": "<input type=radio inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='radio'>", +"input": "<input type=radio maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='radio'>", +"input": "<input type=radio action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='radio'>", +"input": "<input type=radio tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='file'>", +"input": "<input type=file accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accept' attribute on <input type='file'>", +"input": "<input type=file accept>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='file'>", +"input": "<input type=file replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='file'>", +"input": "<input type=file disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='file'>", +"input": "<input type=file alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='file'>", +"input": "<input type=file size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='file'>", +"input": "<input type=file checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'min' attribute on <input type='file'>", +"input": "<input type=file min>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='file'>", +"input": "<input type=file pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='file'>", +"input": "<input type=file readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='file'>", +"input": "<input type=file template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='file'>", +"input": "<input type=file autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='file'>", +"input": "<input type=file target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='file'>", +"input": "<input type=file method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='file'>", +"input": "<input type=file form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'max' attribute on <input type='file'>", +"input": "<input type=file max>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='file'>", +"input": "<input type=file step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='file'>", +"input": "<input type=file enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='file'>", +"input": "<input type=file src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='file'>", +"input": "<input type=file name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='file'>", +"input": "<input type=file required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='file'>", +"input": "<input type=file list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'value' attribute not allowed on <input type='file'>", +"input": "<input type=file value>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='file'>", +"input": "<input type=file autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='file'>", +"input": "<input type=file inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='file'>", +"input": "<input type=file maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='file'>", +"input": "<input type=file action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='file'>", +"input": "<input type=file tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='password'>", +"input": "<input type=password accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='password'>", +"input": "<input type=password accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='password'>", +"input": "<input type=password replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='password'>", +"input": "<input type=password disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='password'>", +"input": "<input type=password alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'size' attribute on <input type='password'>", +"input": "<input type=password size>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='password'>", +"input": "<input type=password checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='password'>", +"input": "<input type=password min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'pattern' attribute on <input type='password'>", +"input": "<input type=password pattern>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='password'>", +"input": "<input type=password readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='password'>", +"input": "<input type=password template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='password'>", +"input": "<input type=password autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='password'>", +"input": "<input type=password target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='password'>", +"input": "<input type=password method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='password'>", +"input": "<input type=password form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='password'>", +"input": "<input type=password max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='password'>", +"input": "<input type=password step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='password'>", +"input": "<input type=password enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='password'>", +"input": "<input type=password src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='password'>", +"input": "<input type=password name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='password'>", +"input": "<input type=password required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='password'>", +"input": "<input type=password list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='password'>", +"input": "<input type=password value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='password'>", +"input": "<input type=password autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'inputmode' attribute on <input type='password'>", +"input": "<input type=password inputmode>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'maxlength' attribute on <input type='password'>", +"input": "<input type=password maxlength>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='password'>", +"input": "<input type=password action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='password'>", +"input": "<input type=password tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='move-up'>", +"input": "<input type=move-up accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='move-up'>", +"input": "<input type=move-up disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='move-up'>", +"input": "<input type=move-up autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='move-up'>", +"input": "<input type=move-up form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='move-up'>", +"input": "<input type=move-up name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'required' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up required>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='move-up'>", +"input": "<input type=move-up value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='move-up'>", +"input": "<input type=move-up action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='move-up'>", +"input": "<input type=move-up tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='submit'>", +"input": "<input type=submit accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='submit'>", +"input": "<input type=submit accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'replace' attribute on <input type='submit'>", +"input": "<input type=submit replace>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='submit'>", +"input": "<input type=submit disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='submit'>", +"input": "<input type=submit alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='submit'>", +"input": "<input type=submit size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='submit'>", +"input": "<input type=submit checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='submit'>", +"input": "<input type=submit min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='submit'>", +"input": "<input type=submit pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='submit'>", +"input": "<input type=submit readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='submit'>", +"input": "<input type=submit template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='submit'>", +"input": "<input type=submit autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'target' attribute on <input type='submit'>", +"input": "<input type=submit target>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'method' attribute on <input type='submit'>", +"input": "<input type=submit method>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='submit'>", +"input": "<input type=submit form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='submit'>", +"input": "<input type=submit max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='submit'>", +"input": "<input type=submit step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'enctype' attribute on <input type='submit'>", +"input": "<input type=submit enctype>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='submit'>", +"input": "<input type=submit src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='submit'>", +"input": "<input type=submit name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'required' attribute not allowed on <input type='submit'>", +"input": "<input type=submit required>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='submit'>", +"input": "<input type=submit list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='submit'>", +"input": "<input type=submit value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='submit'>", +"input": "<input type=submit autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='submit'>", +"input": "<input type=submit inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='submit'>", +"input": "<input type=submit maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'action' attribute on <input type='submit'>", +"input": "<input type=submit action>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='submit'>", +"input": "<input type=submit tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='add'>", +"input": "<input type=add accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='add'>", +"input": "<input type=add accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='add'>", +"input": "<input type=add replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='add'>", +"input": "<input type=add disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='add'>", +"input": "<input type=add alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='add'>", +"input": "<input type=add size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='add'>", +"input": "<input type=add checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='add'>", +"input": "<input type=add min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='add'>", +"input": "<input type=add pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='add'>", +"input": "<input type=add readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'template' attribute on <input type='add'>", +"input": "<input type=add template>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='add'>", +"input": "<input type=add autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='add'>", +"input": "<input type=add target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='add'>", +"input": "<input type=add method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='add'>", +"input": "<input type=add form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='add'>", +"input": "<input type=add max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='add'>", +"input": "<input type=add step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='add'>", +"input": "<input type=add enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='add'>", +"input": "<input type=add src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='add'>", +"input": "<input type=add name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'required' attribute not allowed on <input type='add'>", +"input": "<input type=add required>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='add'>", +"input": "<input type=add list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='add'>", +"input": "<input type=add value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='add'>", +"input": "<input type=add autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='add'>", +"input": "<input type=add inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='add'>", +"input": "<input type=add maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='add'>", +"input": "<input type=add action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='add'>", +"input": "<input type=add tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accesskey' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden accesskey>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='hidden'>", +"input": "<input type=hidden disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autofocus' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden autofocus>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='hidden'>", +"input": "<input type=hidden form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='hidden'>", +"input": "<input type=hidden name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'required' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden required>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='hidden'>", +"input": "<input type=hidden value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'tabindex' attribute not allowed on <input type='hidden'>", +"input": "<input type=hidden tabindex>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='email'>", +"input": "<input type=email accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='email'>", +"input": "<input type=email accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='email'>", +"input": "<input type=email replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='email'>", +"input": "<input type=email disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='email'>", +"input": "<input type=email alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='email'>", +"input": "<input type=email size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='email'>", +"input": "<input type=email checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='email'>", +"input": "<input type=email min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'pattern' attribute on <input type='email'>", +"input": "<input type=email pattern>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='email'>", +"input": "<input type=email readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='email'>", +"input": "<input type=email template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='email'>", +"input": "<input type=email autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='email'>", +"input": "<input type=email target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='email'>", +"input": "<input type=email method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='email'>", +"input": "<input type=email form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='email'>", +"input": "<input type=email max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='email'>", +"input": "<input type=email step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='email'>", +"input": "<input type=email enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='email'>", +"input": "<input type=email src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='email'>", +"input": "<input type=email name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='email'>", +"input": "<input type=email required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='email'>", +"input": "<input type=email list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='email'>", +"input": "<input type=email value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='email'>", +"input": "<input type=email autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'inputmode' attribute on <input type='email'>", +"input": "<input type=email inputmode>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'maxlength' attribute on <input type='email'>", +"input": "<input type=email maxlength>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='email'>", +"input": "<input type=email action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='email'>", +"input": "<input type=email tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='week'>", +"input": "<input type=week accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='week'>", +"input": "<input type=week accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='week'>", +"input": "<input type=week replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='week'>", +"input": "<input type=week disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='week'>", +"input": "<input type=week alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='week'>", +"input": "<input type=week size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='week'>", +"input": "<input type=week checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'min' attribute on <input type='week'>", +"input": "<input type=week min>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='week'>", +"input": "<input type=week pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='week'>", +"input": "<input type=week readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='week'>", +"input": "<input type=week template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='week'>", +"input": "<input type=week autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='week'>", +"input": "<input type=week target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='week'>", +"input": "<input type=week method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='week'>", +"input": "<input type=week form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'max' attribute on <input type='week'>", +"input": "<input type=week max>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'step' attribute on <input type='week'>", +"input": "<input type=week step>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='week'>", +"input": "<input type=week enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='week'>", +"input": "<input type=week src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='week'>", +"input": "<input type=week name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='week'>", +"input": "<input type=week required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='week'>", +"input": "<input type=week list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='week'>", +"input": "<input type=week value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='week'>", +"input": "<input type=week autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='week'>", +"input": "<input type=week inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='week'>", +"input": "<input type=week maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='week'>", +"input": "<input type=week action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='week'>", +"input": "<input type=week tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='date'>", +"input": "<input type=date accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='date'>", +"input": "<input type=date accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='date'>", +"input": "<input type=date replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='date'>", +"input": "<input type=date disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='date'>", +"input": "<input type=date alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='date'>", +"input": "<input type=date size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='date'>", +"input": "<input type=date checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'min' attribute on <input type='date'>", +"input": "<input type=date min>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='date'>", +"input": "<input type=date pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='date'>", +"input": "<input type=date readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='date'>", +"input": "<input type=date template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='date'>", +"input": "<input type=date autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='date'>", +"input": "<input type=date target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='date'>", +"input": "<input type=date method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='date'>", +"input": "<input type=date form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'max' attribute on <input type='date'>", +"input": "<input type=date max>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'step' attribute on <input type='date'>", +"input": "<input type=date step>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='date'>", +"input": "<input type=date enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='date'>", +"input": "<input type=date src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='date'>", +"input": "<input type=date name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='date'>", +"input": "<input type=date required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='date'>", +"input": "<input type=date list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='date'>", +"input": "<input type=date value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='date'>", +"input": "<input type=date autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='date'>", +"input": "<input type=date inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='date'>", +"input": "<input type=date maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='date'>", +"input": "<input type=date action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='date'>", +"input": "<input type=date tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='datetime'>", +"input": "<input type=datetime accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='datetime'>", +"input": "<input type=datetime disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'min' attribute on <input type='datetime'>", +"input": "<input type=datetime min>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='datetime'>", +"input": "<input type=datetime readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='datetime'>", +"input": "<input type=datetime autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='datetime'>", +"input": "<input type=datetime form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'max' attribute on <input type='datetime'>", +"input": "<input type=datetime max>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'step' attribute on <input type='datetime'>", +"input": "<input type=datetime step>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='datetime'>", +"input": "<input type=datetime name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='datetime'>", +"input": "<input type=datetime required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='datetime'>", +"input": "<input type=datetime list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='datetime'>", +"input": "<input type=datetime value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='datetime'>", +"input": "<input type=datetime autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='datetime'>", +"input": "<input type=datetime action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='datetime'>", +"input": "<input type=datetime tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='move-down'>", +"input": "<input type=move-down accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='move-down'>", +"input": "<input type=move-down disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='move-down'>", +"input": "<input type=move-down autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='move-down'>", +"input": "<input type=move-down form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='move-down'>", +"input": "<input type=move-down name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'required' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down required>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='move-down'>", +"input": "<input type=move-down value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='move-down'>", +"input": "<input type=move-down action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='move-down'>", +"input": "<input type=move-down tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'min' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local min>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'max' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local max>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'step' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local step>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='datetime-local'>", +"input": "<input type=datetime-local action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='reset'>", +"input": "<input type=reset accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='reset'>", +"input": "<input type=reset accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='reset'>", +"input": "<input type=reset replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='reset'>", +"input": "<input type=reset disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='reset'>", +"input": "<input type=reset alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='reset'>", +"input": "<input type=reset size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='reset'>", +"input": "<input type=reset checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='reset'>", +"input": "<input type=reset min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='reset'>", +"input": "<input type=reset pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='reset'>", +"input": "<input type=reset readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='reset'>", +"input": "<input type=reset template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='reset'>", +"input": "<input type=reset autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='reset'>", +"input": "<input type=reset target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='reset'>", +"input": "<input type=reset method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='reset'>", +"input": "<input type=reset form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='reset'>", +"input": "<input type=reset max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='reset'>", +"input": "<input type=reset step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='reset'>", +"input": "<input type=reset enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='reset'>", +"input": "<input type=reset src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='reset'>", +"input": "<input type=reset name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'required' attribute not allowed on <input type='reset'>", +"input": "<input type=reset required>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='reset'>", +"input": "<input type=reset list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='reset'>", +"input": "<input type=reset value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='reset'>", +"input": "<input type=reset autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='reset'>", +"input": "<input type=reset inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='reset'>", +"input": "<input type=reset maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='reset'>", +"input": "<input type=reset action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='reset'>", +"input": "<input type=reset tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='url'>", +"input": "<input type=url accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='url'>", +"input": "<input type=url accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='url'>", +"input": "<input type=url replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='url'>", +"input": "<input type=url disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='url'>", +"input": "<input type=url alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='url'>", +"input": "<input type=url size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='url'>", +"input": "<input type=url checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='url'>", +"input": "<input type=url min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'pattern' attribute on <input type='url'>", +"input": "<input type=url pattern>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='url'>", +"input": "<input type=url readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='url'>", +"input": "<input type=url template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='url'>", +"input": "<input type=url autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='url'>", +"input": "<input type=url target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='url'>", +"input": "<input type=url method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='url'>", +"input": "<input type=url form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='url'>", +"input": "<input type=url max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='url'>", +"input": "<input type=url step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='url'>", +"input": "<input type=url enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='url'>", +"input": "<input type=url src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='url'>", +"input": "<input type=url name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='url'>", +"input": "<input type=url required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='url'>", +"input": "<input type=url list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='url'>", +"input": "<input type=url value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='url'>", +"input": "<input type=url autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'inputmode' attribute on <input type='url'>", +"input": "<input type=url inputmode>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'maxlength' attribute on <input type='url'>", +"input": "<input type=url maxlength>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='url'>", +"input": "<input type=url action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='url'>", +"input": "<input type=url tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='button'>", +"input": "<input type=button accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='button'>", +"input": "<input type=button accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='button'>", +"input": "<input type=button replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='button'>", +"input": "<input type=button disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='button'>", +"input": "<input type=button alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='button'>", +"input": "<input type=button size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='button'>", +"input": "<input type=button checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='button'>", +"input": "<input type=button min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='button'>", +"input": "<input type=button pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='button'>", +"input": "<input type=button readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='button'>", +"input": "<input type=button template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='button'>", +"input": "<input type=button autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='button'>", +"input": "<input type=button target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='button'>", +"input": "<input type=button method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='button'>", +"input": "<input type=button form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='button'>", +"input": "<input type=button max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='button'>", +"input": "<input type=button step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='button'>", +"input": "<input type=button enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='button'>", +"input": "<input type=button src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='button'>", +"input": "<input type=button name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'required' attribute not allowed on <input type='button'>", +"input": "<input type=button required>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='button'>", +"input": "<input type=button list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='button'>", +"input": "<input type=button value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='button'>", +"input": "<input type=button autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='button'>", +"input": "<input type=button inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='button'>", +"input": "<input type=button maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='button'>", +"input": "<input type=button action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='button'>", +"input": "<input type=button tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='remove'>", +"input": "<input type=remove accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='remove'>", +"input": "<input type=remove accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='remove'>", +"input": "<input type=remove replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='remove'>", +"input": "<input type=remove disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='remove'>", +"input": "<input type=remove alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='remove'>", +"input": "<input type=remove size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='remove'>", +"input": "<input type=remove checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'min' attribute not allowed on <input type='remove'>", +"input": "<input type=remove min>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='remove'>", +"input": "<input type=remove pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'readonly' attribute not allowed on <input type='remove'>", +"input": "<input type=remove readonly>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='remove'>", +"input": "<input type=remove template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='remove'>", +"input": "<input type=remove autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='remove'>", +"input": "<input type=remove target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='remove'>", +"input": "<input type=remove method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='remove'>", +"input": "<input type=remove form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'max' attribute not allowed on <input type='remove'>", +"input": "<input type=remove max>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'step' attribute not allowed on <input type='remove'>", +"input": "<input type=remove step>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='remove'>", +"input": "<input type=remove enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='remove'>", +"input": "<input type=remove src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='remove'>", +"input": "<input type=remove name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'required' attribute not allowed on <input type='remove'>", +"input": "<input type=remove required>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'list' attribute not allowed on <input type='remove'>", +"input": "<input type=remove list>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='remove'>", +"input": "<input type=remove value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'autocomplete' attribute not allowed on <input type='remove'>", +"input": "<input type=remove autocomplete>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='remove'>", +"input": "<input type=remove inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='remove'>", +"input": "<input type=remove maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='remove'>", +"input": "<input type=remove action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='remove'>", +"input": "<input type=remove tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='range'>", +"input": "<input type=range accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='range'>", +"input": "<input type=range accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='range'>", +"input": "<input type=range replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='range'>", +"input": "<input type=range disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='range'>", +"input": "<input type=range alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='range'>", +"input": "<input type=range size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='range'>", +"input": "<input type=range checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'min' attribute on <input type='range'>", +"input": "<input type=range min>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='range'>", +"input": "<input type=range pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='range'>", +"input": "<input type=range readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='range'>", +"input": "<input type=range template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='range'>", +"input": "<input type=range autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='range'>", +"input": "<input type=range target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='range'>", +"input": "<input type=range method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='range'>", +"input": "<input type=range form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'max' attribute on <input type='range'>", +"input": "<input type=range max>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'step' attribute on <input type='range'>", +"input": "<input type=range step>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='range'>", +"input": "<input type=range enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='range'>", +"input": "<input type=range src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='range'>", +"input": "<input type=range name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='range'>", +"input": "<input type=range required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='range'>", +"input": "<input type=range list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='range'>", +"input": "<input type=range value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='range'>", +"input": "<input type=range autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='range'>", +"input": "<input type=range inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='range'>", +"input": "<input type=range maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='range'>", +"input": "<input type=range action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='range'>", +"input": "<input type=range tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'accesskey' attribute on <input type='time'>", +"input": "<input type=time accesskey>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'accept' attribute not allowed on <input type='time'>", +"input": "<input type=time accept>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'replace' attribute not allowed on <input type='time'>", +"input": "<input type=time replace>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'disabled' attribute on <input type='time'>", +"input": "<input type=time disabled>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'alt' attribute not allowed on <input type='time'>", +"input": "<input type=time alt>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'size' attribute not allowed on <input type='time'>", +"input": "<input type=time size>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'checked' attribute not allowed on <input type='time'>", +"input": "<input type=time checked>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'min' attribute on <input type='time'>", +"input": "<input type=time min>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'pattern' attribute not allowed on <input type='time'>", +"input": "<input type=time pattern>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'readonly' attribute on <input type='time'>", +"input": "<input type=time readonly>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'template' attribute not allowed on <input type='time'>", +"input": "<input type=time template>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autofocus' attribute on <input type='time'>", +"input": "<input type=time autofocus>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'target' attribute not allowed on <input type='time'>", +"input": "<input type=time target>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'method' attribute not allowed on <input type='time'>", +"input": "<input type=time method>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'form' attribute on <input type='time'>", +"input": "<input type=time form>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'max' attribute on <input type='time'>", +"input": "<input type=time max>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'step' attribute on <input type='time'>", +"input": "<input type=time step>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'enctype' attribute not allowed on <input type='time'>", +"input": "<input type=time enctype>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'src' attribute not allowed on <input type='time'>", +"input": "<input type=time src>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'name' attribute on <input type='time'>", +"input": "<input type=time name>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'required' attribute on <input type='time'>", +"input": "<input type=time required>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'list' attribute on <input type='time'>", +"input": "<input type=time list>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'value' attribute on <input type='time'>", +"input": "<input type=time value>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'autocomplete' attribute on <input type='time'>", +"input": "<input type=time autocomplete>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'inputmode' attribute not allowed on <input type='time'>", +"input": "<input type=time inputmode>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'maxlength' attribute not allowed on <input type='time'>", +"input": "<input type=time maxlength>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "'action' attribute not allowed on <input type='time'>", +"input": "<input type=time action>", +"fail-unless": "attribute-not-allowed-on-this-input-type"}, + +{"description": "allowed 'tabindex' attribute on <input type='time'>", +"input": "<input type=time tabindex>", +"fail-if": "attribute-not-allowed-on-this-input-type"}, + +{"description": "unknown 'foo' attribute on <input type='checkbox'>", +"input": "<input type=checkbox foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='text'>", +"input": "<input type=text foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='image'>", +"input": "<input type=image foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='number'>", +"input": "<input type=number foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='month'>", +"input": "<input type=month foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='radio'>", +"input": "<input type=radio foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='file'>", +"input": "<input type=file foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='password'>", +"input": "<input type=password foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='move-up'>", +"input": "<input type=move-up foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='submit'>", +"input": "<input type=submit foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='add'>", +"input": "<input type=add foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='hidden'>", +"input": "<input type=hidden foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='email'>", +"input": "<input type=email foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='week'>", +"input": "<input type=week foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='date'>", +"input": "<input type=date foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='datetime'>", +"input": "<input type=datetime foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='move-down'>", +"input": "<input type=move-down foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='datetime-local'>", +"input": "<input type=datetime-local foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='reset'>", +"input": "<input type=reset foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='url'>", +"input": "<input type=url foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='button'>", +"input": "<input type=button foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='remove'>", +"input": "<input type=remove foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='range'>", +"input": "<input type=range foo>", +"fail-unless": "unknown-attribute"}, + +{"description": "unknown 'foo' attribute on <input type='time'>", +"input": "<input type=time foo>", +"fail-unless": "unknown-attribute"} + +]} diff --git a/test/data/validator/irrelevantattribute.test b/test/data/validator/irrelevantattribute.test new file mode 100755 index 0000000..fa40613 --- /dev/null +++ b/test/data/validator/irrelevantattribute.test @@ -0,0 +1,63 @@ +{"tests": [ + +{"description": "valid irrelevant attribute value 'irrelevant'", +"input": "<span irrelevant=irrelevant>", +"fail-if": "invalid-attribute-value"}, + +{"description": "valid irrelevant attribute value ''", +"input": "<span irrelevant=''>", +"fail-if": "invalid-attribute-value"}, + +{"description": "invalid irrelevant attribute value due to uppercase", +"input": "<span irrelevant=IRRELEVANT>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value due to mixed case", +"input": "<span irrelevant=IrReLeVaNt>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value due to leading space", +"input": "<span irrelevant=' irrelevant'>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value due to trailing space", +"input": "<span irrelevant='irrelevant '>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value 'foo'", +"input": "<span irrelevant=foo>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value '0'", +"input": "<span irrelevant=0>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value '1'", +"input": "<span irrelevant=1>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value 'yes'", +"input": "<span irrelevant=yes>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value 'no'", +"input": "<span irrelevant=no>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value 'true'", +"input": "<span irrelevant=true>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value 'false'", +"input": "<span irrelevant=false>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value 'auto'", +"input": "<span irrelevant=auto>", +"fail-unless": "invalid-boolean-value"}, + +{"description": "invalid irrelevant attribute value 'inherit'", +"input": "<span irrelevant=inherit>", +"fail-unless": "invalid-boolean-value"} + +]}
\ No newline at end of file diff --git a/test/data/validator/langattribute.test b/test/data/validator/langattribute.test new file mode 100755 index 0000000..6c831a1 --- /dev/null +++ b/test/data/validator/langattribute.test @@ -0,0 +1,5579 @@ +{"tests": [ + +{"description": "valid lang attribute 'roh'", +"input": "<span lang=roh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gv'", +"input": "<span lang=gv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gu'", +"input": "<span lang=gu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'scn'", +"input": "<span lang=scn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rom'", +"input": "<span lang=rom>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ron'", +"input": "<span lang=ron>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'alg'", +"input": "<span lang=alg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oss'", +"input": "<span lang=oss>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ale'", +"input": "<span lang=ale>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'alb'", +"input": "<span lang=alb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sco'", +"input": "<span lang=sco>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'scc'", +"input": "<span lang=scc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mni'", +"input": "<span lang=mni>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gd'", +"input": "<span lang=gd>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'per'", +"input": "<span lang=per>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ga'", +"input": "<span lang=ga>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nwc'", +"input": "<span lang=nwc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'osa'", +"input": "<span lang=osa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gn'", +"input": "<span lang=gn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'alt'", +"input": "<span lang=alt>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gl'", +"input": "<span lang=gl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'scr'", +"input": "<span lang=scr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mwr'", +"input": "<span lang=mwr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ty'", +"input": "<span lang=ty>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tw'", +"input": "<span lang=tw>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tt'", +"input": "<span lang=tt>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tr'", +"input": "<span lang=tr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ts'", +"input": "<span lang=ts>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tn'", +"input": "<span lang=tn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'to'", +"input": "<span lang=to>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tl'", +"input": "<span lang=tl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tk'", +"input": "<span lang=tk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'th'", +"input": "<span lang=th>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ti'", +"input": "<span lang=ti>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ven'", +"input": "<span lang=ven>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tg'", +"input": "<span lang=tg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'te'", +"input": "<span lang=te>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uga'", +"input": "<span lang=uga>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ta'", +"input": "<span lang=ta>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fas'", +"input": "<span lang=fas>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fat'", +"input": "<span lang=fat>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fan'", +"input": "<span lang=fan>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fao'", +"input": "<span lang=fao>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'got'", +"input": "<span lang=got>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sme'", +"input": "<span lang=sme>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'din'", +"input": "<span lang=din>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hye'", +"input": "<span lang=hye>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'guj'", +"input": "<span lang=guj>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cmc'", +"input": "<span lang=cmc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'srd'", +"input": "<span lang=srd>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mdr'", +"input": "<span lang=mdr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ml'", +"input": "<span lang=ml>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'div'", +"input": "<span lang=div>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zh'", +"input": "<span lang=zh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tem'", +"input": "<span lang=tem>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'xho'", +"input": "<span lang=xho>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mno'", +"input": "<span lang=mno>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'roa'", +"input": "<span lang=roa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'za'", +"input": "<span lang=za>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'deu'", +"input": "<span lang=deu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mk'", +"input": "<span lang=mk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nbl'", +"input": "<span lang=nbl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zu'", +"input": "<span lang=zu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ter'", +"input": "<span lang=ter>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tet'", +"input": "<span lang=tet>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mnc'", +"input": "<span lang=mnc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sun'", +"input": "<span lang=sun>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'abk'", +"input": "<span lang=abk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'suk'", +"input": "<span lang=suk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kur'", +"input": "<span lang=kur>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kum'", +"input": "<span lang=kum>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'slo'", +"input": "<span lang=slo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sus'", +"input": "<span lang=sus>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'new'", +"input": "<span lang=new>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kua'", +"input": "<span lang=kua>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sux'", +"input": "<span lang=sux>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'den'", +"input": "<span lang=den>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mr'", +"input": "<span lang=mr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mul'", +"input": "<span lang=mul>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lez'", +"input": "<span lang=lez>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gla'", +"input": "<span lang=gla>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bos'", +"input": "<span lang=bos>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gle'", +"input": "<span lang=gle>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eka'", +"input": "<span lang=eka>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'glg'", +"input": "<span lang=glg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'akk'", +"input": "<span lang=akk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dra'", +"input": "<span lang=dra>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aka'", +"input": "<span lang=aka>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bod'", +"input": "<span lang=bod>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'glv'", +"input": "<span lang=glv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jrb'", +"input": "<span lang=jrb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vie'", +"input": "<span lang=vie>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ipk'", +"input": "<span lang=ipk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uzb'", +"input": "<span lang=uzb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sgn'", +"input": "<span lang=sgn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sga'", +"input": "<span lang=sga>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bre'", +"input": "<span lang=bre>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'apa'", +"input": "<span lang=apa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bra'", +"input": "<span lang=bra>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aym'", +"input": "<span lang=aym>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cha'", +"input": "<span lang=cha>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chb'", +"input": "<span lang=chb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'che'", +"input": "<span lang=che>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chg'", +"input": "<span lang=chg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chi'", +"input": "<span lang=chi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chk'", +"input": "<span lang=chk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aus'", +"input": "<span lang=aus>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chn'", +"input": "<span lang=chn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cho'", +"input": "<span lang=cho>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chp'", +"input": "<span lang=chp>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chr'", +"input": "<span lang=chr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chu'", +"input": "<span lang=chu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chv'", +"input": "<span lang=chv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chy'", +"input": "<span lang=chy>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'msa'", +"input": "<span lang=msa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iii'", +"input": "<span lang=iii>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vot'", +"input": "<span lang=vot>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mg'", +"input": "<span lang=mg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ndo'", +"input": "<span lang=ndo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ibo'", +"input": "<span lang=ibo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'car'", +"input": "<span lang=car>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mo'", +"input": "<span lang=mo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mn'", +"input": "<span lang=mn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mi'", +"input": "<span lang=mi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mh'", +"input": "<span lang=mh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cau'", +"input": "<span lang=cau>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cat'", +"input": "<span lang=cat>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bur'", +"input": "<span lang=bur>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mt'", +"input": "<span lang=mt>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cai'", +"input": "<span lang=cai>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'del'", +"input": "<span lang=del>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ms'", +"input": "<span lang=ms>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'byn'", +"input": "<span lang=byn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mwl'", +"input": "<span lang=mwl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'my'", +"input": "<span lang=my>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cad'", +"input": "<span lang=cad>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tat'", +"input": "<span lang=tat>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nde'", +"input": "<span lang=nde>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tam'", +"input": "<span lang=tam>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'spa'", +"input": "<span lang=spa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tah'", +"input": "<span lang=tah>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tai'", +"input": "<span lang=tai>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cze'", +"input": "<span lang=cze>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'afh'", +"input": "<span lang=afh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eng'", +"input": "<span lang=eng>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'afa'", +"input": "<span lang=afa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'id'", +"input": "<span lang=id>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nyn'", +"input": "<span lang=nyn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nyo'", +"input": "<span lang=nyo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gez'", +"input": "<span lang=gez>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nya'", +"input": "<span lang=nya>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sio'", +"input": "<span lang=sio>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sin'", +"input": "<span lang=sin>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'afr'", +"input": "<span lang=afr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'map'", +"input": "<span lang=map>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fr'", +"input": "<span lang=fr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lao'", +"input": "<span lang=lao>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lah'", +"input": "<span lang=lah>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nym'", +"input": "<span lang=nym>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sna'", +"input": "<span lang=sna>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lad'", +"input": "<span lang=lad>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fy'", +"input": "<span lang=fy>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'snk'", +"input": "<span lang=snk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fa'", +"input": "<span lang=fa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mac'", +"input": "<span lang=mac>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mad'", +"input": "<span lang=mad>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ff'", +"input": "<span lang=ff>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lat'", +"input": "<span lang=lat>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fi'", +"input": "<span lang=fi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fj'", +"input": "<span lang=fj>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mal'", +"input": "<span lang=mal>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mao'", +"input": "<span lang=mao>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fo'", +"input": "<span lang=fo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mak'", +"input": "<span lang=mak>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'egy'", +"input": "<span lang=egy>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'znd'", +"input": "<span lang=znd>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ss'", +"input": "<span lang=ss>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sr'", +"input": "<span lang=sr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sq'", +"input": "<span lang=sq>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sit'", +"input": "<span lang=sit>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sw'", +"input": "<span lang=sw>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sv'", +"input": "<span lang=sv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'su'", +"input": "<span lang=su>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'st'", +"input": "<span lang=st>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sk'", +"input": "<span lang=sk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'si'", +"input": "<span lang=si>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sh'", +"input": "<span lang=sh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'so'", +"input": "<span lang=so>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sn'", +"input": "<span lang=sn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sm'", +"input": "<span lang=sm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sl'", +"input": "<span lang=sl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sc'", +"input": "<span lang=sc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sa'", +"input": "<span lang=sa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sg'", +"input": "<span lang=sg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'se'", +"input": "<span lang=se>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sd'", +"input": "<span lang=sd>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zen'", +"input": "<span lang=zen>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kbd'", +"input": "<span lang=kbd>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'enm'", +"input": "<span lang=enm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iro'", +"input": "<span lang=iro>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vai'", +"input": "<span lang=vai>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'csb'", +"input": "<span lang=csb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tsn'", +"input": "<span lang=tsn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lg'", +"input": "<span lang=lg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lb'", +"input": "<span lang=lb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'la'", +"input": "<span lang=la>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ln'", +"input": "<span lang=ln>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lo'", +"input": "<span lang=lo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'li'", +"input": "<span lang=li>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lv'", +"input": "<span lang=lv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lt'", +"input": "<span lang=lt>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lu'", +"input": "<span lang=lu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hin'", +"input": "<span lang=hin>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fij'", +"input": "<span lang=fij>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fin'", +"input": "<span lang=fin>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eus'", +"input": "<span lang=eus>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yi'", +"input": "<span lang=yi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'non'", +"input": "<span lang=non>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ceb'", +"input": "<span lang=ceb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yo'", +"input": "<span lang=yo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dan'", +"input": "<span lang=dan>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cel'", +"input": "<span lang=cel>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bat'", +"input": "<span lang=bat>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nob'", +"input": "<span lang=nob>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dak'", +"input": "<span lang=dak>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ces'", +"input": "<span lang=ces>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dar'", +"input": "<span lang=dar>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'son'", +"input": "<span lang=son>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'day'", +"input": "<span lang=day>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nor'", +"input": "<span lang=nor>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gba'", +"input": "<span lang=gba>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ssa'", +"input": "<span lang=ssa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hil'", +"input": "<span lang=hil>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kpe'", +"input": "<span lang=kpe>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'man'", +"input": "<span lang=man>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wel'", +"input": "<span lang=wel>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'el'", +"input": "<span lang=el>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eo'", +"input": "<span lang=eo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'en'", +"input": "<span lang=en>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lam'", +"input": "<span lang=lam>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ee'", +"input": "<span lang=ee>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tpi'", +"input": "<span lang=tpi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mdf'", +"input": "<span lang=mdf>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mas'", +"input": "<span lang=mas>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mar'", +"input": "<span lang=mar>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eu'", +"input": "<span lang=eu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'et'", +"input": "<span lang=et>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'es'", +"input": "<span lang=es>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ru'", +"input": "<span lang=ru>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rw'", +"input": "<span lang=rw>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'goh'", +"input": "<span lang=goh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sms'", +"input": "<span lang=sms>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'smo'", +"input": "<span lang=smo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'smn'", +"input": "<span lang=smn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'smj'", +"input": "<span lang=smj>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'smi'", +"input": "<span lang=smi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nic'", +"input": "<span lang=nic>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rm'", +"input": "<span lang=rm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rn'", +"input": "<span lang=rn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ro'", +"input": "<span lang=ro>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dsb'", +"input": "<span lang=dsb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sma'", +"input": "<span lang=sma>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gor'", +"input": "<span lang=gor>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ast'", +"input": "<span lang=ast>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'orm'", +"input": "<span lang=orm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'que'", +"input": "<span lang=que>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ori'", +"input": "<span lang=ori>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'crh'", +"input": "<span lang=crh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'asm'", +"input": "<span lang=asm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pus'", +"input": "<span lang=pus>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kik'", +"input": "<span lang=kik>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ltz'", +"input": "<span lang=ltz>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ath'", +"input": "<span lang=ath>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wln'", +"input": "<span lang=wln>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'isl'", +"input": "<span lang=isl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'xh'", +"input": "<span lang=xh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mag'", +"input": "<span lang=mag>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mai'", +"input": "<span lang=mai>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'xx'", +"input": "<span lang=xx>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mah'", +"input": "<span lang=mah>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tel'", +"input": "<span lang=tel>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lav'", +"input": "<span lang=lav>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zap'", +"input": "<span lang=zap>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yid'", +"input": "<span lang=yid>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kok'", +"input": "<span lang=kok>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kom'", +"input": "<span lang=kom>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kon'", +"input": "<span lang=kon>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ukr'", +"input": "<span lang=ukr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ton'", +"input": "<span lang=ton>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kos'", +"input": "<span lang=kos>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kor'", +"input": "<span lang=kor>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tog'", +"input": "<span lang=tog>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hun'", +"input": "<span lang=hun>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hup'", +"input": "<span lang=hup>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cym'", +"input": "<span lang=cym>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'udm'", +"input": "<span lang=udm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bej'", +"input": "<span lang=bej>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ben'", +"input": "<span lang=ben>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bel'", +"input": "<span lang=bel>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bem'", +"input": "<span lang=bem>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tsi'", +"input": "<span lang=tsi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aar'", +"input": "<span lang=aar>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ber'", +"input": "<span lang=ber>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nzi'", +"input": "<span lang=nzi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sai'", +"input": "<span lang=sai>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ang'", +"input": "<span lang=ang>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pra'", +"input": "<span lang=pra>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'san'", +"input": "<span lang=san>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bho'", +"input": "<span lang=bho>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sal'", +"input": "<span lang=sal>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pro'", +"input": "<span lang=pro>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'raj'", +"input": "<span lang=raj>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sad'", +"input": "<span lang=sad>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'anp'", +"input": "<span lang=anp>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rap'", +"input": "<span lang=rap>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sas'", +"input": "<span lang=sas>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iba'", +"input": "<span lang=iba>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'myn'", +"input": "<span lang=myn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'min'", +"input": "<span lang=min>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lim'", +"input": "<span lang=lim>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lin'", +"input": "<span lang=lin>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nah'", +"input": "<span lang=nah>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lit'", +"input": "<span lang=lit>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'efi'", +"input": "<span lang=efi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'srn'", +"input": "<span lang=srn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arn'", +"input": "<span lang=arn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ypk'", +"input": "<span lang=ypk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mis'", +"input": "<span lang=mis>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kac'", +"input": "<span lang=kac>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kab'", +"input": "<span lang=kab>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kaa'", +"input": "<span lang=kaa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kan'", +"input": "<span lang=kan>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kam'", +"input": "<span lang=kam>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kal'", +"input": "<span lang=kal>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kas'", +"input": "<span lang=kas>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kar'", +"input": "<span lang=kar>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kaw'", +"input": "<span lang=kaw>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kau'", +"input": "<span lang=kau>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kat'", +"input": "<span lang=kat>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kaz'", +"input": "<span lang=kaz>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tyv'", +"input": "<span lang=tyv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'awa'", +"input": "<span lang=awa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'urd'", +"input": "<span lang=urd>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ka'", +"input": "<span lang=ka>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'doi'", +"input": "<span lang=doi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kg'", +"input": "<span lang=kg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kk'", +"input": "<span lang=kk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kj'", +"input": "<span lang=kj>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ki'", +"input": "<span lang=ki>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ko'", +"input": "<span lang=ko>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kn'", +"input": "<span lang=kn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'km'", +"input": "<span lang=km>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kl'", +"input": "<span lang=kl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ks'", +"input": "<span lang=ks>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kr'", +"input": "<span lang=kr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kw'", +"input": "<span lang=kw>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kv'", +"input": "<span lang=kv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ku'", +"input": "<span lang=ku>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ky'", +"input": "<span lang=ky>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ota'", +"input": "<span lang=ota>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kut'", +"input": "<span lang=kut>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tkl'", +"input": "<span lang=tkl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nld'", +"input": "<span lang=nld>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oji'", +"input": "<span lang=oji>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oci'", +"input": "<span lang=oci>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ha'", +"input": "<span lang=ha>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wol'", +"input": "<span lang=wol>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jav'", +"input": "<span lang=jav>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hrv'", +"input": "<span lang=hrv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ger'", +"input": "<span lang=ger>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mga'", +"input": "<span lang=mga>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hit'", +"input": "<span lang=hit>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dyu'", +"input": "<span lang=dyu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ssw'", +"input": "<span lang=ssw>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'de'", +"input": "<span lang=de>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'da'", +"input": "<span lang=da>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dz'", +"input": "<span lang=dz>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lui'", +"input": "<span lang=lui>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dv'", +"input": "<span lang=dv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ita'", +"input": "<span lang=ita>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'geo'", +"input": "<span lang=geo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'him'", +"input": "<span lang=him>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gem'", +"input": "<span lang=gem>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'crp'", +"input": "<span lang=crp>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'qu'", +"input": "<span lang=qu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bas'", +"input": "<span lang=bas>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'baq'", +"input": "<span lang=baq>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bad'", +"input": "<span lang=bad>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nep'", +"input": "<span lang=nep>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cre'", +"input": "<span lang=cre>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ban'", +"input": "<span lang=ban>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'x'", +"input": "<span lang=x>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bal'", +"input": "<span lang=bal>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bam'", +"input": "<span lang=bam>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bak'", +"input": "<span lang=bak>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'shn'", +"input": "<span lang=shn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bai'", +"input": "<span lang=bai>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arp'", +"input": "<span lang=arp>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'art'", +"input": "<span lang=art>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arw'", +"input": "<span lang=arw>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'qtz'", +"input": "<span lang=qtz>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ara'", +"input": "<span lang=ara>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arc'", +"input": "<span lang=arc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arg'", +"input": "<span lang=arg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sem'", +"input": "<span lang=sem>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sel'", +"input": "<span lang=sel>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nub'", +"input": "<span lang=nub>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arm'", +"input": "<span lang=arm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'btk'", +"input": "<span lang=btk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lus'", +"input": "<span lang=lus>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iku'", +"input": "<span lang=iku>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mus'", +"input": "<span lang=mus>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lua'", +"input": "<span lang=lua>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lub'", +"input": "<span lang=lub>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lug'", +"input": "<span lang=lug>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ira'", +"input": "<span lang=ira>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mun'", +"input": "<span lang=mun>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tur'", +"input": "<span lang=tur>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lun'", +"input": "<span lang=lun>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'luo'", +"input": "<span lang=luo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'men'", +"input": "<span lang=men>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wa'", +"input": "<span lang=wa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tso'", +"input": "<span lang=tso>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wo'", +"input": "<span lang=wo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jv'", +"input": "<span lang=jv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tut'", +"input": "<span lang=tut>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ind'", +"input": "<span lang=ind>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tuk'", +"input": "<span lang=tuk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tum'", +"input": "<span lang=tum>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ja'", +"input": "<span lang=ja>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cop'", +"input": "<span lang=cop>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cos'", +"input": "<span lang=cos>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cor'", +"input": "<span lang=cor>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ilo'", +"input": "<span lang=ilo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fiu'", +"input": "<span lang=fiu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gwi'", +"input": "<span lang=gwi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'und'", +"input": "<span lang=und>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gws'", +"input": "<span lang=gws>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tli'", +"input": "<span lang=tli>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tlh'", +"input": "<span lang=tlh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nno'", +"input": "<span lang=nno>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ch'", +"input": "<span lang=ch>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'co'", +"input": "<span lang=co>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ca'", +"input": "<span lang=ca>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'por'", +"input": "<span lang=por>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ce'", +"input": "<span lang=ce>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pon'", +"input": "<span lang=pon>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cy'", +"input": "<span lang=cy>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sah'", +"input": "<span lang=sah>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cs'", +"input": "<span lang=cs>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cr'", +"input": "<span lang=cr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ady'", +"input": "<span lang=ady>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cv'", +"input": "<span lang=cv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cu'", +"input": "<span lang=cu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ps'", +"input": "<span lang=ps>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fra'", +"input": "<span lang=fra>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dum'", +"input": "<span lang=dum>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pt'", +"input": "<span lang=pt>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'swa'", +"input": "<span lang=swa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dua'", +"input": "<span lang=dua>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fro'", +"input": "<span lang=fro>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yap'", +"input": "<span lang=yap>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'frm'", +"input": "<span lang=frm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tiv'", +"input": "<span lang=tiv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'frs'", +"input": "<span lang=frs>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'frr'", +"input": "<span lang=frr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yao'", +"input": "<span lang=yao>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pa'", +"input": "<span lang=pa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'xal'", +"input": "<span lang=xal>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fry'", +"input": "<span lang=fry>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pi'", +"input": "<span lang=pi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dut'", +"input": "<span lang=dut>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pl'", +"input": "<span lang=pl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gay'", +"input": "<span lang=gay>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oto'", +"input": "<span lang=oto>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sag'", +"input": "<span lang=sag>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hmn'", +"input": "<span lang=hmn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hmo'", +"input": "<span lang=hmo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'an'", +"input": "<span lang=an>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gaa'", +"input": "<span lang=gaa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fur'", +"input": "<span lang=fur>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mlg'", +"input": "<span lang=mlg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'slv'", +"input": "<span lang=slv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ain'", +"input": "<span lang=ain>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fil'", +"input": "<span lang=fil>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mlt'", +"input": "<span lang=mlt>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'slk'", +"input": "<span lang=slk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rar'", +"input": "<span lang=rar>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ful'", +"input": "<span lang=ful>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sla'", +"input": "<span lang=sla>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 've'", +"input": "<span lang=ve>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jpn'", +"input": "<span lang=jpn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vol'", +"input": "<span lang=vol>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vi'", +"input": "<span lang=vi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'is'", +"input": "<span lang=is>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kho'", +"input": "<span lang=kho>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iu'", +"input": "<span lang=iu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'it'", +"input": "<span lang=it>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vo'", +"input": "<span lang=vo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ii'", +"input": "<span lang=ii>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ay'", +"input": "<span lang=ay>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ik'", +"input": "<span lang=ik>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'io'", +"input": "<span lang=io>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kha'", +"input": "<span lang=kha>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ia'", +"input": "<span lang=ia>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ave'", +"input": "<span lang=ave>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jpr'", +"input": "<span lang=jpr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ie'", +"input": "<span lang=ie>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ava'", +"input": "<span lang=ava>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ig'", +"input": "<span lang=ig>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pap'", +"input": "<span lang=pap>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ewo'", +"input": "<span lang=ewo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pau'", +"input": "<span lang=pau>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ewe'", +"input": "<span lang=ewe>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'paa'", +"input": "<span lang=paa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'qaa'", +"input": "<span lang=qaa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pag'", +"input": "<span lang=pag>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sat'", +"input": "<span lang=sat>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pal'", +"input": "<span lang=pal>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pam'", +"input": "<span lang=pam>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pan'", +"input": "<span lang=pan>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'phi'", +"input": "<span lang=phi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nog'", +"input": "<span lang=nog>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'phn'", +"input": "<span lang=phn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kir'", +"input": "<span lang=kir>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nia'", +"input": "<span lang=nia>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dgr'", +"input": "<span lang=dgr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'syr'", +"input": "<span lang=syr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kin'", +"input": "<span lang=kin>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tup'", +"input": "<span lang=tup>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'niu'", +"input": "<span lang=niu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gsw'", +"input": "<span lang=gsw>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'epo'", +"input": "<span lang=epo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jbo'", +"input": "<span lang=jbo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mic'", +"input": "<span lang=mic>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tha'", +"input": "<span lang=tha>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sam'", +"input": "<span lang=sam>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hai'", +"input": "<span lang=hai>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gmh'", +"input": "<span lang=gmh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cus'", +"input": "<span lang=cus>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ell'", +"input": "<span lang=ell>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wen'", +"input": "<span lang=wen>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bnt'", +"input": "<span lang=bnt>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fre'", +"input": "<span lang=fre>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'elx'", +"input": "<span lang=elx>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ada'", +"input": "<span lang=ada>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nav'", +"input": "<span lang=nav>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hat'", +"input": "<span lang=hat>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hau'", +"input": "<span lang=hau>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'haw'", +"input": "<span lang=haw>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bin'", +"input": "<span lang=bin>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'amh'", +"input": "<span lang=amh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bik'", +"input": "<span lang=bik>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bih'", +"input": "<span lang=bih>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mos'", +"input": "<span lang=mos>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'moh'", +"input": "<span lang=moh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mon'", +"input": "<span lang=mon>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mol'", +"input": "<span lang=mol>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bis'", +"input": "<span lang=bis>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bla'", +"input": "<span lang=bla>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pol'", +"input": "<span lang=pol>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tib'", +"input": "<span lang=tib>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tvl'", +"input": "<span lang=tvl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tgk'", +"input": "<span lang=tgk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ijo'", +"input": "<span lang=ijo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'est'", +"input": "<span lang=est>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kmb'", +"input": "<span lang=kmb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ice'", +"input": "<span lang=ice>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'peo'", +"input": "<span lang=peo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tgl'", +"input": "<span lang=tgl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'umb'", +"input": "<span lang=umb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tmh'", +"input": "<span lang=tmh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fon'", +"input": "<span lang=fon>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hsb'", +"input": "<span lang=hsb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'be'", +"input": "<span lang=be>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bg'", +"input": "<span lang=bg>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'run'", +"input": "<span lang=run>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ba'", +"input": "<span lang=ba>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rum'", +"input": "<span lang=rum>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bm'", +"input": "<span lang=bm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bn'", +"input": "<span lang=bn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bo'", +"input": "<span lang=bo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bh'", +"input": "<span lang=bh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bi'", +"input": "<span lang=bi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'br'", +"input": "<span lang=br>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bs'", +"input": "<span lang=bs>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rus'", +"input": "<span lang=rus>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rup'", +"input": "<span lang=rup>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pli'", +"input": "<span lang=pli>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'om'", +"input": "<span lang=om>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oj'", +"input": "<span lang=oj>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ace'", +"input": "<span lang=ace>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ach'", +"input": "<span lang=ach>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oc'", +"input": "<span lang=oc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dzo'", +"input": "<span lang=dzo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kru'", +"input": "<span lang=kru>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'srr'", +"input": "<span lang=srr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ido'", +"input": "<span lang=ido>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'srp'", +"input": "<span lang=srp>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kro'", +"input": "<span lang=kro>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'krl'", +"input": "<span lang=krl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'krc'", +"input": "<span lang=krc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nds'", +"input": "<span lang=nds>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'os'", +"input": "<span lang=os>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'or'", +"input": "<span lang=or>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zul'", +"input": "<span lang=zul>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'twi'", +"input": "<span lang=twi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sog'", +"input": "<span lang=sog>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nso'", +"input": "<span lang=nso>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'swe'", +"input": "<span lang=swe>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'som'", +"input": "<span lang=som>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chm'", +"input": "<span lang=chm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'snd'", +"input": "<span lang=snd>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sot'", +"input": "<span lang=sot>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mkd'", +"input": "<span lang=mkd>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wak'", +"input": "<span lang=wak>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'her'", +"input": "<span lang=her>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lol'", +"input": "<span lang=lol>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mkh'", +"input": "<span lang=mkh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'heb'", +"input": "<span lang=heb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'loz'", +"input": "<span lang=loz>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gil'", +"input": "<span lang=gil>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'was'", +"input": "<span lang=was>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'war'", +"input": "<span lang=war>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hz'", +"input": "<span lang=hz>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hy'", +"input": "<span lang=hy>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sid'", +"input": "<span lang=sid>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hr'", +"input": "<span lang=hr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ht'", +"input": "<span lang=ht>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hu'", +"input": "<span lang=hu>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hi'", +"input": "<span lang=hi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ho'", +"input": "<span lang=ho>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bul'", +"input": "<span lang=bul>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wal'", +"input": "<span lang=wal>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bua'", +"input": "<span lang=bua>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bug'", +"input": "<span lang=bug>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'he'", +"input": "<span lang=he>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uz'", +"input": "<span lang=uz>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aze'", +"input": "<span lang=aze>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ur'", +"input": "<span lang=ur>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zha'", +"input": "<span lang=zha>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uk'", +"input": "<span lang=uk>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ug'", +"input": "<span lang=ug>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zho'", +"input": "<span lang=zho>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aa'", +"input": "<span lang=aa>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ab'", +"input": "<span lang=ab>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ae'", +"input": "<span lang=ae>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uig'", +"input": "<span lang=uig>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'af'", +"input": "<span lang=af>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ak'", +"input": "<span lang=ak>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'am'", +"input": "<span lang=am>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'myv'", +"input": "<span lang=myv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'khi'", +"input": "<span lang=khi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'as'", +"input": "<span lang=as>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ar'", +"input": "<span lang=ar>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'inh'", +"input": "<span lang=inh>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'khm'", +"input": "<span lang=khm>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'av'", +"input": "<span lang=av>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mya'", +"input": "<span lang=mya>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ine'", +"input": "<span lang=ine>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'az'", +"input": "<span lang=az>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ina'", +"input": "<span lang=ina>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'inc'", +"input": "<span lang=inc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nl'", +"input": "<span lang=nl>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nn'", +"input": "<span lang=nn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'no'", +"input": "<span lang=no>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'na'", +"input": "<span lang=na>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nb'", +"input": "<span lang=nb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nai'", +"input": "<span lang=nai>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nd'", +"input": "<span lang=nd>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ne'", +"input": "<span lang=ne>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tir'", +"input": "<span lang=tir>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ng'", +"input": "<span lang=ng>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ny'", +"input": "<span lang=ny>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nap'", +"input": "<span lang=nap>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gre'", +"input": "<span lang=gre>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'grb'", +"input": "<span lang=grb>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'grc'", +"input": "<span lang=grc>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nau'", +"input": "<span lang=nau>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'grn'", +"input": "<span lang=grn>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nr'", +"input": "<span lang=nr>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tig'", +"input": "<span lang=tig>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yor'", +"input": "<span lang=yor>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nv'", +"input": "<span lang=nv>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mri'", +"input": "<span lang=mri>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'may'", +"input": "<span lang=may>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zun'", +"input": "<span lang=zun>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ile'", +"input": "<span lang=ile>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sqi'", +"input": "<span lang=sqi>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gon'", +"input": "<span lang=gon>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cpe'", +"input": "<span lang=cpe>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cpf'", +"input": "<span lang=cpf>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cpp'", +"input": "<span lang=cpp>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'roh-foo'", +"input": "<span lang=roh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gv-foo'", +"input": "<span lang=gv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gu-foo'", +"input": "<span lang=gu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'scn-foo'", +"input": "<span lang=scn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rom-foo'", +"input": "<span lang=rom-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ron-foo'", +"input": "<span lang=ron-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'alg-foo'", +"input": "<span lang=alg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oss-foo'", +"input": "<span lang=oss-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ale-foo'", +"input": "<span lang=ale-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'alb-foo'", +"input": "<span lang=alb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sco-foo'", +"input": "<span lang=sco-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'scc-foo'", +"input": "<span lang=scc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mni-foo'", +"input": "<span lang=mni-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gd-foo'", +"input": "<span lang=gd-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'per-foo'", +"input": "<span lang=per-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ga-foo'", +"input": "<span lang=ga-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nwc-foo'", +"input": "<span lang=nwc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'osa-foo'", +"input": "<span lang=osa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gn-foo'", +"input": "<span lang=gn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'alt-foo'", +"input": "<span lang=alt-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gl-foo'", +"input": "<span lang=gl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'scr-foo'", +"input": "<span lang=scr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mwr-foo'", +"input": "<span lang=mwr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ty-foo'", +"input": "<span lang=ty-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tw-foo'", +"input": "<span lang=tw-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tt-foo'", +"input": "<span lang=tt-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tr-foo'", +"input": "<span lang=tr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ts-foo'", +"input": "<span lang=ts-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tn-foo'", +"input": "<span lang=tn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'to-foo'", +"input": "<span lang=to-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tl-foo'", +"input": "<span lang=tl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tk-foo'", +"input": "<span lang=tk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'th-foo'", +"input": "<span lang=th-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ti-foo'", +"input": "<span lang=ti-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ven-foo'", +"input": "<span lang=ven-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tg-foo'", +"input": "<span lang=tg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'te-foo'", +"input": "<span lang=te-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uga-foo'", +"input": "<span lang=uga-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ta-foo'", +"input": "<span lang=ta-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fas-foo'", +"input": "<span lang=fas-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fat-foo'", +"input": "<span lang=fat-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fan-foo'", +"input": "<span lang=fan-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fao-foo'", +"input": "<span lang=fao-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'got-foo'", +"input": "<span lang=got-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sme-foo'", +"input": "<span lang=sme-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'din-foo'", +"input": "<span lang=din-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hye-foo'", +"input": "<span lang=hye-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'guj-foo'", +"input": "<span lang=guj-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cmc-foo'", +"input": "<span lang=cmc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'srd-foo'", +"input": "<span lang=srd-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mdr-foo'", +"input": "<span lang=mdr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ml-foo'", +"input": "<span lang=ml-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'div-foo'", +"input": "<span lang=div-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zh-foo'", +"input": "<span lang=zh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tem-foo'", +"input": "<span lang=tem-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'xho-foo'", +"input": "<span lang=xho-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mno-foo'", +"input": "<span lang=mno-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'roa-foo'", +"input": "<span lang=roa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'za-foo'", +"input": "<span lang=za-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'deu-foo'", +"input": "<span lang=deu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mk-foo'", +"input": "<span lang=mk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nbl-foo'", +"input": "<span lang=nbl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zu-foo'", +"input": "<span lang=zu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ter-foo'", +"input": "<span lang=ter-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tet-foo'", +"input": "<span lang=tet-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mnc-foo'", +"input": "<span lang=mnc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sun-foo'", +"input": "<span lang=sun-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'abk-foo'", +"input": "<span lang=abk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'suk-foo'", +"input": "<span lang=suk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kur-foo'", +"input": "<span lang=kur-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kum-foo'", +"input": "<span lang=kum-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'slo-foo'", +"input": "<span lang=slo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sus-foo'", +"input": "<span lang=sus-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'new-foo'", +"input": "<span lang=new-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kua-foo'", +"input": "<span lang=kua-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sux-foo'", +"input": "<span lang=sux-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'den-foo'", +"input": "<span lang=den-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mr-foo'", +"input": "<span lang=mr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mul-foo'", +"input": "<span lang=mul-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lez-foo'", +"input": "<span lang=lez-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gla-foo'", +"input": "<span lang=gla-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bos-foo'", +"input": "<span lang=bos-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gle-foo'", +"input": "<span lang=gle-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eka-foo'", +"input": "<span lang=eka-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'glg-foo'", +"input": "<span lang=glg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'akk-foo'", +"input": "<span lang=akk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dra-foo'", +"input": "<span lang=dra-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aka-foo'", +"input": "<span lang=aka-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bod-foo'", +"input": "<span lang=bod-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'glv-foo'", +"input": "<span lang=glv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jrb-foo'", +"input": "<span lang=jrb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vie-foo'", +"input": "<span lang=vie-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ipk-foo'", +"input": "<span lang=ipk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uzb-foo'", +"input": "<span lang=uzb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sgn-foo'", +"input": "<span lang=sgn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sga-foo'", +"input": "<span lang=sga-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bre-foo'", +"input": "<span lang=bre-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'apa-foo'", +"input": "<span lang=apa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bra-foo'", +"input": "<span lang=bra-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aym-foo'", +"input": "<span lang=aym-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cha-foo'", +"input": "<span lang=cha-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chb-foo'", +"input": "<span lang=chb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'che-foo'", +"input": "<span lang=che-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chg-foo'", +"input": "<span lang=chg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chi-foo'", +"input": "<span lang=chi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chk-foo'", +"input": "<span lang=chk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aus-foo'", +"input": "<span lang=aus-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chn-foo'", +"input": "<span lang=chn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cho-foo'", +"input": "<span lang=cho-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chp-foo'", +"input": "<span lang=chp-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chr-foo'", +"input": "<span lang=chr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chu-foo'", +"input": "<span lang=chu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chv-foo'", +"input": "<span lang=chv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chy-foo'", +"input": "<span lang=chy-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'msa-foo'", +"input": "<span lang=msa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iii-foo'", +"input": "<span lang=iii-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vot-foo'", +"input": "<span lang=vot-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mg-foo'", +"input": "<span lang=mg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ndo-foo'", +"input": "<span lang=ndo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ibo-foo'", +"input": "<span lang=ibo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'car-foo'", +"input": "<span lang=car-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mo-foo'", +"input": "<span lang=mo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mn-foo'", +"input": "<span lang=mn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mi-foo'", +"input": "<span lang=mi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mh-foo'", +"input": "<span lang=mh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cau-foo'", +"input": "<span lang=cau-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cat-foo'", +"input": "<span lang=cat-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bur-foo'", +"input": "<span lang=bur-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mt-foo'", +"input": "<span lang=mt-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cai-foo'", +"input": "<span lang=cai-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'del-foo'", +"input": "<span lang=del-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ms-foo'", +"input": "<span lang=ms-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'byn-foo'", +"input": "<span lang=byn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mwl-foo'", +"input": "<span lang=mwl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'my-foo'", +"input": "<span lang=my-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cad-foo'", +"input": "<span lang=cad-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tat-foo'", +"input": "<span lang=tat-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nde-foo'", +"input": "<span lang=nde-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tam-foo'", +"input": "<span lang=tam-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'spa-foo'", +"input": "<span lang=spa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tah-foo'", +"input": "<span lang=tah-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tai-foo'", +"input": "<span lang=tai-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cze-foo'", +"input": "<span lang=cze-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'afh-foo'", +"input": "<span lang=afh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eng-foo'", +"input": "<span lang=eng-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'afa-foo'", +"input": "<span lang=afa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'id-foo'", +"input": "<span lang=id-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nyn-foo'", +"input": "<span lang=nyn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nyo-foo'", +"input": "<span lang=nyo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gez-foo'", +"input": "<span lang=gez-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nya-foo'", +"input": "<span lang=nya-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sio-foo'", +"input": "<span lang=sio-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sin-foo'", +"input": "<span lang=sin-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'afr-foo'", +"input": "<span lang=afr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'map-foo'", +"input": "<span lang=map-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fr-foo'", +"input": "<span lang=fr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lao-foo'", +"input": "<span lang=lao-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lah-foo'", +"input": "<span lang=lah-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nym-foo'", +"input": "<span lang=nym-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sna-foo'", +"input": "<span lang=sna-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lad-foo'", +"input": "<span lang=lad-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fy-foo'", +"input": "<span lang=fy-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'snk-foo'", +"input": "<span lang=snk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fa-foo'", +"input": "<span lang=fa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mac-foo'", +"input": "<span lang=mac-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mad-foo'", +"input": "<span lang=mad-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ff-foo'", +"input": "<span lang=ff-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lat-foo'", +"input": "<span lang=lat-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fi-foo'", +"input": "<span lang=fi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fj-foo'", +"input": "<span lang=fj-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mal-foo'", +"input": "<span lang=mal-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mao-foo'", +"input": "<span lang=mao-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fo-foo'", +"input": "<span lang=fo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mak-foo'", +"input": "<span lang=mak-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'egy-foo'", +"input": "<span lang=egy-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'znd-foo'", +"input": "<span lang=znd-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ss-foo'", +"input": "<span lang=ss-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sr-foo'", +"input": "<span lang=sr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sq-foo'", +"input": "<span lang=sq-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sit-foo'", +"input": "<span lang=sit-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sw-foo'", +"input": "<span lang=sw-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sv-foo'", +"input": "<span lang=sv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'su-foo'", +"input": "<span lang=su-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'st-foo'", +"input": "<span lang=st-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sk-foo'", +"input": "<span lang=sk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'si-foo'", +"input": "<span lang=si-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sh-foo'", +"input": "<span lang=sh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'so-foo'", +"input": "<span lang=so-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sn-foo'", +"input": "<span lang=sn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sm-foo'", +"input": "<span lang=sm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sl-foo'", +"input": "<span lang=sl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sc-foo'", +"input": "<span lang=sc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sa-foo'", +"input": "<span lang=sa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sg-foo'", +"input": "<span lang=sg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'se-foo'", +"input": "<span lang=se-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sd-foo'", +"input": "<span lang=sd-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zen-foo'", +"input": "<span lang=zen-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kbd-foo'", +"input": "<span lang=kbd-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'enm-foo'", +"input": "<span lang=enm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iro-foo'", +"input": "<span lang=iro-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vai-foo'", +"input": "<span lang=vai-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'csb-foo'", +"input": "<span lang=csb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tsn-foo'", +"input": "<span lang=tsn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lg-foo'", +"input": "<span lang=lg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lb-foo'", +"input": "<span lang=lb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'la-foo'", +"input": "<span lang=la-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ln-foo'", +"input": "<span lang=ln-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lo-foo'", +"input": "<span lang=lo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'li-foo'", +"input": "<span lang=li-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lv-foo'", +"input": "<span lang=lv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lt-foo'", +"input": "<span lang=lt-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lu-foo'", +"input": "<span lang=lu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hin-foo'", +"input": "<span lang=hin-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fij-foo'", +"input": "<span lang=fij-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fin-foo'", +"input": "<span lang=fin-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eus-foo'", +"input": "<span lang=eus-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yi-foo'", +"input": "<span lang=yi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'non-foo'", +"input": "<span lang=non-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ceb-foo'", +"input": "<span lang=ceb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yo-foo'", +"input": "<span lang=yo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dan-foo'", +"input": "<span lang=dan-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cel-foo'", +"input": "<span lang=cel-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bat-foo'", +"input": "<span lang=bat-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nob-foo'", +"input": "<span lang=nob-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dak-foo'", +"input": "<span lang=dak-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ces-foo'", +"input": "<span lang=ces-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dar-foo'", +"input": "<span lang=dar-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'son-foo'", +"input": "<span lang=son-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'day-foo'", +"input": "<span lang=day-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nor-foo'", +"input": "<span lang=nor-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gba-foo'", +"input": "<span lang=gba-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ssa-foo'", +"input": "<span lang=ssa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hil-foo'", +"input": "<span lang=hil-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kpe-foo'", +"input": "<span lang=kpe-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'man-foo'", +"input": "<span lang=man-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wel-foo'", +"input": "<span lang=wel-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'el-foo'", +"input": "<span lang=el-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eo-foo'", +"input": "<span lang=eo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'en-foo'", +"input": "<span lang=en-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lam-foo'", +"input": "<span lang=lam-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ee-foo'", +"input": "<span lang=ee-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tpi-foo'", +"input": "<span lang=tpi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mdf-foo'", +"input": "<span lang=mdf-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mas-foo'", +"input": "<span lang=mas-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mar-foo'", +"input": "<span lang=mar-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'eu-foo'", +"input": "<span lang=eu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'et-foo'", +"input": "<span lang=et-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'es-foo'", +"input": "<span lang=es-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ru-foo'", +"input": "<span lang=ru-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rw-foo'", +"input": "<span lang=rw-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'goh-foo'", +"input": "<span lang=goh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sms-foo'", +"input": "<span lang=sms-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'smo-foo'", +"input": "<span lang=smo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'smn-foo'", +"input": "<span lang=smn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'smj-foo'", +"input": "<span lang=smj-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'smi-foo'", +"input": "<span lang=smi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nic-foo'", +"input": "<span lang=nic-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rm-foo'", +"input": "<span lang=rm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rn-foo'", +"input": "<span lang=rn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ro-foo'", +"input": "<span lang=ro-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dsb-foo'", +"input": "<span lang=dsb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sma-foo'", +"input": "<span lang=sma-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gor-foo'", +"input": "<span lang=gor-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ast-foo'", +"input": "<span lang=ast-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'orm-foo'", +"input": "<span lang=orm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'que-foo'", +"input": "<span lang=que-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ori-foo'", +"input": "<span lang=ori-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'crh-foo'", +"input": "<span lang=crh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'asm-foo'", +"input": "<span lang=asm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pus-foo'", +"input": "<span lang=pus-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kik-foo'", +"input": "<span lang=kik-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ltz-foo'", +"input": "<span lang=ltz-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ath-foo'", +"input": "<span lang=ath-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wln-foo'", +"input": "<span lang=wln-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'isl-foo'", +"input": "<span lang=isl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'xh-foo'", +"input": "<span lang=xh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mag-foo'", +"input": "<span lang=mag-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mai-foo'", +"input": "<span lang=mai-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'xx-foo'", +"input": "<span lang=xx-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mah-foo'", +"input": "<span lang=mah-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tel-foo'", +"input": "<span lang=tel-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lav-foo'", +"input": "<span lang=lav-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zap-foo'", +"input": "<span lang=zap-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yid-foo'", +"input": "<span lang=yid-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kok-foo'", +"input": "<span lang=kok-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kom-foo'", +"input": "<span lang=kom-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kon-foo'", +"input": "<span lang=kon-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ukr-foo'", +"input": "<span lang=ukr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ton-foo'", +"input": "<span lang=ton-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kos-foo'", +"input": "<span lang=kos-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kor-foo'", +"input": "<span lang=kor-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tog-foo'", +"input": "<span lang=tog-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hun-foo'", +"input": "<span lang=hun-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hup-foo'", +"input": "<span lang=hup-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cym-foo'", +"input": "<span lang=cym-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'udm-foo'", +"input": "<span lang=udm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bej-foo'", +"input": "<span lang=bej-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ben-foo'", +"input": "<span lang=ben-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bel-foo'", +"input": "<span lang=bel-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bem-foo'", +"input": "<span lang=bem-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tsi-foo'", +"input": "<span lang=tsi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aar-foo'", +"input": "<span lang=aar-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ber-foo'", +"input": "<span lang=ber-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nzi-foo'", +"input": "<span lang=nzi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sai-foo'", +"input": "<span lang=sai-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ang-foo'", +"input": "<span lang=ang-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pra-foo'", +"input": "<span lang=pra-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'san-foo'", +"input": "<span lang=san-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bho-foo'", +"input": "<span lang=bho-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sal-foo'", +"input": "<span lang=sal-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pro-foo'", +"input": "<span lang=pro-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'raj-foo'", +"input": "<span lang=raj-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sad-foo'", +"input": "<span lang=sad-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'anp-foo'", +"input": "<span lang=anp-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rap-foo'", +"input": "<span lang=rap-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sas-foo'", +"input": "<span lang=sas-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iba-foo'", +"input": "<span lang=iba-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'myn-foo'", +"input": "<span lang=myn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'min-foo'", +"input": "<span lang=min-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lim-foo'", +"input": "<span lang=lim-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lin-foo'", +"input": "<span lang=lin-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nah-foo'", +"input": "<span lang=nah-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lit-foo'", +"input": "<span lang=lit-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'efi-foo'", +"input": "<span lang=efi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'srn-foo'", +"input": "<span lang=srn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arn-foo'", +"input": "<span lang=arn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ypk-foo'", +"input": "<span lang=ypk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mis-foo'", +"input": "<span lang=mis-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kac-foo'", +"input": "<span lang=kac-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kab-foo'", +"input": "<span lang=kab-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kaa-foo'", +"input": "<span lang=kaa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kan-foo'", +"input": "<span lang=kan-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kam-foo'", +"input": "<span lang=kam-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kal-foo'", +"input": "<span lang=kal-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kas-foo'", +"input": "<span lang=kas-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kar-foo'", +"input": "<span lang=kar-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kaw-foo'", +"input": "<span lang=kaw-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kau-foo'", +"input": "<span lang=kau-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kat-foo'", +"input": "<span lang=kat-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kaz-foo'", +"input": "<span lang=kaz-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tyv-foo'", +"input": "<span lang=tyv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'awa-foo'", +"input": "<span lang=awa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'urd-foo'", +"input": "<span lang=urd-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ka-foo'", +"input": "<span lang=ka-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'doi-foo'", +"input": "<span lang=doi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kg-foo'", +"input": "<span lang=kg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kk-foo'", +"input": "<span lang=kk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kj-foo'", +"input": "<span lang=kj-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ki-foo'", +"input": "<span lang=ki-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ko-foo'", +"input": "<span lang=ko-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kn-foo'", +"input": "<span lang=kn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'km-foo'", +"input": "<span lang=km-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kl-foo'", +"input": "<span lang=kl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ks-foo'", +"input": "<span lang=ks-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kr-foo'", +"input": "<span lang=kr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kw-foo'", +"input": "<span lang=kw-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kv-foo'", +"input": "<span lang=kv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ku-foo'", +"input": "<span lang=ku-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ky-foo'", +"input": "<span lang=ky-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ota-foo'", +"input": "<span lang=ota-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kut-foo'", +"input": "<span lang=kut-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tkl-foo'", +"input": "<span lang=tkl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nld-foo'", +"input": "<span lang=nld-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oji-foo'", +"input": "<span lang=oji-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oci-foo'", +"input": "<span lang=oci-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ha-foo'", +"input": "<span lang=ha-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wol-foo'", +"input": "<span lang=wol-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jav-foo'", +"input": "<span lang=jav-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hrv-foo'", +"input": "<span lang=hrv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ger-foo'", +"input": "<span lang=ger-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mga-foo'", +"input": "<span lang=mga-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hit-foo'", +"input": "<span lang=hit-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dyu-foo'", +"input": "<span lang=dyu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ssw-foo'", +"input": "<span lang=ssw-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'de-foo'", +"input": "<span lang=de-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'da-foo'", +"input": "<span lang=da-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dz-foo'", +"input": "<span lang=dz-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lui-foo'", +"input": "<span lang=lui-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dv-foo'", +"input": "<span lang=dv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ita-foo'", +"input": "<span lang=ita-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'geo-foo'", +"input": "<span lang=geo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'him-foo'", +"input": "<span lang=him-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gem-foo'", +"input": "<span lang=gem-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'crp-foo'", +"input": "<span lang=crp-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'qu-foo'", +"input": "<span lang=qu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bas-foo'", +"input": "<span lang=bas-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'baq-foo'", +"input": "<span lang=baq-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bad-foo'", +"input": "<span lang=bad-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nep-foo'", +"input": "<span lang=nep-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cre-foo'", +"input": "<span lang=cre-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ban-foo'", +"input": "<span lang=ban-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'x-foo'", +"input": "<span lang=x-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bal-foo'", +"input": "<span lang=bal-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bam-foo'", +"input": "<span lang=bam-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bak-foo'", +"input": "<span lang=bak-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'shn-foo'", +"input": "<span lang=shn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bai-foo'", +"input": "<span lang=bai-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arp-foo'", +"input": "<span lang=arp-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'art-foo'", +"input": "<span lang=art-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arw-foo'", +"input": "<span lang=arw-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'qtz-foo'", +"input": "<span lang=qtz-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ara-foo'", +"input": "<span lang=ara-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arc-foo'", +"input": "<span lang=arc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arg-foo'", +"input": "<span lang=arg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sem-foo'", +"input": "<span lang=sem-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sel-foo'", +"input": "<span lang=sel-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nub-foo'", +"input": "<span lang=nub-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'arm-foo'", +"input": "<span lang=arm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'btk-foo'", +"input": "<span lang=btk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lus-foo'", +"input": "<span lang=lus-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iku-foo'", +"input": "<span lang=iku-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mus-foo'", +"input": "<span lang=mus-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lua-foo'", +"input": "<span lang=lua-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lub-foo'", +"input": "<span lang=lub-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lug-foo'", +"input": "<span lang=lug-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ira-foo'", +"input": "<span lang=ira-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mun-foo'", +"input": "<span lang=mun-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tur-foo'", +"input": "<span lang=tur-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lun-foo'", +"input": "<span lang=lun-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'luo-foo'", +"input": "<span lang=luo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'men-foo'", +"input": "<span lang=men-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wa-foo'", +"input": "<span lang=wa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tso-foo'", +"input": "<span lang=tso-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wo-foo'", +"input": "<span lang=wo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jv-foo'", +"input": "<span lang=jv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tut-foo'", +"input": "<span lang=tut-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ind-foo'", +"input": "<span lang=ind-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tuk-foo'", +"input": "<span lang=tuk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tum-foo'", +"input": "<span lang=tum-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ja-foo'", +"input": "<span lang=ja-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cop-foo'", +"input": "<span lang=cop-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cos-foo'", +"input": "<span lang=cos-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cor-foo'", +"input": "<span lang=cor-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ilo-foo'", +"input": "<span lang=ilo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fiu-foo'", +"input": "<span lang=fiu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gwi-foo'", +"input": "<span lang=gwi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'und-foo'", +"input": "<span lang=und-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gws-foo'", +"input": "<span lang=gws-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tli-foo'", +"input": "<span lang=tli-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tlh-foo'", +"input": "<span lang=tlh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nno-foo'", +"input": "<span lang=nno-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ch-foo'", +"input": "<span lang=ch-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'co-foo'", +"input": "<span lang=co-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ca-foo'", +"input": "<span lang=ca-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'por-foo'", +"input": "<span lang=por-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ce-foo'", +"input": "<span lang=ce-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pon-foo'", +"input": "<span lang=pon-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cy-foo'", +"input": "<span lang=cy-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sah-foo'", +"input": "<span lang=sah-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cs-foo'", +"input": "<span lang=cs-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cr-foo'", +"input": "<span lang=cr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ady-foo'", +"input": "<span lang=ady-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cv-foo'", +"input": "<span lang=cv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cu-foo'", +"input": "<span lang=cu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ps-foo'", +"input": "<span lang=ps-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fra-foo'", +"input": "<span lang=fra-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dum-foo'", +"input": "<span lang=dum-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pt-foo'", +"input": "<span lang=pt-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'swa-foo'", +"input": "<span lang=swa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dua-foo'", +"input": "<span lang=dua-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fro-foo'", +"input": "<span lang=fro-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yap-foo'", +"input": "<span lang=yap-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'frm-foo'", +"input": "<span lang=frm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tiv-foo'", +"input": "<span lang=tiv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'frs-foo'", +"input": "<span lang=frs-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'frr-foo'", +"input": "<span lang=frr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yao-foo'", +"input": "<span lang=yao-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pa-foo'", +"input": "<span lang=pa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'xal-foo'", +"input": "<span lang=xal-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fry-foo'", +"input": "<span lang=fry-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pi-foo'", +"input": "<span lang=pi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dut-foo'", +"input": "<span lang=dut-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pl-foo'", +"input": "<span lang=pl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gay-foo'", +"input": "<span lang=gay-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oto-foo'", +"input": "<span lang=oto-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sag-foo'", +"input": "<span lang=sag-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hmn-foo'", +"input": "<span lang=hmn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hmo-foo'", +"input": "<span lang=hmo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'an-foo'", +"input": "<span lang=an-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gaa-foo'", +"input": "<span lang=gaa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fur-foo'", +"input": "<span lang=fur-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mlg-foo'", +"input": "<span lang=mlg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'slv-foo'", +"input": "<span lang=slv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ain-foo'", +"input": "<span lang=ain-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fil-foo'", +"input": "<span lang=fil-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mlt-foo'", +"input": "<span lang=mlt-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'slk-foo'", +"input": "<span lang=slk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rar-foo'", +"input": "<span lang=rar-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ful-foo'", +"input": "<span lang=ful-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sla-foo'", +"input": "<span lang=sla-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 've-foo'", +"input": "<span lang=ve-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jpn-foo'", +"input": "<span lang=jpn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vol-foo'", +"input": "<span lang=vol-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vi-foo'", +"input": "<span lang=vi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'is-foo'", +"input": "<span lang=is-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kho-foo'", +"input": "<span lang=kho-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'iu-foo'", +"input": "<span lang=iu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'it-foo'", +"input": "<span lang=it-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'vo-foo'", +"input": "<span lang=vo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ii-foo'", +"input": "<span lang=ii-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ay-foo'", +"input": "<span lang=ay-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ik-foo'", +"input": "<span lang=ik-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'io-foo'", +"input": "<span lang=io-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kha-foo'", +"input": "<span lang=kha-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ia-foo'", +"input": "<span lang=ia-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ave-foo'", +"input": "<span lang=ave-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jpr-foo'", +"input": "<span lang=jpr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ie-foo'", +"input": "<span lang=ie-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ava-foo'", +"input": "<span lang=ava-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ig-foo'", +"input": "<span lang=ig-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pap-foo'", +"input": "<span lang=pap-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ewo-foo'", +"input": "<span lang=ewo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pau-foo'", +"input": "<span lang=pau-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ewe-foo'", +"input": "<span lang=ewe-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'paa-foo'", +"input": "<span lang=paa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'qaa-foo'", +"input": "<span lang=qaa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pag-foo'", +"input": "<span lang=pag-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sat-foo'", +"input": "<span lang=sat-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pal-foo'", +"input": "<span lang=pal-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pam-foo'", +"input": "<span lang=pam-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pan-foo'", +"input": "<span lang=pan-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'phi-foo'", +"input": "<span lang=phi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nog-foo'", +"input": "<span lang=nog-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'phn-foo'", +"input": "<span lang=phn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kir-foo'", +"input": "<span lang=kir-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nia-foo'", +"input": "<span lang=nia-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dgr-foo'", +"input": "<span lang=dgr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'syr-foo'", +"input": "<span lang=syr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kin-foo'", +"input": "<span lang=kin-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tup-foo'", +"input": "<span lang=tup-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'niu-foo'", +"input": "<span lang=niu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gsw-foo'", +"input": "<span lang=gsw-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'epo-foo'", +"input": "<span lang=epo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'jbo-foo'", +"input": "<span lang=jbo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mic-foo'", +"input": "<span lang=mic-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tha-foo'", +"input": "<span lang=tha-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sam-foo'", +"input": "<span lang=sam-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hai-foo'", +"input": "<span lang=hai-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gmh-foo'", +"input": "<span lang=gmh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cus-foo'", +"input": "<span lang=cus-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ell-foo'", +"input": "<span lang=ell-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wen-foo'", +"input": "<span lang=wen-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bnt-foo'", +"input": "<span lang=bnt-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fre-foo'", +"input": "<span lang=fre-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'elx-foo'", +"input": "<span lang=elx-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ada-foo'", +"input": "<span lang=ada-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nav-foo'", +"input": "<span lang=nav-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hat-foo'", +"input": "<span lang=hat-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hau-foo'", +"input": "<span lang=hau-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'haw-foo'", +"input": "<span lang=haw-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bin-foo'", +"input": "<span lang=bin-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'amh-foo'", +"input": "<span lang=amh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bik-foo'", +"input": "<span lang=bik-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bih-foo'", +"input": "<span lang=bih-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mos-foo'", +"input": "<span lang=mos-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'moh-foo'", +"input": "<span lang=moh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mon-foo'", +"input": "<span lang=mon-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mol-foo'", +"input": "<span lang=mol-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bis-foo'", +"input": "<span lang=bis-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bla-foo'", +"input": "<span lang=bla-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pol-foo'", +"input": "<span lang=pol-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tib-foo'", +"input": "<span lang=tib-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tvl-foo'", +"input": "<span lang=tvl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tgk-foo'", +"input": "<span lang=tgk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ijo-foo'", +"input": "<span lang=ijo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'est-foo'", +"input": "<span lang=est-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kmb-foo'", +"input": "<span lang=kmb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ice-foo'", +"input": "<span lang=ice-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'peo-foo'", +"input": "<span lang=peo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tgl-foo'", +"input": "<span lang=tgl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'umb-foo'", +"input": "<span lang=umb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tmh-foo'", +"input": "<span lang=tmh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'fon-foo'", +"input": "<span lang=fon-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hsb-foo'", +"input": "<span lang=hsb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'be-foo'", +"input": "<span lang=be-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bg-foo'", +"input": "<span lang=bg-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'run-foo'", +"input": "<span lang=run-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ba-foo'", +"input": "<span lang=ba-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rum-foo'", +"input": "<span lang=rum-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bm-foo'", +"input": "<span lang=bm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bn-foo'", +"input": "<span lang=bn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bo-foo'", +"input": "<span lang=bo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bh-foo'", +"input": "<span lang=bh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bi-foo'", +"input": "<span lang=bi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'br-foo'", +"input": "<span lang=br-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bs-foo'", +"input": "<span lang=bs-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rus-foo'", +"input": "<span lang=rus-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'rup-foo'", +"input": "<span lang=rup-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'pli-foo'", +"input": "<span lang=pli-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'om-foo'", +"input": "<span lang=om-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oj-foo'", +"input": "<span lang=oj-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ace-foo'", +"input": "<span lang=ace-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ach-foo'", +"input": "<span lang=ach-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'oc-foo'", +"input": "<span lang=oc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'dzo-foo'", +"input": "<span lang=dzo-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kru-foo'", +"input": "<span lang=kru-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'srr-foo'", +"input": "<span lang=srr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ido-foo'", +"input": "<span lang=ido-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'srp-foo'", +"input": "<span lang=srp-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'kro-foo'", +"input": "<span lang=kro-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'krl-foo'", +"input": "<span lang=krl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'krc-foo'", +"input": "<span lang=krc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nds-foo'", +"input": "<span lang=nds-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'os-foo'", +"input": "<span lang=os-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'or-foo'", +"input": "<span lang=or-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zul-foo'", +"input": "<span lang=zul-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'twi-foo'", +"input": "<span lang=twi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sog-foo'", +"input": "<span lang=sog-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nso-foo'", +"input": "<span lang=nso-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'swe-foo'", +"input": "<span lang=swe-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'som-foo'", +"input": "<span lang=som-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'chm-foo'", +"input": "<span lang=chm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'snd-foo'", +"input": "<span lang=snd-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sot-foo'", +"input": "<span lang=sot-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mkd-foo'", +"input": "<span lang=mkd-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wak-foo'", +"input": "<span lang=wak-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'her-foo'", +"input": "<span lang=her-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'lol-foo'", +"input": "<span lang=lol-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mkh-foo'", +"input": "<span lang=mkh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'heb-foo'", +"input": "<span lang=heb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'loz-foo'", +"input": "<span lang=loz-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gil-foo'", +"input": "<span lang=gil-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'was-foo'", +"input": "<span lang=was-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'war-foo'", +"input": "<span lang=war-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hz-foo'", +"input": "<span lang=hz-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hy-foo'", +"input": "<span lang=hy-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sid-foo'", +"input": "<span lang=sid-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hr-foo'", +"input": "<span lang=hr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ht-foo'", +"input": "<span lang=ht-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hu-foo'", +"input": "<span lang=hu-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'hi-foo'", +"input": "<span lang=hi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ho-foo'", +"input": "<span lang=ho-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bul-foo'", +"input": "<span lang=bul-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'wal-foo'", +"input": "<span lang=wal-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bua-foo'", +"input": "<span lang=bua-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'bug-foo'", +"input": "<span lang=bug-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'he-foo'", +"input": "<span lang=he-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uz-foo'", +"input": "<span lang=uz-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aze-foo'", +"input": "<span lang=aze-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ur-foo'", +"input": "<span lang=ur-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zha-foo'", +"input": "<span lang=zha-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uk-foo'", +"input": "<span lang=uk-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ug-foo'", +"input": "<span lang=ug-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zho-foo'", +"input": "<span lang=zho-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'aa-foo'", +"input": "<span lang=aa-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ab-foo'", +"input": "<span lang=ab-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ae-foo'", +"input": "<span lang=ae-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'uig-foo'", +"input": "<span lang=uig-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'af-foo'", +"input": "<span lang=af-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ak-foo'", +"input": "<span lang=ak-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'am-foo'", +"input": "<span lang=am-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'myv-foo'", +"input": "<span lang=myv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'khi-foo'", +"input": "<span lang=khi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'as-foo'", +"input": "<span lang=as-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ar-foo'", +"input": "<span lang=ar-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'inh-foo'", +"input": "<span lang=inh-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'khm-foo'", +"input": "<span lang=khm-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'av-foo'", +"input": "<span lang=av-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mya-foo'", +"input": "<span lang=mya-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ine-foo'", +"input": "<span lang=ine-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'az-foo'", +"input": "<span lang=az-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ina-foo'", +"input": "<span lang=ina-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'inc-foo'", +"input": "<span lang=inc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nl-foo'", +"input": "<span lang=nl-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nn-foo'", +"input": "<span lang=nn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'no-foo'", +"input": "<span lang=no-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'na-foo'", +"input": "<span lang=na-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nb-foo'", +"input": "<span lang=nb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nai-foo'", +"input": "<span lang=nai-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nd-foo'", +"input": "<span lang=nd-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ne-foo'", +"input": "<span lang=ne-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tir-foo'", +"input": "<span lang=tir-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ng-foo'", +"input": "<span lang=ng-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ny-foo'", +"input": "<span lang=ny-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nap-foo'", +"input": "<span lang=nap-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gre-foo'", +"input": "<span lang=gre-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'grb-foo'", +"input": "<span lang=grb-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'grc-foo'", +"input": "<span lang=grc-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nau-foo'", +"input": "<span lang=nau-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'grn-foo'", +"input": "<span lang=grn-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nr-foo'", +"input": "<span lang=nr-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'tig-foo'", +"input": "<span lang=tig-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'yor-foo'", +"input": "<span lang=yor-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'nv-foo'", +"input": "<span lang=nv-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'mri-foo'", +"input": "<span lang=mri-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'may-foo'", +"input": "<span lang=may-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'zun-foo'", +"input": "<span lang=zun-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'ile-foo'", +"input": "<span lang=ile-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'sqi-foo'", +"input": "<span lang=sqi-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'gon-foo'", +"input": "<span lang=gon-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cpe-foo'", +"input": "<span lang=cpe-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cpf-foo'", +"input": "<span lang=cpf-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'cpp-foo'", +"input": "<span lang=cpp-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "invalid lang attribute 'foo'", +"input": "<span lang=foo>", +"fail-unless": "invalid-lang-code"}, + +{"description": "valid lang attribute 'EN'", +"input": "<span lang=EN>", +"fail-if": "invalid-lang-code"}, + +{"description": "valid lang attribute 'EN-foo'", +"input": "<span lang=EN-foo>", +"fail-if": "invalid-lang-code"}, + +{"description": "lang attribute can be blank", +"input": "<span lang>", +"fail-if": "invalid-lang-code"}, + +{"description": "lang attribute can be blank (with quotes)", +"input": "<span lang=''>", +"fail-if": "invalid-lang-code"}, + +{"description": "lang attribute can not be just space characters", +"input": "<span lang=' '>", +"fail-unless": "invalid-lang-code"}, + +{"description": "lang attribute can not contain leading spaces", +"input": "<span lang=' en'>", +"fail-unless": "invalid-lang-code"}, + +{"description": "lang attribute can not contain trailing spaces", +"input": "<span lang='en '>", +"fail-unless": "invalid-lang-code"} + +]}
\ No newline at end of file diff --git a/test/data/validator/li-value-attribute.test b/test/data/validator/li-value-attribute.test new file mode 100755 index 0000000..9ef9dcc --- /dev/null +++ b/test/data/validator/li-value-attribute.test @@ -0,0 +1,7 @@ +{"tests": [ + +{"description": "invalid li value attribute value due to leading junk", +"input": "<li value=a1>", +"fail-unless": "invalid-integer-value"} + +]}
\ No newline at end of file diff --git a/test/data/validator/link-href-attribute.test b/test/data/validator/link-href-attribute.test new file mode 100755 index 0000000..950c378 --- /dev/null +++ b/test/data/validator/link-href-attribute.test @@ -0,0 +1,7 @@ +{"tests": [ + +{"description": "link href contains invalid URI due to space in domain", +"input": "<link href='http://www.example. com/'", +"fail-unless": "invalid-uri-char"} + +]}
\ No newline at end of file diff --git a/test/data/validator/link-hreflang-attribute.test b/test/data/validator/link-hreflang-attribute.test new file mode 100755 index 0000000..de39d4d --- /dev/null +++ b/test/data/validator/link-hreflang-attribute.test @@ -0,0 +1,7 @@ +{"tests": [ + +{"description": "invalid lang attribute 'foo'", +"input": "<link hreflang=foo>", +"fail-unless": "invalid-lang-code"} + +]}
\ No newline at end of file diff --git a/test/data/validator/link-rel-attribute.test b/test/data/validator/link-rel-attribute.test new file mode 100755 index 0000000..a436751 --- /dev/null +++ b/test/data/validator/link-rel-attribute.test @@ -0,0 +1,271 @@ +{"tests": [ + +{"description": "invalid link rel value 'foo'", +"input": "<link rel=foo>", +"fail-unless": "invalid-rel"}, + +{"description": "valid link rel value 'alternate stylesheet'", +"input": "<link rel='alternate stylesheet'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading space", +"input": "<link rel=' stylesheet'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with trailing space", +"input": "<link rel='stylesheet '>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading and trailing space", +"input": "<link rel=' stylesheet '>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading tab", +"input": "<link rel='\tstylesheet'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with trailing tab", +"input": "<link rel='stylesheet\t'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading and trailing tab", +"input": "<link rel='\tstylesheet\t'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading LF", +"input": "<link rel='\nstylesheet'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with trailing LF", +"input": "<link rel='stylesheet\n'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading and trailing LF", +"input": "<link rel='\nstylesheet\n'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading LT", +"input": "<link rel='\u000Bstylesheet'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with trailing LT", +"input": "<link rel='stylesheet\u000B'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading and trailing LT", +"input": "<link rel='\u000Bstylesheet\u000B'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading FF", +"input": "<link rel='\u000Cstylesheet'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with trailing FF", +"input": "<link rel='stylesheet\u000C'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading and trailing FF", +"input": "<link rel='\u000Cstylesheet\u000C'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading CR", +"input": "<link rel='\rstylesheet'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with trailing CR", +"input": "<link rel='stylesheet\r'>", +"fail-if": "invalid-rel"}, + +{"description": "valid single link rel value with leading and trailing CR", +"input": "<link rel='\rstylesheet\r'>", +"fail-if": "invalid-rel"}, + +{"description": "valid double link rel value separated by space", +"input": "<link rel='stylesheet alternate'>", +"fail-if": "invalid-rel"}, + +{"description": "valid double link rel value separated by tab", +"input": "<link rel='stylesheet\talternate'>", +"fail-if": "invalid-rel"}, + +{"description": "valid double link rel value separated by LF", +"input": "<link rel='stylesheet\nalternate'>", +"fail-if": "invalid-rel"}, + +{"description": "valid double link rel value separated by LT", +"input": "<link rel='stylesheet\u000Balternate'>", +"fail-if": "invalid-rel"}, + +{"description": "valid double link rel value separated by FF", +"input": "<link rel='stylesheet\u000Calternate'>", +"fail-if": "invalid-rel"}, + +{"description": "valid double link rel value separated by CR", +"input": "<link rel='stylesheet\ralternate'>", +"fail-if": "invalid-rel"}, + +{"description": "invalid duplicated link rel value separated by space", +"input": "<link rel='stylesheet stylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by tab", +"input": "<link rel='stylesheet\tstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by LF", +"input": "<link rel='stylesheet\nstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by LT", +"input": "<link rel='stylesheet\u000Bstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by FF", +"input": "<link rel='stylesheet\u000Cstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by CR", +"input": "<link rel='stylesheet\rstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by space", +"input": "<link rel='stylesheet stylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by tab", +"input": "<link rel='stylesheet\tstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by LF", +"input": "<link rel='stylesheet\nstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by LT", +"input": "<link rel='stylesheet\u000Bstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by FF", +"input": "<link rel='stylesheet\u000Cstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "invalid duplicated link rel value separated by CR", +"input": "<link rel='stylesheet\rstylesheet'>", +"fail-unless": "duplicate-value-in-token-list"}, + +{"description": "valid link rel value 'feed'", +"input": "<link rel=feed>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'help'", +"input": "<link rel=help>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'tag'", +"input": "<link rel=tag>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'sidebar'", +"input": "<link rel=sidebar>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'archive'", +"input": "<link rel=archive>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'contents'", +"input": "<link rel=contents>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'previous'", +"input": "<link rel=previous>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'index'", +"input": "<link rel=index>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'end'", +"input": "<link rel=end>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'copyright'", +"input": "<link rel=copyright>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'author'", +"input": "<link rel=author>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'top'", +"input": "<link rel=top>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'alternate'", +"input": "<link rel=alternate>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'next'", +"input": "<link rel=next>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'start'", +"input": "<link rel=start>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'stylesheet'", +"input": "<link rel=stylesheet>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'archives'", +"input": "<link rel=archives>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'toc'", +"input": "<link rel=toc>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'prev'", +"input": "<link rel=prev>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'begin'", +"input": "<link rel=begin>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'icon'", +"input": "<link rel=icon>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'search'", +"input": "<link rel=search>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'last'", +"input": "<link rel=last>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'license'", +"input": "<link rel=license>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'pingback'", +"input": "<link rel=pingback>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'up'", +"input": "<link rel=up>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'contact'", +"input": "<link rel=contact>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'prefetch'", +"input": "<link rel=prefetch>", +"fail-if": "invalid-rel"}, + +{"description": "valid link rel value 'first'", +"input": "<link rel=first>", +"fail-if": "invalid-rel"} + +]} diff --git a/test/data/validator/ol-start-attribute.test b/test/data/validator/ol-start-attribute.test new file mode 100755 index 0000000..5e18cbe --- /dev/null +++ b/test/data/validator/ol-start-attribute.test @@ -0,0 +1,7 @@ +{"tests": [ + +{"description": "invalid ol start attribute value due to leading junk", +"input": "<ol start=a1>", +"fail-unless": "invalid-integer-value"} + +]}
\ No newline at end of file diff --git a/test/data/validator/starttags.test b/test/data/validator/starttags.test new file mode 100755 index 0000000..0aa5b4d --- /dev/null +++ b/test/data/validator/starttags.test @@ -0,0 +1,375 @@ +{"tests": [ + +{"description": "unknown start tag <foo>", +"input": "<foo>", +"fail-unless": "unknown-start-tag"}, + +{"description": "allowed start tag <code>", +"input": "<code>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <kbd>", +"input": "<kbd>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <aside>", +"input": "<aside>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <datagrid>", +"input": "<datagrid>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <font>", +"input": "<font>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <noscript>", +"input": "<noscript>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <style>", +"input": "<style>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <img>", +"input": "<img>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <title>", +"input": "<title>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <menu>", +"input": "<menu>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <tr>", +"input": "<tr>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <param>", +"input": "<param>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <li>", +"input": "<li>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <source>", +"input": "<source>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <tfoot>", +"input": "<tfoot>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <th>", +"input": "<th>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <td>", +"input": "<td>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <dl>", +"input": "<dl>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <blockquote>", +"input": "<blockquote>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <dd>", +"input": "<dd>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <abbr>", +"input": "<abbr>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <dt>", +"input": "<dt>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <noembed>", +"input": "<noembed>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <p>", +"input": "<p>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <small>", +"input": "<small>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <meter>", +"input": "<meter>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <em>", +"input": "<em>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <meta>", +"input": "<meta>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <video>", +"input": "<video>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <div>", +"input": "<div>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <canvas>", +"input": "<canvas>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <sub>", +"input": "<sub>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <section>", +"input": "<section>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <sup>", +"input": "<sup>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <progress>", +"input": "<progress>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <body>", +"input": "<body>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <base>", +"input": "<base>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <br>", +"input": "<br>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <address>", +"input": "<address>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <article>", +"input": "<article>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <strong>", +"input": "<strong>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <legend>", +"input": "<legend>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <event-source>", +"input": "<event-source>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <ol>", +"input": "<ol>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <script>", +"input": "<script>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <caption>", +"input": "<caption>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <dialog>", +"input": "<dialog>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <col>", +"input": "<col>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <h2>", +"input": "<h2>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <h3>", +"input": "<h3>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <h1>", +"input": "<h1>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <h6>", +"input": "<h6>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <h4>", +"input": "<h4>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <h5>", +"input": "<h5>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <header>", +"input": "<header>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <table>", +"input": "<table>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <span>", +"input": "<span>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <area>", +"input": "<area>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <dfn>", +"input": "<dfn>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <var>", +"input": "<var>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <cite>", +"input": "<cite>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <thead>", +"input": "<thead>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <head>", +"input": "<head>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <hr>", +"input": "<hr>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <link>", +"input": "<link>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <datatemplate>", +"input": "<datatemplate>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <b>", +"input": "<b>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <colgroup>", +"input": "<colgroup>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <ul>", +"input": "<ul>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <del>", +"input": "<del>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <iframe>", +"input": "<iframe>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <pre>", +"input": "<pre>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <figure>", +"input": "<figure>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <ins>", +"input": "<ins>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <tbody>", +"input": "<tbody>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <html>", +"input": "<html>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <nav>", +"input": "<nav>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <details>", +"input": "<details>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <samp>", +"input": "<samp>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <map>", +"input": "<map>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <nest>", +"input": "<nest>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <object>", +"input": "<object>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <a>", +"input": "<a>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <footer>", +"input": "<footer>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <i>", +"input": "<i>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <m>", +"input": "<m>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <rule>", +"input": "<rule>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <q>", +"input": "<q>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <command>", +"input": "<command>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <time>", +"input": "<time>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <audio>", +"input": "<audio>", +"fail-if": "unknown-start-tag"}, + +{"description": "allowed start tag <bdo>", +"input": "<bdo>", +"fail-if": "unknown-start-tag"} + +]} diff --git a/test/data/validator/style-scoped-attribute.test b/test/data/validator/style-scoped-attribute.test new file mode 100755 index 0000000..f47795a --- /dev/null +++ b/test/data/validator/style-scoped-attribute.test @@ -0,0 +1,7 @@ +{"tests": [ + +{"description": "invalid style scoped attribute value 'inherit'", +"input": "<style scoped=inherit>", +"fail-unless": "invalid-boolean-value"} + +]}
\ No newline at end of file diff --git a/test/data/validator/tabindexattribute.test b/test/data/validator/tabindexattribute.test new file mode 100755 index 0000000..0206695 --- /dev/null +++ b/test/data/validator/tabindexattribute.test @@ -0,0 +1,79 @@ +{"tests": [ + +{"description": "valid tabindex attribute value '-1'", +"input": "<span tabindex=-1>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value '0'", +"input": "<span tabindex=0>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value '1'", +"input": "<span tabindex=1>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value '32768'", +"input": "<span tabindex=32768>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value '-32768'", +"input": "<span tabindex=-32768>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value with leading spaces", +"input": "<span tabindex=' -32768'>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value with trailing spaces", +"input": "<span tabindex='-32768 '>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value with trailing junk", +"input": "<span tabindex='32768a'>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value with trailing junk and whitespace", +"input": "<span tabindex='32768a '>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value with trailing whitespace and junk", +"input": "<span tabindex='32768 a'>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value with leading spaces", +"input": "<span tabindex=' 32768'>", +"fail-if": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value with leading spaces (with sign)", +"input": "<span tabindex=' -32768'>", +"fail-if": "invalid-integer-value"}, + +{"description": "invalid tabindex attribute value (blank)", +"input": "<span tabindex>", +"fail-unless": "attribute-value-can-not-be-blank"}, + +{"description": "invalid tabindex attribute value due to leading junk", +"input": "<span tabindex=a1>", +"fail-unless": "invalid-integer-value"}, + +{"description": "invalid tabindex attribute value due to two hyphens", +"input": "<span tabindex=--1>", +"fail-unless": "invalid-integer-value"}, + +{"description": "invalid tabindex attribute value due to non-numeric", +"input": "<span tabindex=foo>", +"fail-unless": "invalid-integer-value"}, + +{"description": "invalid tabindex attribute value due to positive sign", +"input": "<span tabindex=+1>", +"fail-unless": "invalid-integer-value"}, + +{"description": "invalid tabindex attribute value due to decimal point", +"input": "<span tabindex=.1>", +"fail-unless": "invalid-integer-value"}, + +{"description": "valid tabindex attribute value with trailing decimal point", +"input": "<span tabindex=1.0>", +"fail-if": "invalid-integer-value"} + +]}
\ No newline at end of file |