From c867ab04ab8d31ffa5bf30e83b3c2da4a3ed1a85 Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 13 Apr 2016 16:01:45 +0200 Subject: [PATCH 1/3] rename /_socket/ app to /p/ --- www/{_socket => p}/index.html | 0 www/{_socket => p}/inner.html | 0 www/{_socket => p}/main.js | 0 www/{_socket => p}/toolbar.js | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename www/{_socket => p}/index.html (100%) rename www/{_socket => p}/inner.html (100%) rename www/{_socket => p}/main.js (100%) rename www/{_socket => p}/toolbar.js (100%) diff --git a/www/_socket/index.html b/www/p/index.html similarity index 100% rename from www/_socket/index.html rename to www/p/index.html diff --git a/www/_socket/inner.html b/www/p/inner.html similarity index 100% rename from www/_socket/inner.html rename to www/p/inner.html diff --git a/www/_socket/main.js b/www/p/main.js similarity index 100% rename from www/_socket/main.js rename to www/p/main.js diff --git a/www/_socket/toolbar.js b/www/p/toolbar.js similarity index 100% rename from www/_socket/toolbar.js rename to www/p/toolbar.js From 468827daddefc4eb69c9f34d5423eefc22bab45e Mon Sep 17 00:00:00 2001 From: ansuz Date: Wed, 13 Apr 2016 16:10:38 +0200 Subject: [PATCH 2/3] newest tests --- www/assert/index.html | 10 ++++++ www/assert/main.js | 73 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 80 insertions(+), 3 deletions(-) diff --git a/www/assert/index.html b/www/assert/index.html index 5feebf5ae..0ba42e3af 100644 --- a/www/assert/index.html +++ b/www/assert/index.html @@ -4,6 +4,16 @@ + + + + diff --git a/www/assert/main.js b/www/assert/main.js index f8c4f7ce1..05172555f 100644 --- a/www/assert/main.js +++ b/www/assert/main.js @@ -10,11 +10,17 @@ define([ window.TextPatcher = TextPatcher; var assertions = 0; + var failed = false; + var failedOn; + var failMessage; var assert = function (test, msg) { if (test()) { assertions++; } else { + failed = true; + failedOn = assertions; + failMessage = msg; throw new Error(msg || ''); } }; @@ -43,8 +49,69 @@ define([ }, "Round trip serialization introduced artifacts."); }; - roundTrip($('#target')[0]); - roundTrip($('#widget')[0]); + [ '#target', + '#widget', + ].forEach(function (sel) { + roundTrip($(sel)[0]); + }); - console.log("%s test%s passed", assertions, assertions === 1? '':'s'); + var strungJSON = function (orig) { + var result; + assert(function () { + result = JSON.stringify(JSON.parse(orig)); + return result === orig; + }, "expected result (" + result + ") to equal original (" + orig + ")"); + }; + + [ '{"border":"1","style":{"width":"500px"}}', + '{"style":{"width":"500px"},"border":"1"}', + ].forEach(function (orig) { + strungJSON(orig); + }); + + /* TODO Test how browsers handle weird elements + like "_moz-resizing":"true" + + and anything else you can think of. + + Start with Hyperjson, turn it into a DOM and come back + */ + + + // report successes + + var swap = function (str, dict) { + return str.replace(/\{\{(.*?)\}\}/g, function (all, key) { + return dict[key] || all; + }); + }; + + var multiline = function (f) { + var str; + f.toString().replace(/\/\*(.*)\*\\/g, function (all, out) { + str = out; + }); + return str; + }; + + $("body").html(function (i, val) { + var dict = { + previous: val, + passedAssertions: assertions, + plural: (assertions === 1? '' : 's'), + }; + + var SUCCESS = swap(multiline(function(){/* +

{{passedAssertions}} test{{plural}} passed.

+ +{{previous}} + */}), dict); + + var FAILURE = swap( + + + return report; + }); + + console.log(report); }); From b12a01e08f925769f1b2bcbac4a23a739f24e558 Mon Sep 17 00:00:00 2001 From: ansuz Date: Thu, 14 Apr 2016 12:16:10 +0200 Subject: [PATCH 3/3] report test results on the page, not in the console --- www/assert/index.html | 10 +++++- www/assert/main.js | 73 ++++++++++++++++++++++++++++++++----------- 2 files changed, 63 insertions(+), 20 deletions(-) diff --git a/www/assert/index.html b/www/assert/index.html index 0ba42e3af..68c995f68 100644 --- a/www/assert/index.html +++ b/www/assert/index.html @@ -9,9 +9,17 @@ diff --git a/www/assert/main.js b/www/assert/main.js index 05172555f..0ffea44e6 100644 --- a/www/assert/main.js +++ b/www/assert/main.js @@ -12,17 +12,28 @@ define([ var assertions = 0; var failed = false; var failedOn; - var failMessage; + var failMessages = []; + + var ASSERTS = []; + var runASSERTS = function () { + ASSERTS.forEach(function (f, index) { + f(index); + }); + }; var assert = function (test, msg) { - if (test()) { - assertions++; - } else { - failed = true; - failedOn = assertions; - failMessage = msg; - throw new Error(msg || ''); - } + ASSERTS.push(function (i) { + if (test()) { + assertions++; + } else { + failed = true; + failedOn = assertions; + failMessages.push({ + test: i, + message: msg + }); + } + }); }; var $body = $('body'); @@ -69,6 +80,8 @@ define([ strungJSON(orig); }); + //assert(function () { }, "this is expected to fail"); + /* TODO Test how browsers handle weird elements like "_moz-resizing":"true" @@ -77,41 +90,63 @@ define([ Start with Hyperjson, turn it into a DOM and come back */ - - // report successes - var swap = function (str, dict) { return str.replace(/\{\{(.*?)\}\}/g, function (all, key) { - return dict[key] || all; + return typeof dict[key] !== 'undefined'? dict[key] : all; }); }; var multiline = function (f) { var str; - f.toString().replace(/\/\*(.*)\*\\/g, function (all, out) { + f.toString().replace(/\/\*([\s\S]*)\*\//g, function (all, out) { str = out; }); - return str; + return str || ''; }; + var formatFailures = function () { + var template = multiline(function () { /* +
+Failed on test number {{test}} with error:
+> "{{message}}"
+
+
+ +*/}); + return failMessages.map(function (obj) { + console.log(obj); + return swap(template, obj); + }).join("\n"); + }; + + runASSERTS(); + $("body").html(function (i, val) { var dict = { previous: val, + totalAssertions: ASSERTS.length, passedAssertions: assertions, plural: (assertions === 1? '' : 's'), + failMessages: formatFailures() }; var SUCCESS = swap(multiline(function(){/* -

{{passedAssertions}} test{{plural}} passed.

+
{{passedAssertions}} / {{totalAssertions}} test{{plural}} passed. + +{{failMessages}} + +
+ {{previous}} */}), dict); - var FAILURE = swap( - + var report = SUCCESS; return report; }); - console.log(report); + var $report = $('.report'); + $report.addClass(failed?'failure':'success'); + });