UNPKG

quixote

Version:

CSS unit and integration testing

41 lines (33 loc) 1.24 kB
// Copyright (c) 2015 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file. "use strict"; var ensure = require("./util/ensure.js"); var oop = require("./util/oop.js"); var shim = require("./util/shim.js"); var Me = module.exports = function Assertable() { ensure.unreachable("Assertable is abstract and should not be constructed directly."); }; Me.extend = oop.extendFn(Me); oop.makeAbstract(Me, []); Me.prototype.assert = function assert(expected, message) { ensure.signature(arguments, [ Object, [undefined, String] ]); if (message === undefined) message = "Differences found"; var diff = this.diff(expected); if (diff !== "") throw new Error(message + ":\n" + diff + "\n"); }; Me.prototype.diff = function diff(expected) { ensure.signature(arguments, [ Object ]); var result = []; var keys = shim.Object.keys(expected); var key, oneDiff, descriptor; for (var i = 0; i < keys.length; i++) { key = keys[i]; descriptor = this[key]; ensure.that( descriptor !== undefined, this + " doesn't have a property named '" + key + "'. Did you misspell it?" ); oneDiff = descriptor.diff(expected[key]); if (oneDiff !== "") result.push(oneDiff); } return result.join("\n"); };