extjs-gpl
Version:
GPL licensed version of Sencha Ext JS
127 lines (110 loc) • 4.34 kB
JavaScript
describe("Ext.draw.sprite.Instancing", function () {
describe("'template' config", function () {
it("should set the template's parent to the instancing sprite", function () {
var template = new Ext.draw.sprite.Rect(),
instancing = new Ext.draw.sprite.Instancing({
template: template
});
expect(template.getParent()).toBe(instancing);
instancing.destroy();
});
it("should destroy the template when destroyed", function () {
var template = new Ext.draw.sprite.Rect(),
instancing = new Ext.draw.sprite.Instancing({
template: template
});
instancing.destroy();
expect(instancing.isDestroyed).toBe(true);
});
});
describe("'instances' config", function () {
it("should create instances of the template from array of config objects", function () {
var template = new Ext.draw.sprite.Circle({
cx: 200,
r: 60,
fillStyle: '#00ff00'
}),
instancing = new Ext.draw.sprite.Instancing({
template: template,
instances: [
{
cy: 150,
r: 30,
fillStyle: '#ff0000'
},
{
cy: 300
}
]
});
expect(instancing.getCount()).toBe(2);
expect(instancing.get(0).cx).toBe(200);
expect(instancing.get(0).r).toBe(30);
expect(instancing.get(1).fillStyle).toBe('#00ff00');
instancing.destroy();
});
it("should destroy the template when destroyed", function () {
var template = new Ext.draw.sprite.Rect(),
instancing = new Ext.draw.sprite.Instancing({
template: template
});
instancing.destroy();
expect(instancing.isDestroyed).toBe(true);
});
});
describe("hitTest", function () {
var sprite, instancingSprite, surface, container;
beforeEach(function () {
container = new Ext.draw.Container();
surface = new Ext.draw.Surface();
sprite = new Ext.draw.sprite.Circle({
hidden: false,
globalAlpha: 1,
fillOpacity: 1,
strokeOpacity: 1,
fillStyle: 'red',
strokeStyle: 'red'
});
instancingSprite = new Ext.draw.sprite.Instancing({
template: sprite
});
surface.add(instancingSprite);
container.add(surface);
});
afterEach(function () {
Ext.destroy(sprite, instancingSprite, surface, container);
});
it("should return an object with the 'sprite' property set to the instancing sprite, " +
"'template' property set to the instancing template, " +
"'instance' property set to the attributes of the instance, " +
"'index' property set to the index of the instance, " +
"and 'isInstance' property set to true", function () {
instancingSprite.add({
r: 50,
cx: 300,
cy: 300
});
instancingSprite.add({
r: 100,
cx: 100,
cy: 100
});
var result = instancingSprite.hitTest([90, 90]);
expect(result.isInstance).toBe(true);
expect(result.instance).toBe(instancingSprite.get(1));
expect(result.index).toBe(1);
expect(result.template).toBe(sprite);
expect(result.sprite).toBe(instancingSprite);
});
it("should return null for hidden instances", function () {
instancingSprite.add({
r: 100,
cx: 100,
cy: 100,
hidden: true
});
var result = instancingSprite.hitTest([90, 90]);
expect(result).toBe(null);
});
});
});