UNPKG

quixote

Version:

CSS unit and integration testing

75 lines (56 loc) 1.95 kB
// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file. "use strict"; var ensure = require("../util/ensure.js"); var Value = require("./value.js"); var Pixels = require("./pixels.js"); var Me = module.exports = function Size(value) { ensure.signature(arguments, [ [Number, Pixels] ]); this._value = (typeof value === "number") ? Pixels.create(value) : value; }; Value.extend(Me); Me.create = function create(value) { return new Me(value); }; Me.createNone = function createNone() { ensure.signature(arguments, []); return new Me(Pixels.NONE); }; Me.prototype.compatibility = function compatibility() { return [ Me ]; }; Me.prototype.isNone = function isNone() { return this._value.isNone(); }; Me.prototype.plus = Value.safe(function plus(operand) { return new Me(this._value.plus(operand._value)); }); Me.prototype.minus = Value.safe(function minus(operand) { return new Me(this._value.minus(operand._value)); }); Me.prototype.times = function times(operand) { return new Me(this._value.times(operand)); }; Me.prototype.compare = Value.safe(function compare(that) { return this._value.compare(that._value); }); Me.prototype.diff = Value.safe(function diff(expected) { var actualValue = this._value; var expectedValue = expected._value; if (actualValue.equals(expectedValue)) return ""; if (isNone(expected) && !isNone(this)) return "rendered"; if (!isNone(expected) && isNone(this)) return "not rendered"; var desc = actualValue.compare(expectedValue) > 0 ? " bigger" : " smaller"; return actualValue.diff(expectedValue) + desc; }); Me.prototype.toString = function toString() { ensure.signature(arguments, []); if (isNone(this)) return "not rendered"; else return this._value.toString(); }; Me.prototype.toPixels = function toPixels() { ensure.signature(arguments, []); return this._value; }; function isNone(size) { return size._value.equals(Pixels.NONE); }