1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
<!doctype html>
<html>
<head>
<title>Check for Dpub Vocabulary Role Usage</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
setup({explicit_timeout: true, explicit_done: true });
var theRoles = [
"doc-abstract",
"doc-acknowledgments",
"doc-afterword",
"doc-appendix",
"doc-backlink",
"doc-biblioentry",
"doc-bibliography",
"doc-biblioref",
"doc-chapter",
"doc-colophon",
"doc-conclusion",
"doc-cover",
"doc-credit",
"doc-credits",
"doc-dedication",
"doc-endnote",
"doc-endnotes",
"doc-epigraph",
"doc-epilogue",
"doc-errata",
"doc-example",
"doc-footnote",
"doc-foreword",
"doc-glossary",
"doc-glossref",
"doc-index",
"doc-introduction",
"doc-noteref",
"doc-notice",
"doc-pagebreak",
"doc-pagelist",
"doc-part",
"doc-preface",
"doc-prologue",
"doc-pullquote",
"doc-qna",
"doc-subtitle",
"doc-tip",
"doc-toc"
];
/* runTests - run tests against the content
*
* @param content - a string with the content to test
*/
function runTests(content) {
'use strict';
// keep track of the test number executed
var testCounter = 1;
// create a DOM tree for the content
var theDOM = document.createElement("body");
// check the content - if it has a body element, strip up to it and after the
// close
content = content.replace(/\n/g, " ");
if (content.search(/<body/i) !== -1) {
// there is an opening body tag
content = content.replace(/^.*<body[^>]*>/i, '');
if (content.search(/<\/[^>]*body/i) !== -1) {
content = content.replace(/<\/[^>]*body.*$/i, '');
}
}
var parseFail = false ;
var parseMessage = "" ;
if ("" === content || content.search(/^ +$/) !== -1 ) {
// there is NO content
parseFail = true;
parseMessage = "Content is empty";
} else {
try {
// add the content into the created body element
theDOM.innerHTML = content;
}
catch(err) {
parseFail = true;
parseMessage = err;
}
}
test(function() {
assert_false(parseFail, parseMessage);
}, testCounter + " Can parse submitted content");
testCounter += 1;
// loop over the tree looking for roles with the values in theRoles
theRoles.forEach(function(role) {
var tName = testCounter + " " + "Uses role " + role;
testCounter += 1;
var nodes = theDOM.querySelectorAll('[role~="'+role+'"]');
if (nodes.length) {
// there are matching nodes
test(function() {
assert_true(true, "Found the role");
}, tName);
}
});
done();
};
on_event(document, "DOMContentLoaded", function() {
var runButton = document.getElementById('dpub-run') ;
var closeButton = document.getElementById('dpub-close') ;
on_event(runButton, "click", function() {
var content = document.getElementById("dpub-input");
runTests(content.value);
});
});
</script>
</head>
<body>
<p>Fill the textarea below with the contents of a <code>body</code> element
from HTML markup from that reflects your usage of
DPub-ARIA roles. Then select "Run Test" to evaluate the content.</p>
<form name="dpub" id="dpub">
<textarea name="dpub-input" id="dpub-input" style="width: 90%; height: 10em" ></textarea>
<p><input type="button" id="dpub-run" name="Run Test" value="Run Test">
<input style="display: none" type="button" id="dpub-close"
name="Close" value="Close"></p>
</form>
<div id="log"></div>
</body>
</html>
|