UNPKG

@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

73 lines (66 loc) 3.1 kB
(() => { compliant("navigator.engine"); let _engine = null; if (navigator.userAgent.match(/Mozilla\/[\d\.]+ \(.*\) AppleWebKit\/[\d\.]+ \(KHTML, like Gecko\).* Safari\/[\d\.]+/i)) _engine = "webkit"; if (navigator.userAgent.match(/Mozilla\/[\d\.]+ \(.*\) AppleWebKit\/[\d\.]+ \(KHTML, like Gecko\).* Chrome\/[\d\.]+/i)) _engine = "blink"; if (navigator.userAgent.match(/Mozilla\/[\d\.]+ \(.*\) Gecko\/[\d\.]+/i)) _engine = "gecko"; if (navigator.userAgent.match(/Mozilla\/[\d\.]+ \(.*\) Gecko\/[\d\.]+ Goanna\/[\d\.]+/i)) _engine = "goanna"; if (_engine) Object.defineProperty(navigator, "engine", { value: _engine }); compliant("Test.read"); compliant(null, Test.read = (content) => { const request = new XMLHttpRequest(); request.overrideMimeType("text/plain"); if (content) if (content.match(/\?/)) content += "&" + Date.now(); else content += "?" + Date.now(); request.open("GET", content, false); request.send(); if (request.status !== 200) throw new Error("HTTP status " + request.status + " for " + request.responseURL); return request.responseText; }); compliant("String.prototype.simplify"); compliant(null, String.prototype.simplify = function() { return this.trim().replace(/\t/g, " ") .replace(/(\r\n)|(\n\r)|[\r\n]/gm, "\n") .replace(/(^ +)|( +$)/gm, "") .replace(/\s*\n+\s*\n+/g, "\n") .replace(/&gt;/g, ">") .replace(/&lt;/g, "<"); }); compliant("console.test"); compliant(null, console.test = (content) => { console.test.count = (console.test.count || 0) +1; console.log(`script: #${console.test.count}`); console.log(`<script type="text/test">\n${String(content || "").simplify()}\n<\/script>`); }); // Assert becomes available only in the unit test by activating the Test API if (typeof Assert !== "undefined") { compliant("Assert.assertSameText"); compliant(null, Assert.assertSameText = (expected, actual) => { Assert.assertEquals(String(expected || "").simplify(), String(actual || "").simplify()); }); compliant("Assert.assertSameTo"); compliant(null, Assert.assertSameTo = (selector, actual) => { const element = document.querySelector(selector); const content = element.innerHTML; Assert.assertEquals(content.simplify(), String(actual || "").simplify()); }); compliant("Assert.assertIn"); compliant(null, Assert.assertIn = (...variants) => { const assert = Assert.create(variants, 2); if (assert.values[0].includes(assert.values[1])) return; assert.values[0] = "[" + assert.values[0].join(", ") + "]"; throw assert.error("Assert.assertIn", "in {0}", "{1}"); }); } })();