@seanox/aspect-js
Version:
full stack JavaScript framework for SPAs incl. reactivity rendering, mvc / mvvm, models, expression language, datasource, routing, paths, unit test and some more
92 lines (86 loc) • 2.5 kB
HTML
<html>
<head>
<meta charset="ISO-8859-1">
<title>Seanox aspect-js test environment</title>
<style>
body {
font-family: monospace;
white-space: pre;
}
</style>
<script src="aspect-js.js"></script>
<script type="text/javascript">
Test.activate();
let permits = "";
const modelX = {
get counter() {
return _snapshots.length;
},
get permits() {
return permits;
}
}
Object.use("a.b.c");
a.b.c.modelA = {
permit() {
permits += "a";
return _snapshots.length < 3 || _snapshots.length > 7;
}
};
const modelB = {
permit() {
permits += "b";
}
};
const _snapshots = [];
const toggle = () => {
window.setTimeout(() => {
_snapshots.push(document.body.innerText.replace(/\s+/g, ""));
if (_snapshots.length === 0)
Routing.route("#");
else if (_snapshots.length % 3 === 0)
Routing.route("#modelC");
else if (_snapshots.length % 2 !== 0)
Routing.route("#modelA");
else if (_snapshots.length % 2 === 0)
Routing.route("#modelB");
if (_snapshots.length > 10) {
document.body.innerText = _snapshots.join("\r\n");
Test.start();
} else toggle();
}, 250);
};
toggle();
// Important are 5-9
// In which modelB.permit() finds decisions outside the path coverage
Test.create({test() {
const content = _snapshots.join("\r\n");
Assert.assertSameTo("script[type='text/test']", content);
}});
</script>
<script type="text/test">
0A
1abA
2ababAB
3ababab
4abababaB
5abababaab
6abababaaba
7abababaabaab
8abababaabaababAB
9abababaabaabababA
10abababaabaabababaAB
</script>
</head>
<body route>
{{_snapshots.length}}<br/>
{{modelX.permits}}<br/>
<div id="modelA@a:b:c" composite route>
A
</div>
<div id="modelB" composite route>
B
</div>
</body>
</html>