fabric.js/test/unit/ellipse.js
2011-05-11 18:17:21 -04:00

130 lines
No EOL
3.4 KiB
JavaScript

(function(){
module('fabric.Ellipse');
test('constructor', function() {
ok(fabric.Ellipse);
var ellipse = new fabric.Ellipse();
ok(ellipse instanceof fabric.Ellipse, 'should inherit from fabric.Ellipse');
ok(ellipse instanceof fabric.Object, 'should inherit from fabric.Object');
equals(ellipse.type, 'ellipse');
});
test('complexity', function() {
var ellipse = new fabric.Ellipse();
ok(typeof ellipse.complexity == 'function');
equals(ellipse.complexity(), 1);
});
test('toObject', function() {
var ellipse = new fabric.Ellipse();
var defaultProperties = {
'type': 'ellipse',
'left': 0,
'top': 0,
'width': 0,
'height': 0,
'fill': 'rgb(0,0,0)',
'overlayFill': null,
'stroke': null,
'strokeWidth': 1,
'scaleX': 1,
'scaleY': 1,
'angle': 0,
'flipX': false,
'flipY': false,
'opacity': 1,
'rx': 0,
'ry': 0,
'selectable': true
};
ok(typeof ellipse.toObject == 'function');
same(defaultProperties, ellipse.toObject());
ellipse.set('left', 100).set('top', 200).set('rx', 15).set('ry', 25);
var augmentedProperties = fabric.util.object.extend(fabric.util.object.clone(defaultProperties), {
left: 100,
top: 200,
rx: 15,
ry: 25
});
same(augmentedProperties, ellipse.toObject());
});
test('render', function() {
var ellipse = new fabric.Ellipse();
ellipse.set('rx', 0).set('ry', 0);
var wasRenderCalled = false;
ellipse._render = function(){
wasRenderCalled = true;
}
ellipse.render({});
equals(wasRenderCalled, false, 'should not render when rx/ry are 0');
});
test('fromElement', function() {
ok(typeof fabric.Ellipse.fromElement == 'function');
var elEllipse = document.createElement('ellipse'),
rx = 5,
ry = 7,
left = 12,
top = 15,
fill = 'ff5555',
fillOpacity = 0.5,
strokeWidth = 2;
elEllipse.setAttribute('rx', rx);
elEllipse.setAttribute('ry', ry);
elEllipse.setAttribute('cx', left);
elEllipse.setAttribute('cy', top);
elEllipse.setAttribute('fill', fill);
elEllipse.setAttribute('fill-opacity', fillOpacity);
elEllipse.setAttribute('stroke-width', strokeWidth);
var oEllipse = fabric.Ellipse.fromElement(elEllipse);
ok(oEllipse instanceof fabric.Ellipse);
equals(oEllipse.get('rx'), rx);
equals(oEllipse.get('ry'), ry);
equals(oEllipse.get('left'), left);
equals(oEllipse.get('top'), top);
equals(oEllipse.get('fill'), fill);
equals(oEllipse.get('opacity'), fillOpacity);
equals(oEllipse.get('strokeWidth'), strokeWidth);
});
test('fromObject', function() {
ok(typeof fabric.Ellipse == 'function');
var left = 112,
top = 234,
rx = 13.45,
ry = 14.78,
fill = 'ff5555';
var ellipse = fabric.Ellipse.fromObject({
left: left, top: top, rx: rx, ry: ry, fill: fill
});
ok(ellipse instanceof fabric.Ellipse);
equals(ellipse.get('left'), left);
equals(ellipse.get('top'), top);
equals(ellipse.get('rx'), rx);
equals(ellipse.get('ry'), ry);
equals(ellipse.get('fill'), fill);
var expected = ellipse.toObject();
var actual = fabric.Ellipse.fromObject(expected).toObject();
same(expected, actual);
});
})();