summaryrefslogtreecommitdiff
path: root/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons
diff options
context:
space:
mode:
Diffstat (limited to 'www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons')
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/README.md16
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/canvas-test.js76
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/canvas.html15
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/qunit-canvas.js6
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/README.md17
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/close-enough-test.js35
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/close-enough.html14
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/qunit-close-enough.js32
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/README.md12
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/composite-demo-test.html26
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/index.html33
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/qunit-composite.css13
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/qunit-composite.js102
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/junitlogger/index.html44
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/junitlogger/junitlogger.js268
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/README.md14
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/runner.js97
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/README.md18
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/qunit-step.js25
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/step-test.js13
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/step.html14
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/README.md6
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/gabe.css362
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/gabe.html14
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/nv.css208
-rw-r--r--www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/nv.html14
26 files changed, 1494 insertions, 0 deletions
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/README.md b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/README.md
new file mode 100644
index 00000000..7c0f3663
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/README.md
@@ -0,0 +1,16 @@
+Canvas - A QUnit Addon For Testing Canvas Rendering
+================================
+
+This addon for QUnit adds a pixelEqual method that allows you to assert
+individual pixel values in a given canvas.
+
+Usage:
+
+ pixelEqual(canvas, x, y, r, g, b, a, message)
+
+Where:
+
+ * canvas: Reference to a canvas element
+ * x, y: Coordinates of the pixel to test
+ * r, g, b, a: The color and opacity value of the pixel that you except
+ * message: Optional message, same as for other assertions
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/canvas-test.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/canvas-test.js
new file mode 100644
index 00000000..72ad66f4
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/canvas-test.js
@@ -0,0 +1,76 @@
+test("Canvas pixels", function () {
+ var canvas = document.getElementById('qunit-canvas'), context;
+ try {
+ context = canvas.getContext('2d');
+ } catch(e) {
+ // propably no canvas support, just exit
+ return;
+ }
+ context.fillStyle = 'rgba(0, 0, 0, 0)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 0, 0, 0, 0, 0, 0);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(255, 0, 0, 0)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 0, 0, 0, 0, 0, 0);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(0, 255, 0, 0)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 0, 0, 0, 0, 0, 0);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(0, 0, 255, 0)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 0, 0, 0, 0, 0, 0);
+ context.clearRect(0,0,5,5);
+
+ context.fillStyle = 'rgba(0, 0, 0, 0.5)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 0, 0, 0, 0, 0, 127);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(255, 0, 0, 0.5)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 0, 0, 255, 0, 0, 127);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(0, 255, 0, 0.5)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 0, 0, 0, 255, 0, 127);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(0, 0, 255, 0.5)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 0, 0, 0, 0, 255, 127);
+ context.clearRect(0,0,5,5);
+
+ context.fillStyle = 'rgba(0, 0, 0, 0.5)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 2, 2, 0, 0, 0, 127);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(255, 0, 0, 0.5)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 2, 2, 255, 0, 0, 127);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(0, 255, 0, 0.5)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 2, 2, 0, 255, 0, 127);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(0, 0, 255, 0.5)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 2, 2, 0, 0, 255, 127);
+ context.clearRect(0,0,5,5);
+
+ context.fillStyle = 'rgba(0, 0, 0, 1)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 4, 4, 0, 0, 0, 255);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(255, 0, 0, 1)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 4, 4, 255, 0, 0, 255);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(0, 255, 0, 1)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 4, 4, 0, 255, 0, 255);
+ context.clearRect(0,0,5,5);
+ context.fillStyle = 'rgba(0, 0, 255, 1)';
+ context.fillRect(0, 0, 5, 5);
+ QUnit.pixelEqual(canvas, 4, 4, 0, 0, 255, 255);
+ context.clearRect(0,0,5,5);
+});
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/canvas.html b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/canvas.html
new file mode 100644
index 00000000..5d253b8c
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/canvas.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8" />
+ <title>QUnit Test Suite - Canvas Addon</title>
+ <link rel="stylesheet" href="../../qunit/qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="../../qunit/qunit.js"></script>
+ <script type="text/javascript" src="qunit-canvas.js"></script>
+ <script type="text/javascript" src="canvas-test.js"></script>
+</head>
+<body>
+ <div id="qunit"></div>
+ <canvas id="qunit-canvas" width="5" height="5"></canvas>
+</body>
+</html>
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/qunit-canvas.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/qunit-canvas.js
new file mode 100644
index 00000000..bc26c4ca
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/canvas/qunit-canvas.js
@@ -0,0 +1,6 @@
+QUnit.extend( QUnit, {
+ pixelEqual: function(canvas, x, y, r, g, b, a, message) {
+ var actual = Array.prototype.slice.apply(canvas.getContext('2d').getImageData(x, y, 1, 1).data), expected = [r, g, b, a];
+ QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
+ }
+});
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/README.md b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/README.md
new file mode 100644
index 00000000..d490b250
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/README.md
@@ -0,0 +1,17 @@
+Close-Enough - A QUnit Addon For Number Approximations
+================================
+
+This addon for QUnit adds close and notClose assertion methods, to test that
+numbers are close enough (or different enough) from an expected number, with
+a specified accuracy.
+
+Usage:
+
+ close(actual, expected, maxDifference, message)
+ notClose(actual, expected, minDifference, message)
+
+Where:
+
+ * maxDifference: the maximum inclusive difference allowed between the actual and expected numbers
+ * minDifference: the minimum exclusive difference allowed between the actual and expected numbers
+ * actual, expected, message: The usual
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/close-enough-test.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/close-enough-test.js
new file mode 100644
index 00000000..fc6a9a82
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/close-enough-test.js
@@ -0,0 +1,35 @@
+test("Close Numbers", function () {
+ var halfPi = Math.PI / 2,
+ sqrt2 = Math.sqrt(2);
+
+ QUnit.close(7, 7, 0);
+ QUnit.close(7, 7.1, 0.1);
+ QUnit.close(7, 7.1, 0.2);
+
+ QUnit.close(3.141, Math.PI, 0.001);
+ QUnit.close(3.1, Math.PI, 0.1);
+
+ QUnit.close(halfPi, 1.57, 0.001);
+
+ QUnit.close(sqrt2, 1.4142, 0.0001);
+
+ QUnit.close(Infinity, Infinity, 1);
+});
+
+test("Distant Numbers", function () {
+ var halfPi = Math.PI / 2,
+ sqrt2 = Math.sqrt(2);
+
+ QUnit.notClose(6, 7, 0);
+ QUnit.notClose(7, 7.2, 0.1);
+ QUnit.notClose(7, 7.2, 0.19999999999);
+
+ QUnit.notClose(3.141, Math.PI, 0.0001);
+ QUnit.notClose(3.1, Math.PI, 0.001);
+
+ QUnit.notClose(halfPi, 1.57, 0.0001);
+
+ QUnit.notClose(sqrt2, 1.4142, 0.00001);
+
+ QUnit.notClose(Infinity, -Infinity, 5);
+}); \ No newline at end of file
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/close-enough.html b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/close-enough.html
new file mode 100644
index 00000000..f5683201
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/close-enough.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8" />
+ <title>QUnit Test Suite - Close Enough Addon</title>
+ <link rel="stylesheet" href="../../qunit/qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="../../qunit/qunit.js"></script>
+ <script type="text/javascript" src="qunit-close-enough.js"></script>
+ <script type="text/javascript" src="close-enough-test.js"></script>
+</head>
+<body>
+ <div id="qunit"></div>
+</body>
+</html>
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/qunit-close-enough.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/qunit-close-enough.js
new file mode 100644
index 00000000..ddb5a584
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/close-enough/qunit-close-enough.js
@@ -0,0 +1,32 @@
+QUnit.extend( QUnit, {
+ /**
+ * Checks that the first two arguments are equal, or are numbers close enough to be considered equal
+ * based on a specified maximum allowable difference.
+ *
+ * @example close(3.141, Math.PI, 0.001);
+ *
+ * @param Number actual
+ * @param Number expected
+ * @param Number maxDifference (the maximum inclusive difference allowed between the actual and expected numbers)
+ * @param String message (optional)
+ */
+ close: function(actual, expected, maxDifference, message) {
+ var passes = (actual === expected) || Math.abs(actual - expected) <= maxDifference;
+ QUnit.push(passes, actual, expected, message);
+ },
+
+ /**
+ * Checks that the first two arguments are numbers with differences greater than the specified
+ * minimum difference.
+ *
+ * @example notClose(3.1, Math.PI, 0.001);
+ *
+ * @param Number actual
+ * @param Number expected
+ * @param Number minDifference (the minimum exclusive difference allowed between the actual and expected numbers)
+ * @param String message (optional)
+ */
+ notClose: function(actual, expected, minDifference, message) {
+ QUnit.push(Math.abs(actual - expected) > minDifference, actual, expected, message);
+ }
+}); \ No newline at end of file
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/README.md b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/README.md
new file mode 100644
index 00000000..2e2d2fd7
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/README.md
@@ -0,0 +1,12 @@
+Composite - A QUnit Addon For Running Multiple Test Files
+================================
+
+Composite is a QUnit addon that, when handed an array of files, will
+open each of those files inside of an iframe, run the tests and
+display the results as a single suite of QUnit tests.
+
+The Rerun link next to each suite allows you to quickly rerun that suite,
+outside the composite runner.
+
+If you want to see what assertion failed in a long list of assertions,
+just use the regular "Hide passed tests" checkbox. \ No newline at end of file
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/composite-demo-test.html b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/composite-demo-test.html
new file mode 100644
index 00000000..ad964c9d
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/composite-demo-test.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>QUnit SubsuiteRunner Test Suite</title>
+
+ <link rel="stylesheet" href="../../qunit/qunit.css" type="text/css" media="screen">
+ <link rel="stylesheet" href="qunit-composite.css">
+ <script src="../../qunit/qunit.js"></script>
+ <script src="qunit-composite.js"></script>
+
+ <script>
+ QUnit.testSuites([
+ "../../test/index.html",
+ "../canvas/canvas.html",
+ "../close-enough/close-enough.html",
+ "../step/step.html"
+ ]);
+ </script>
+</head>
+<body>
+ <div id="qunit"></div>
+ <div id="qunit-fixture">
+</div>
+</body>
+</html>
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/index.html b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/index.html
new file mode 100644
index 00000000..b08f5e97
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/index.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8" />
+ <title>Composite</title>
+ </head>
+ <body>
+ <h1>Composite</h1>
+ <h3>A QUnit Addon For Running Multiple Test Files</h3>
+ <p>Composite is a QUnit addon that, when handed an array of
+ files, will open each of those files inside of an iframe, run
+ the tests and display the results as a single suite of QUnit
+ tests.</p>
+ <h4>Using Composite</h4>
+ <p>To use Composite, setup a standard QUnit html page as you
+ would with other QUnit tests. Remember to include composite.js
+ and composite.css. Then, inside of either an external js file,
+ or a script block call the only new method that Composite
+ exposes, QUnit.testSuites().</p><p>QUnit.testSuites() is
+ passed an array of test files to run as follows:</p>
+ <pre>
+QUnit.testSuites([
+ "test-file-1.html",
+ "test-file-2.html",
+ "test-file-3.html"
+]);
+ </pre>
+ <h4>Tests</h4>
+ <p>
+ <a href="composite-demo-test.html">Composite Demo</a>: A suite which demoes how Composite is bootstrapped and run.
+ </p>
+ </body>
+</html>
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/qunit-composite.css b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/qunit-composite.css
new file mode 100644
index 00000000..df47362d
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/qunit-composite.css
@@ -0,0 +1,13 @@
+iframe.qunit-subsuite{
+ position: fixed;
+ bottom: 0;
+ left: 0;
+
+ margin: 0;
+ padding: 0;
+ border-width: 1px 0 0;
+ height: 45%;
+ width: 100%;
+
+ background: #fff;
+} \ No newline at end of file
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/qunit-composite.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/qunit-composite.js
new file mode 100644
index 00000000..89c47eb2
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/composite/qunit-composite.js
@@ -0,0 +1,102 @@
+(function( QUnit ) {
+
+QUnit.extend( QUnit, {
+ testSuites: function( suites ) {
+ QUnit.begin(function() {
+ QUnit.initIframe();
+ });
+
+ for ( var i = 0; i < suites.length; i++ ) {
+ QUnit.runSuite( suites[i] );
+ }
+
+ QUnit.done(function() {
+ this.iframe.style.display = "none";
+ });
+ },
+
+ runSuite: function( suite ) {
+ asyncTest( suite, function() {
+ QUnit.iframe.setAttribute( "src", suite );
+ });
+ },
+
+ initIframe: function() {
+ var body = document.body,
+ iframe = this.iframe = document.createElement( "iframe" ),
+ iframeWin;
+
+ iframe.className = "qunit-subsuite";
+ body.appendChild( iframe );
+
+ function onIframeLoad() {
+ var module, test,
+ count = 0;
+
+
+ iframeWin.QUnit.moduleStart(function( data ) {
+ // capture module name for messages
+ module = data.name;
+ });
+
+ iframeWin.QUnit.testStart(function( data ) {
+ // capture test name for messages
+ test = data.name;
+ });
+ iframeWin.QUnit.testDone(function() {
+ test = null;
+ });
+
+ iframeWin.QUnit.log(function( data ) {
+ if (test === null) {
+ return;
+ }
+ // pass all test details through to the main page
+ var message = module + ": " + test + ": " + data.message;
+ expect( ++count );
+ QUnit.push( data.result, data.actual, data.expected, message );
+ });
+
+ iframeWin.QUnit.done(function() {
+ // start the wrapper test from the main page
+ start();
+ });
+ }
+ QUnit.addEvent( iframe, "load", onIframeLoad );
+
+ iframeWin = iframe.contentWindow;
+ }
+});
+
+QUnit.testStart(function( data ) {
+ // update the test status to show which test suite is running
+ QUnit.id( "qunit-testresult" ).innerHTML = "Running " + data.name + "...<br>&nbsp;";
+});
+
+QUnit.testDone(function() {
+ var i,
+ current = QUnit.id( this.config.current.id ),
+ children = current.children,
+ src = this.iframe.src;
+
+ // undo the auto-expansion of failed tests
+ for ( i = 0; i < children.length; i++ ) {
+ if ( children[i].nodeName === "OL" ) {
+ children[i].style.display = "none";
+ }
+ }
+
+ QUnit.addEvent(current, "dblclick", function( e ) {
+ var target = e && e.target ? e.target : window.event.srcElement;
+ if ( target.nodeName.toLowerCase() === "span" || target.nodeName.toLowerCase() === "b" ) {
+ target = target.parentNode;
+ }
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
+ window.location = src;
+ }
+ });
+
+ current.getElementsByTagName('a')[0].href = src;
+});
+
+}( QUnit ) );
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/junitlogger/index.html b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/junitlogger/index.html
new file mode 100644
index 00000000..fe78af37
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/junitlogger/index.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8" />
+<title>QUnit Test Suite - JUnit report</title>
+<link rel="stylesheet" href="../../qunit/qunit.css" type="text/css" media="screen">
+<script type="text/javascript" src="../../qunit/qunit.js"></script>
+<script type="text/javascript" src="junitlogger.js"></script>
+<script type="text/javascript">
+QUnit.jUnitReport = function(data) {
+ console.log(data.xml);
+};
+
+module('Module 1');
+
+test("test 1", 2, function () {
+ equal(1, 1, "Assert 1 = 1");
+ equal(1, 2, "Assert fail 1 = 2");
+});
+
+test("test 2", 3, function () {
+ equal(1, 1, "Assert 1 = 1");
+ equal(1, 2, "Assert fail 1 = 2");
+ equal(1, 1, "Assert 1 = 1");
+});
+
+module('Module 2');
+
+test("test 3", 2, function () {
+ equal(1, 1, "Assert 1 = 1");
+ equal(1, 2, "Assert fail 1 = 2");
+});
+
+test("test 4", 3, function () {
+ equal(1, 1, "Assert 1 = 1");
+ equal(1, 2, "Assert fail 1 = 2");
+ equal(1, 3, "Assert fail 1 = 3");
+});
+</script>
+</head>
+<body>
+ <div id="qunit"></div>
+</body>
+</html>
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/junitlogger/junitlogger.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/junitlogger/junitlogger.js
new file mode 100644
index 00000000..dde47079
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/junitlogger/junitlogger.js
@@ -0,0 +1,268 @@
+(function() {
+ var count = 0, suiteCount = 0, currentSuite, currentTest, suites = [], assertCount, start, results = {failed:0, passed:0, total:0, time:0};
+
+ QUnit.jUnitReport = function(data) {
+ // Gets called when a report is generated
+ };
+
+ QUnit.moduleStart(function(data) {
+ currentSuite = {
+ name: data.name,
+ tests: [],
+ failures: 0,
+ time: 0,
+ stdout : '',
+ stderr : ''
+ };
+
+ suites.push(currentSuite);
+ });
+
+ QUnit.moduleDone(function(data) {
+ });
+
+ QUnit.testStart(function(data) {
+ if(!start){ start = new Date(); }
+
+ assertCount = 0;
+
+ currentTest = {
+ name: data.name,
+ failures: [],
+ start: new Date()
+ };
+
+ // Setup default suite if no module was specified
+ if (!currentSuite) {
+ currentSuite = {
+ name: "default",
+ tests: [],
+ failures: 0,
+ time: 0,
+ stdout : '',
+ stderr : ''
+ };
+
+ suites.push(currentSuite);
+ }
+
+ currentSuite.tests.push(currentTest);
+ });
+
+ QUnit.testDone(function(data) {
+ currentTest.failed = data.failed;
+ currentTest.total = data.total;
+ currentSuite.failures += data.failed;
+
+ results.failed += data.failed;
+ results.passed += data.passed;
+ results.total += data.total;
+ });
+
+ QUnit.log(function(data) {
+ assertCount++;
+
+ if (!data.result) {
+ currentTest.failures.push(data.message);
+
+ // Add log message of failure to make it easier to find in jenkins UI
+ currentSuite.stdout += '[' + currentSuite.name + ', ' + currentTest.name + ', ' + assertCount + '] ' + data.message + '\n';
+ }
+ });
+
+ QUnit.done(function(data) {
+ function ISODateString(d) {
+ function pad(n) {
+ return n < 10 ? '0' + n : n;
+ }
+
+ return d.getUTCFullYear() + '-' +
+ pad(d.getUTCMonth() + 1)+'-' +
+ pad(d.getUTCDate()) + 'T' +
+ pad(d.getUTCHours()) + ':' +
+ pad(d.getUTCMinutes()) + ':' +
+ pad(d.getUTCSeconds()) + 'Z';
+ }
+
+ // Generate XML report
+ var i, ti, fi, test, suite,
+ xmlWriter = new XmlWriter({
+ linebreak_at : "testsuites,testsuite,testcase,failure,system-out,system-err"
+ }),
+ now = new Date();
+
+ xmlWriter.start('testsuites');
+
+ for (i = 0; i < suites.length; i++) {
+ suite = suites[i];
+
+ // Calculate time
+ for (ti = 0; ti < suite.tests.length; ti++) {
+ test = suite.tests[ti];
+
+ test.time = (now.getTime() - test.start.getTime()) / 1000;
+ suite.time += test.time;
+ }
+
+ xmlWriter.start('testsuite', {
+ id: "" + i,
+ name: suite.name,
+ errors: "0",
+ failures: suite.failures,
+ hostname: "localhost",
+ tests: suite.tests.length,
+ time: Math.round(suite.time * 1000) / 1000,
+ timestamp: ISODateString(now)
+ });
+
+ for (ti = 0; ti < suite.tests.length; ti++) {
+ test = suite.tests[ti];
+
+ xmlWriter.start('testcase', {
+ name: test.name,
+ total: test.total,
+ failed: test.failed,
+ time: Math.round(test.time * 1000) / 1000
+ });
+
+ for (fi = 0; fi < test.failures.length; fi++) {
+ xmlWriter.start('failure', {type: "AssertionFailedError", message: test.failures[fi]}, true);
+ }
+
+ xmlWriter.end('testcase');
+ }
+
+ if (suite.stdout) {
+ xmlWriter.start('system-out');
+ xmlWriter.cdata('\n' + suite.stdout);
+ xmlWriter.end('system-out');
+ }
+
+ if (suite.stderr) {
+ xmlWriter.start('system-err');
+ xmlWriter.cdata('\n' + suite.stderr);
+ xmlWriter.end('system-err');
+ }
+
+ xmlWriter.end('testsuite');
+ }
+
+ xmlWriter.end('testsuites');
+
+ results.time = new Date() - start;
+
+ QUnit.jUnitReport({
+ results:results,
+ xml: xmlWriter.getString()
+ });
+ });
+
+ function XmlWriter(settings) {
+ function addLineBreak(name) {
+ if (lineBreakAt[name] && data[data.length - 1] !== '\n') {
+ data.push('\n');
+ }
+ }
+
+ function makeMap(items, delim, map) {
+ var i;
+
+ items = items || [];
+
+ if (typeof(items) === "string") {
+ items = items.split(',');
+ }
+
+ map = map || {};
+
+ i = items.length;
+ while (i--) {
+ map[items[i]] = {};
+ }
+
+ return map;
+ }
+
+ function encode(text) {
+ var baseEntities = {
+ '"' : '&quot;',
+ "'" : '&apos;',
+ '<' : '&lt;',
+ '>' : '&gt;',
+ '&' : '&amp;'
+ };
+
+ return ('' + text).replace(/[<>&\"\']/g, function(chr) {
+ return baseEntities[chr] || chr;
+ });
+ }
+
+ var data = [], stack = [], lineBreakAt;
+
+ settings = settings || {};
+ lineBreakAt = makeMap(settings.linebreak_at || 'mytag');
+
+ this.start = function(name, attrs, empty) {
+ if (!empty) {
+ stack.push(name);
+ }
+
+ data.push('<', name);
+
+ for (var aname in attrs) {
+ data.push(" " + encode(aname), '="', encode(attrs[aname]), '"');
+ }
+
+ data.push(empty ? ' />' : '>');
+ addLineBreak(name);
+ };
+
+ this.end = function(name) {
+ stack.pop();
+ addLineBreak(name);
+ data.push('</', name, '>');
+ addLineBreak(name);
+ };
+
+ this.text = function(text) {
+ data.push(encode(text));
+ };
+
+ this.cdata = function(text) {
+ data.push('<![CDATA[', text, ']]>');
+ };
+
+ this.comment = function(text) {
+ data.push('<!--', text, '-->');
+ };
+
+ this.pi = function(name, text) {
+ if (text) {
+ data.push('<?', name, ' ', text, '?>\n');
+ } else {
+ data.push('<?', name, '?>\n');
+ }
+ };
+
+ this.doctype = function(text) {
+ data.push('<!DOCTYPE', text, '>\n');
+ };
+
+ this.getString = function() {
+ for (var i = stack.length - 1; i >= 0; i--) {
+ this.end(stack[i]);
+ }
+
+ stack = [];
+
+ return data.join('').replace(/\n$/, '');
+ };
+
+ this.reset = function() {
+ data = [];
+ stack = [];
+ };
+
+ this.pi(settings.xmldecl || 'xml version="1.0" encoding="UTF-8"');
+ }
+})(); \ No newline at end of file
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/README.md b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/README.md
new file mode 100644
index 00000000..ed6a4467
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/README.md
@@ -0,0 +1,14 @@
+PhantomJS Runner
+================
+
+A runner for PhantomJS, providing console output for tests.
+
+Usage:
+
+ phantomjs runner.js url
+
+Example:
+
+ phantomjs runner.js http://localhost/qunit/test
+
+If you're using Grunt, you should take a look at its [qunit task](https://github.com/cowboy/grunt/blob/master/docs/task_qunit.md). \ No newline at end of file
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/runner.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/runner.js
new file mode 100644
index 00000000..fdc82428
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/phantomjs/runner.js
@@ -0,0 +1,97 @@
+/*
+ * Qt+WebKit powered headless test runner using Phantomjs
+ *
+ * Phantomjs installation: http://code.google.com/p/phantomjs/wiki/BuildInstructions
+ *
+ * Run with:
+ * phantomjs runner.js [url-of-your-qunit-testsuite]
+ *
+ * E.g.
+ * phantomjs runner.js http://localhost/qunit/test
+ */
+
+var url = phantom.args[0];
+
+var page = require('webpage').create();
+
+// Route "console.log()" calls from within the Page context to the main Phantom context (i.e. current "this")
+page.onConsoleMessage = function(msg) {
+ console.log(msg);
+};
+
+page.onInitialized = function() {
+ page.evaluate(addLogging);
+};
+page.open(url, function(status){
+ if (status !== "success") {
+ console.log("Unable to access network: " + status);
+ phantom.exit(1);
+ } else {
+ // page.evaluate(addLogging);
+ var interval = setInterval(function() {
+ if (finished()) {
+ clearInterval(interval);
+ onfinishedTests();
+ }
+ }, 500);
+ }
+});
+
+function finished() {
+ return page.evaluate(function(){
+ return !!window.qunitDone;
+ });
+}
+
+function onfinishedTests() {
+ var output = page.evaluate(function() {
+ return JSON.stringify(window.qunitDone);
+ });
+ phantom.exit(JSON.parse(output).failed > 0 ? 1 : 0);
+}
+
+function addLogging() {
+ window.document.addEventListener( "DOMContentLoaded", function() {
+ var current_test_assertions = [];
+
+ QUnit.testDone(function(result) {
+ var name = result.module + ': ' + result.name;
+ var i;
+
+ if (result.failed) {
+ console.log('Assertion Failed: ' + name);
+
+ for (i = 0; i < current_test_assertions.length; i++) {
+ console.log(' ' + current_test_assertions[i]);
+ }
+ }
+
+ current_test_assertions = [];
+ });
+
+ QUnit.log(function(details) {
+ var response;
+
+ if (details.result) {
+ return;
+ }
+
+ response = details.message || '';
+
+ if (typeof details.expected !== 'undefined') {
+ if (response) {
+ response += ', ';
+ }
+
+ response += 'expected: ' + details.expected + ', but was: ' + details.actual;
+ }
+
+ current_test_assertions.push('Failed assertion: ' + response);
+ });
+
+ QUnit.done(function(result){
+ console.log('Took ' + result.runtime + 'ms to run ' + result.total + ' tests. ' + result.passed + ' passed, ' + result.failed + ' failed.');
+ window.qunitDone = result;
+ });
+ }, false );
+}
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/README.md b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/README.md
new file mode 100644
index 00000000..37af9df6
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/README.md
@@ -0,0 +1,18 @@
+QUnit.step() - A QUnit Addon For Testing execution in order
+============================================================
+
+This addon for QUnit adds a step method that allows you to assert
+the proper sequence in which the code should execute.
+
+Example:
+
+ test("example test", function () {
+ function x() {
+ QUnit.step(2, "function y should be called first");
+ }
+ function y() {
+ QUnit.step(1);
+ }
+ y();
+ x();
+ }); \ No newline at end of file
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/qunit-step.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/qunit-step.js
new file mode 100644
index 00000000..1ed3ff06
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/qunit-step.js
@@ -0,0 +1,25 @@
+QUnit.extend( QUnit, {
+
+ /**
+ * Check the sequence/order
+ *
+ * @example step(1); setTimeout(function () { step(3); }, 100); step(2);
+ * @param Number expected The excepted step within the test()
+ * @param String message (optional)
+ */
+ step: function (expected, message) {
+ this.config.current.step++; // increment internal step counter.
+ if (typeof message === "undefined") {
+ message = "step " + expected;
+ }
+ var actual = this.config.current.step;
+ QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
+ }
+});
+
+/**
+ * Reset the step counter for every test()
+ */
+QUnit.testStart(function () {
+ this.config.current.step = 0;
+});
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/step-test.js b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/step-test.js
new file mode 100644
index 00000000..a78c534b
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/step-test.js
@@ -0,0 +1,13 @@
+module('Step Addon');
+test("step", 3, function () {
+ QUnit.step(1, "step starts at 1");
+ setTimeout(function () {
+ start();
+ QUnit.step(3);
+ }, 100);
+ QUnit.step(2, "before the setTimeout callback is run");
+ stop();
+});
+test("step counter", 1, function () {
+ QUnit.step(1, "each test has its own step counter");
+}); \ No newline at end of file
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/step.html b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/step.html
new file mode 100644
index 00000000..95ba492d
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/step/step.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8" />
+ <title>QUnit Test Suite - Step Addon</title>
+ <link rel="stylesheet" href="../../qunit/qunit.css" type="text/css" media="screen">
+ <script type="text/javascript" src="../../qunit/qunit.js"></script>
+ <script type="text/javascript" src="qunit-step.js"></script>
+ <script type="text/javascript" src="step-test.js"></script>
+</head>
+<body>
+ <div id="qunit"></div>
+</body>
+</html>
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/README.md b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/README.md
new file mode 100644
index 00000000..8bc1862c
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/README.md
@@ -0,0 +1,6 @@
+Themes
+======
+
+These custom themes fully replace the default qunit.css file and should work
+with the default markup. To see them in action, open the html file for each.
+They'll run the QUnit testsuite itself. \ No newline at end of file
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/gabe.css b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/gabe.css
new file mode 100644
index 00000000..e66aa1f1
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/gabe.css
@@ -0,0 +1,362 @@
+/**
+ * QUnit Theme by Gabe Hendry
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+/** General Styles and Page Sturcture */
+body {
+ font-family:Arial, 'sans serif';
+ padding:20px 20px 0 20px;
+ position:relative;
+}
+
+h1, h2, h3, h4, h5, h6, #qunit-header, #qunit-banner {
+ font-family:Calibri, Arial, 'sans-serif';
+}
+
+h2 #qunit-tests, h2 #qunit-testrunner-toolbar, h2 #qunit-userAgent, #qunit-testresult {
+ font-family: Arial, 'sans-serif';
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Headers */
+
+#qunit-header {
+ padding: 10px 0px 25px 0px;
+ color: #3B73B9;
+ font-size: 1.8em;
+ font-weight: normal;
+ height:2em;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: #3B73B9;
+ font-weight:bold;
+ padding-right:22px;
+ float:left;
+
+}
+
+#qunit-header label {
+ font-size:14px;
+ color:#6BC9ED;
+ float:right;
+ font-family:Arial, 'sans-serif';
+ display: inline-block;
+}
+
+#qunit-header a + label:after {
+ content: ' }';
+}
+
+#qunit-header label + label {
+ margin-right:8px;
+}
+
+#qunit-header a:hover, #qunit-header a:focus {
+ color: #3B73B9;
+ background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAcCAYAAABoMT8aAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4RjRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERkFDNTFBMjMwREYxMUUxQTA3RjlDQkNDQzY3MkI4MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERkFDNTFBMTMwREYxMUUxQTA3RjlDQkNDQzY3MkI4MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4RjRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4RjRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjKftvwAAAFqSURBVHja5NTNKwVRHMbxey9X3rrXStlY2ljJRiQLGytLIkUpIks7lIUFC9laCX+DhUiSlMRdsFBSdkqSt4u8ju+vnqkxZriZheTUp1NzzvxmzjnPTNxxnFiUlohFbL9fIL9xeOUf7EEiSgEbf8XUTwv04A59mIuyB2VowyqKvytQjkU8YwaFul6CJmQ+5MB38zSGUIAs8vCi3loc6bA3mECvJl2o0Jhn/B47qAorMIgU9lGJBc/YDZbQgNugAt1I4gGtepq1ZTxiHu2B34L6LpRiD6ee8UPUqfe2lPbl0i1Qoz4T8JCgm89hf6IKdwnX6tM5ZGIEb1py1i2wporNORToUDa2LStugVntdPKr3GvMUnmFUe8p2No3FNOBkCIWsn7NOcC6Pwd2EicoUiZsnVvYxZNutpM601F/CpIFpNazH5bIel1LqOAmqrWEwG/BirQorp3KgL3yMSZxFBYkf7OJ43/jp/ouwAB8JktCUeXXIAAAAABJRU5ErkJggg==') center right no-repeat;
+}
+
+h2, p {
+ padding: 10px 0 10px 0;
+ margin:0;
+ font-size:1.3em;
+}
+
+p {
+ padding-top:0;
+ font-size:small;
+ color:#7B7979;
+ line-height:1.6em;
+}
+
+h2#qunit-banner {
+ height: 16px;
+ padding:5px 5px 5px 25px;
+ line-height:16px;
+ margin:0px 0 15px 0;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ background-position:0px;
+ background-repeat:no-repeat;
+ font-size:1em;
+ font-weight:normal;
+}
+
+h2#qunit-banner.qunit-pass {
+ background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjc1RjgyNEY5MzE2NzExRTFCQTA0RTIzMEVFNkY4ODM2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjc1RjgyNEZBMzE2NzExRTFCQTA0RTIzMEVFNkY4ODM2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzVGODI0RjczMTY3MTFFMUJBMDRFMjMwRUU2Rjg4MzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzVGODI0RjgzMTY3MTFFMUJBMDRFMjMwRUU2Rjg4MzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4C94F5AAAAwklEQVR42mL8//8/AyWAiYFCQLEBLOW7GEnVYwzEaUC8B4hXs5CoWRCIVwGxEtQQE1K9ANMMN5AUAzqA2AWJ/x6IzxJrAMi55WhiriBDYAYoEQi0DjSxdJDtsGgESd4F4jNYDAIF2m4oDQOzoBieDsqRbDoDpWEAXfMeqO0oCWkPmo1noH6eiWbYPSAOw5YSQYKr0cRnQg1BDvEwKI1hAEyyAk9AVsACDV9e6MRhSydyoBHKTKuh8bsHSTM+lzEABBgAXD0oIFydPtEAAAAASUVORK5CYII=');
+ color:#76B900;
+}
+
+h2#qunit-banner.qunit-pass:after {
+ content:'Congrats! All of your tests passed!';
+}
+
+h2#qunit-banner.qunit-fail {
+ background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU5QUIzNEU2MzE2NzExRTE4ODc3OEVFNEY2NzhDMjM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU5QUIzNEU3MzE2NzExRTE4ODc3OEVFNEY2NzhDMjM4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTlBQjM0RTQzMTY3MTFFMTg4Nzc4RUU0RjY3OEMyMzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTlBQjM0RTUzMTY3MTFFMTg4Nzc4RUU0RjY3OEMyMzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz46NEjgAAAAzElEQVR42mL8//8/AyWABUS8N1EFUS5AfA+KcQFBIE6DsjsFz9yGGAAEu6EGgEA6EM/CoRmkzhiJX8EE5bggKZyJZAsuzQwwNhMOp6IbsgpNM9jn8DCAOnsmFkNgNrlg0dyJbMAsNE0MOPgwza5AfBbdC7OgLsEHUDRjCwNChqBoxhWIxngMQI8dDAPKsSlCM2AmLgNAkh04/I3TECZcJiNFrys+Q2AGhOLQPAsaaLgMwZkS0fMDLkPgBqzGoxnZEBMg3gM1CBzdAAEGABpTMr+umvCXAAAAAElFTkSuQmCC');
+ color:#ee3324;
+}
+
+h2#qunit-banner.qunit-fail:after {
+ content:'Oops! One or more tests failed!';
+}
+
+/** Test Runner Result Styles */
+
+#qunit-testrunner-toolbar {
+ position:absolute;
+ top:55px;
+ right:20px;
+ color:#6BC9ED;
+ font-size:14px;
+}
+
+#qunit-testrunner-toolbar:after {
+ content:' }';
+}
+
+h2#qunit-userAgent {
+ padding: 0;
+ color: #7B7979;
+ border:0;
+ font-size:small;
+ font-family: Arial, 'sans-serif';
+ font-weight:normal;
+ font-style:italic;
+}
+
+h2#qunit-userAgent:before {
+ content:'User Agents: ';
+}
+
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-position: inside;
+ list-style-type:none;
+}
+
+#qunit-tests li {
+ padding: 4px 10px;
+ list-style-position:outside;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ margin-bottom:5px;
+ position:relative;
+ *zoom:1;
+ list-style-type:none;
+}
+
+#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
+ display: none;
+}
+
+#qunit-tests li strong {
+ cursor: pointer;
+}
+
+#qunit-tests li a {
+ display:block;
+ position:absolute;
+ right:10px;
+ padding:0px 16px 0 0;
+ font-size:0.8em;
+ background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAYCAYAAADOMhxqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4RjRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpENEZDRDdDQTMxODUxMUUxOTc3NEQ0OTUxNjc4REFEQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpENEZDRDdDOTMxODUxMUUxOTc3NEQ0OTUxNjc4REFEQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5MDRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4RjRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpE8SAQAAAD3SURBVHjaYsw5+YYBC5gGxN+BuBhdgoUBO1AFYlMgFgXiOGQJJjSFrEDcC8RaQMwPxEFAvBuXDSDFP6D4F1SMG4gtgFgBiB+g2/ATiL8C8UIgPgMV+wvEujDFyBoWQRVPB+IsqOa3QCyFrBhZgysQMwLxFCjfB4hFgPgVlH8DiOcha/jHgBu0ALEMEH9G1rAXqikHi4ZkIP4DxEuQNaQBMReUngjEdkAcDPU8KKROAPFp5GAFBSUPNHZToZEFM+wsEHtgiziQJmYg7gPiy0B8HIiTgNgRX0yD/FFzYdXZK0B8Fchei5GWgBI40xJQbjQtjdi0BBBgAAsUYVWmfe1CAAAAAElFTkSuQmCC') bottom right no-repeat;
+ color: #3b73b9;
+ text-decoration: none;
+ height:12px;
+ top:5px;
+}
+#qunit-tests li a:hover,
+#qunit-tests li a:focus {
+ color: #6bc9ed;
+ background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAYCAYAAADOMhxqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4RjRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpENEZDRDdDQTMxODUxMUUxOTc3NEQ0OTUxNjc4REFEQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpENEZDRDdDOTMxODUxMUUxOTc3NEQ0OTUxNjc4REFEQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5MDRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4RjRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpE8SAQAAAD3SURBVHjaYsw5+YYBC5gGxN+BuBhdgoUBO1AFYlMgFgXiOGQJJjSFrEDcC8RaQMwPxEFAvBuXDSDFP6D4F1SMG4gtgFgBiB+g2/ATiL8C8UIgPgMV+wvEujDFyBoWQRVPB+IsqOa3QCyFrBhZgysQMwLxFCjfB4hFgPgVlH8DiOcha/jHgBu0ALEMEH9G1rAXqikHi4ZkIP4DxEuQNaQBMReUngjEdkAcDPU8KKROAPFp5GAFBSUPNHZToZEFM+wsEHtgiziQJmYg7gPiy0B8HIiTgNgRX0yD/FFzYdXZK0B8Fchei5GWgBI40xJQbjQtjdi0BBBgAAsUYVWmfe1CAAAAAElFTkSuQmCC') top right no-repeat;
+}
+#qunit-tests li.pass strong > span {color:#76B900;}
+#qunit-tests li.pass strong:first-child {
+ padding-left:20px;
+ background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5MTRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozODgyNDY5QzMxN0ExMUUxOTdFMkVCQkNENjFBMjc3RSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozODgyNDY5QjMxN0ExMUUxOTdFMkVCQkNENjFBMjc3RSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5MTRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5MTRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv7qI08AAAClSURBVHjaYvz//z8DKYClfBcjMeqUgFgQiM+yEKEYpHA3VFMYExEaVkEVg20ipKEDiF2g7LNAPIsJaqUgFsVpQFwOZb8H4nQQzQR13zuoAhgwhpoOA2FQGxiYkNw3E4phnoTZWgHEe2A6maC63yM54y6S4llA3InsTiaobhOYlUiKz0JNZ0DXAAL3gNgViFcjeRLZZkRMI7FhioyhBrzHFs4AAQYAz08iXvWgossAAAAASUVORK5CYII=') center left no-repeat;
+}
+
+#qunit-tests li.fail strong > span {color:#EE3324;}
+#qunit-tests li.fail strong:first-child {
+ padding-left:20px;
+ background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5MTRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzNBNEM0QzMxN0ExMUUxQjk0MUYyOEJCODA0OTM1OSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzNBNEM0QjMxN0ExMUUxQjk0MUYyOEJCODA0OTM1OSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5MTRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5MTRENzREMkRFMzBFMTExQkZCM0YxOUI1MEUyRUQ0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnO7dSIAAACtSURBVHjaYnxnrMIABEpA/B6K0YEgEBsD8VnBM7ffM0E5d6HYGIvi3UiYgQkqiCyJrAmZbwzTcBaKYZrOAHEaEM9E05wOIlig7nZFM20mmtM6gXgWzAYGJE1nsXgapLACxmFCkniPQwOKGLKGmVC3owMUcZiGDjTFs9BMhmuCxUM5muJ0qJ9Wo2lCcRII7IEFH9RPYbDQgaUCFqjVYdDkMQuLH9Khau6BOAABBgDmhyuetyQ3ywAAAABJRU5ErkJggg==') center left no-repeat;
+}
+
+#qunit-tests li ol {
+ margin:0;
+ padding:10px 0 0 0;
+ background-color: #fff;
+}
+
+#qunit-tests li ol li {
+ list-style-position: inside;
+ list-style-type:decimal;
+ *list-style-position: outside;
+}
+
+#qunit-tests table {
+ border-collapse: collapse;
+ margin-top: .2em;
+}
+
+#qunit-tests th {
+ text-align: right;
+ vertical-align: top;
+ padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+ vertical-align: top;
+}
+
+#qunit-tests pre {
+ margin: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+#qunit-tests del {
+ background-color: #add566;
+ color: #555;
+ text-decoration: none;
+}
+
+#qunit-tests ins {
+ background-color: #f5857c;
+ color: #555;
+ text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts {
+ color: #7B7979;
+ font-size:0.8em;
+ margin-left:10px;
+}
+
+b.counts b.passed, b.counts b.failed {
+ display:inline-block;
+ padding:0px 1px;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ color:#FFF;
+}
+
+b.counts b.passed {
+ background:#76b900;
+}
+
+b.counts b.failed {
+ background:#ee3324;
+ }
+
+
+#qunit-tests li li {
+ margin:0 0 5px;
+ padding: 0.4em 0.5em 0.4em 0.5em;
+ background-color: #fff;
+ border-bottom: none;
+ border-radius: 3px;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ overflow:auto;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #7B7979;
+ background-color: #fff;
+ border-left: 20px solid #76B900;
+}
+
+#qunit-tests .pass { color: #76B900; background-color: #FFF; border: 1px solid #add566; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999999; }
+
+
+/*** Failing Styles */
+#qunit-tests li.fail ol {
+ background:#f7f7f7;
+}
+
+#qunit-tests li li.fail {
+ color: #7B7979;
+ background-color: #fff;
+ border-left: 20px solid #EE3324;
+ white-space: pre;
+}
+
+#qunit-tests .fail { color: #EE3324; border: 1px solid #f5857c; background-color: #f7f7f7; }
+
+
+#qunit-tests .fail .test-actual,
+#qunit-tests .fail .test-expected { color: #999999; }
+
+
+
+/** Result */
+
+p#qunit-testresult {
+ padding: 10px 0;
+ font-weight:bold;
+ line-height:1.6em;
+ color: #7B7979;
+}
+
+p#qunit-testresult span.passed, p#qunit-testresult span.failed {
+ font-size:1.5em;
+ font-weight:bold;
+ display:inline-block;
+ padding:3px;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+p#qunit-testresult span.passed {
+ color:#FFF;
+ background:#76b900
+}
+
+p#qunit-testresult span.failed {
+ color:#FFF;
+ background:#ee3324;
+}
+
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+ width: 1000px;
+ height: 1000px;
+}
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/gabe.html b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/gabe.html
new file mode 100644
index 00000000..ea532475
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/gabe.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>QUnit Test Suite - Gabe Theme</title>
+ <link rel="stylesheet" href="gabe.css" type="text/css" media="screen">
+ <script type="text/javascript" src="../../qunit/qunit.js"></script>
+ <script type="text/javascript" src="../../test/test.js"></script>
+ <script type="text/javascript" src="../../test/deepEqual.js"></script>
+</head>
+<body>
+ <div id="qunit"></div>
+ <div id="qunit-fixture">test markup</div>
+</body>
+</html>
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/nv.css b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/nv.css
new file mode 100644
index 00000000..1453e4c0
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/nv.css
@@ -0,0 +1,208 @@
+/**
+ * QUnit Theme by NV
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+ font-family: "Helvetica Neue", Helvetica, sans-serif;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-wrapper, #qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Helvetica, sans-serif;
+ padding: 0.5em 0 0.5em 1.3em;
+
+ color: #8699a4;
+ background-color: #0d3349;
+
+ font-size: 1.5em;
+ line-height: 1em;
+ font-weight: normal;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: #c2ccd1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+ color: #fff;
+}
+
+#qunit-header label {
+ display: inline-block;
+}
+
+#qunit-banner.qunit-pass {
+ height: 3px;
+}
+#qunit-banner.qunit-fail {
+ height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+ padding: 0 0 0.5em 2em;
+}
+
+#qunit-testrunner-toolbar label {
+ margin-right: 1em;
+}
+
+#qunit-userAgent {
+ padding: 0.5em 0 0.5em 2.5em;
+ font-weight: normal;
+ color: #666;
+}
+
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-type: none;
+ background-color: #D2E0E6;
+}
+
+#qunit-tests li {
+ padding: 0.4em 0.5em 0.4em 2.5em;
+}
+
+#qunit-tests li strong {
+ font-weight: normal;
+ cursor: pointer;
+}
+
+#qunit-tests ol {
+ margin: 0.5em 0 1em;
+ background-color: #fff;
+}
+
+#qunit-tests table {
+ border-collapse: collapse;
+ margin-top: .2em;
+}
+
+#qunit-tests th {
+ text-align: right;
+ vertical-align: top;
+ padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+ vertical-align: top;
+}
+
+#qunit-tests pre {
+ margin: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+#qunit-tests del {
+ background-color: #e0f2be;
+ color: #374e0c;
+ text-decoration: none;
+}
+
+#qunit-tests ins {
+ background-color: #ffcaca;
+ color: #500;
+ text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.passed { color: #5E740B; }
+#qunit-tests b.failed {
+ color: #710909;
+}
+#qunit-tests li.fail .failed {
+ color: #E48989;
+}
+#qunit-tests li.fail .passed {
+ color: #E3C987;
+}
+
+#qunit-tests li li {
+ margin-left: 2.5em;
+ padding: 0.7em 0.5em 0.7em 0;
+ background-color: #fff;
+ border-bottom: none;
+}
+
+#qunit-tests b.counts {
+ font-weight: normal;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #5E740B;
+ background-color: #fff;
+}
+
+#qunit-tests .pass { color: #2f3424; background-color: #d9dec3; }
+#qunit-tests .pass .module-name { color: #636b51; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999999; }
+
+#qunit-banner.qunit-pass { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+ color: #710909;
+ background-color: #fff;
+}
+
+#qunit-tests .fail { color: #fff; background-color: #962323; }
+#qunit-tests .fail .module-name,
+#qunit-tests .fail .counts { color: #DEC1C1; }
+
+#qunit-tests .fail .test-actual { color: #B72F2F; }
+#qunit-tests .fail .test-expected { color: green; }
+
+#qunit-banner.qunit-fail,
+#qunit-testrunner-toolbar { color: #dec1c1; background-color: #962323; }
+
+
+/** Footer */
+
+#qunit-testresult {
+ padding: 0.5em 0.5em 0.5em 2.5em;
+ color: #333;
+}
+#qunit-testresult .module-name {
+ font-weight: bold;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+ width: 1000px;
+ height: 1000px;
+}
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/nv.html b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/nv.html
new file mode 100644
index 00000000..42084508
--- /dev/null
+++ b/www/crm/wp-content/plugins/civicrm/civicrm/bower_components/qunit/addons/themes/nv.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>QUnit Test Suite - NV Theme</title>
+ <link rel="stylesheet" href="nv.css" type="text/css" media="screen">
+ <script type="text/javascript" src="../../qunit/qunit.js"></script>
+ <script type="text/javascript" src="../../test/test.js"></script>
+ <script type="text/javascript" src="../../test/deepEqual.js"></script>
+</head>
+<body>
+ <div id="qunit"></div>
+ <div id="qunit-fixture">test markup</div>
+</body>
+</html>