forked from agda/agda-frp-js
/
agda.qunit.js
32 lines (32 loc) · 1.25 KB
/
agda.qunit.js
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
// A top-level module for running test suites.
require(["agda.frp.taskqueue", "qunit.js"],function(taskqueue) {
function run(tests) {
var visitor = {
"ε": function() {},
"_,_": function(test1,test2) { test1(visitor); test2(visitor); },
"ok": function(name,fun) { ok(fun(),name); },
"ok!": function(name,fun) { ok(fun(),name); },
// TODO: make ok◇ use setInterval + setTimeout to search for
// the value appearing later, mimicking LTL "eventually" semantics
"ok◇": function(name,fun) { ok(fun(taskqueue.singleton.time).value,name); },
"test": function(name,tests) { test(name,function() { tests(visitor); }); },
"suite": function(name,tests) { module(name); tests(visitor); }
};
tests(visitor);
}
// Find scripts with a data-agda tag.
if (document) { require.ready(function() {
var scripts = document.getElementsByTagName("script");
for (var i = 0 ; i < scripts.length; i++) {
var agdaName = scripts[i].getAttribute("data-agda");
var agdaTests = scripts[i].getAttribute("data-agda-tests") || "tests";
if (agdaName) {
var jsName = "jAgda." + agdaName;
require([jsName],function(jsModule) {
var jsTests = jsModule[agdaTests];
run(jsTests);
});
}
}
}); }
});