quixote
Version:
CSS unit and integration testing
51 lines (40 loc) • 1.74 kB
JavaScript
// Copyright (c) 2016-2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
"use strict";
var ensure = require("../util/ensure.js");
var RenderState = require("../values/render_state.js");
var Position = require("../values/position.js");
var Descriptor = require("./descriptor.js");
var ElementRenderEdge = require("./element_render_edge.js");
var Span = require("./span.js");
var Center = require("./center.js");
var Me = module.exports = function ElementRender(element) {
var QElement = require("../q_element.js"); // break circular dependency
ensure.signature(arguments, [ QElement ]);
this.should = this.createShould();
this._element = element;
// properties
this.top = ElementRenderEdge.top(element);
this.right = ElementRenderEdge.right(element);
this.bottom = ElementRenderEdge.bottom(element);
this.left = ElementRenderEdge.left(element);
this.width = Span.create(this.left, this.right, "rendered width of " + element);
this.height = Span.create(this.top, this.bottom, "rendered height of " + element);
this.center = Center.x(this.left, this.right, "rendered center of " + element);
this.middle = Center.y(this.top, this.bottom, "rendered middle of " + element);
};
Descriptor.extend(Me);
Me.create = function create(element) {
return new Me(element);
};
Me.prototype.value = function value() {
if (this.top.value().equals(Position.noY())) return RenderState.notRendered();
else return RenderState.rendered();
};
Me.prototype.toString = function toString() {
return this._element.toString() + " rendering";
};
Me.prototype.convert = function convert(arg, type) {
if (type === "boolean") {
return arg ? RenderState.rendered() : RenderState.notRendered();
}
};