pixi.js/test/functional/example-1-basics/index.js
Dr. Kibitz da4c67d38b Squashed commit of the following (unittest-refactor):
commit 9887e45976fc5211a4393e588d278a5e10baf06c
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Tue Sep 3 10:54:13 2013 -0700

    FIX: Ellipse getBounds method is not static

commit b3b359ad1c0fae412209705b01081dd231383656
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Tue Sep 3 10:53:41 2013 -0700

    More unit testing

commit dafbd1dbb03364b6d54db0cad26c4f02a8b9efe1
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Sun Sep 1 16:04:29 2013 -0700

    Remove unused karma plugin

commit 43209bfb59263278d2dc3561d06926ad515c4147
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Sun Sep 1 15:28:21 2013 -0700

    Add Travis CI status image to README

commit 2e38ba370bc05c239736155dcb06e34b47abf938
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Sun Sep 1 15:16:54 2013 -0700

    typo

commit b8898030da4d3e7b446ebb4ddeb30e8fc0adcf39
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Sun Sep 1 15:13:33 2013 -0700

    Lint test files, jsthint:test is now part of the test task

commit ea414dd1d734b39523174bd86d0cc58e920a89d2
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Sun Sep 1 15:11:50 2013 -0700

    Make all boilerplate tests, and an actual start to writing some real tests

commit 9e09c87997ae924989da4e1685f3a94636ab64de
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Sun Sep 1 14:37:51 2013 -0700

    Add back serving png files, convert to spaces

commit b45b1650c2e812a9cdb1165d96fba7b14bbdfab7
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Sun Sep 1 00:55:57 2013 -0700

    Comment out functional tests for now

commit 3a350bf9e4d9fea470ad8e734dfc3542db74ccc8
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Sat Aug 31 23:53:35 2013 -0700

    Removed quint, added karma, added resemble.js, refactored unit tests for mocha, added first example visual test

    run with:
    grunt travis

    You should see a brewer open and eventually see the spinning bunny. Then in the terminal, you should see the tests running where it matches frames 30, 60, and 90.

    Conflicts:
    	package.json

commit ac4c6de388e7a37786c9c4a6b2c95e22ec26b05d
Author: Dr. Kibitz <info@drkibitz.com>
Date:   Sat Aug 31 23:33:23 2013 -0700

    Remove trailing whitespace
2013-10-01 15:24:08 -07:00

133 lines
4.1 KiB
JavaScript

describe('Example 1 - Basics', function () {
'use strict';
var baseUri = '/base/test/functional/example-1-basics';
var expect = chai.expect;
var currentFrame = 0;
var frameEvents = {};
var stage;
var renderer;
var bunny;
function onFrame(frame, callback) {
frameEvents[frame] = callback;
}
function animate() {
currentFrame += 1;
requestAnimFrame( animate );
// just for fun, lets rotate mr rabbit a little
bunny.rotation += 0.1;
// render the stage
renderer.render(stage);
if (frameEvents[currentFrame])
frameEvents[currentFrame](currentFrame);
}
function initScene() {
// create an new instance of a pixi stage
stage = new PIXI.Stage(0x66FF99);
// create a renderer instance
renderer = PIXI.autoDetectRenderer(400, 300);
console.log('Is PIXI.WebGLRenderer: ' + (renderer instanceof PIXI.WebGLRenderer));
// add the renderer view element to the DOM
document.body.appendChild(renderer.view);
requestAnimFrame( animate );
// create a texture from an image path
var texture = PIXI.Texture.fromImage(baseUri + "/bunny.png");
// create a new Sprite using the texture
bunny = new PIXI.Sprite(texture);
// center the sprites anchor point
bunny.anchor.x = 0.5;
bunny.anchor.y = 0.5;
// move the sprite t the center of the screen
bunny.position.x = 200;
bunny.position.y = 150;
stage.addChild(bunny);
}
it('assets loaded', function (done) {
var loader = new PIXI.AssetLoader([
baseUri + '/bunny.png',
baseUri + '/frame-30.png',
baseUri + '/frame-60.png',
baseUri + '/frame-90.png'
]);
// loader.on('onProgress', function (event) {
// console.log(event.content);
// });
loader.on('onComplete', function (event) {
done();
initScene();
});
loader.load();
});
it('frame 30 should match', function (done) {
this.timeout(700);
onFrame(30, function () {
var str = renderer.view.toDataURL('image/png');
//console.log('<img src="' + str + '" />');
resemble(str)
.compareTo(baseUri + '/frame-30.png')
.onComplete(function (data) {
expect(data).to.be.an('object');
expect(data.isSameDimensions).to.equal(true);
expect(data.misMatchPercentage).to.be.below(0.2);
done();
});
});
});
it('frame 60 should match', function (done) {
this.timeout(1200);
onFrame(60, function () {
var str = renderer.view.toDataURL('image/png');
//console.log('<img src="' + str + '" />');
resemble(str)
.compareTo(baseUri + '/frame-60.png')
.onComplete(function (data) {
expect(data).to.be.an('object');
expect(data.isSameDimensions).to.equal(true);
expect(data.misMatchPercentage).to.be.below(0.2);
done();
});
});
});
it('frame 90 should match', function (done) {
this.timeout(1700);
onFrame(90, function () {
var str = renderer.view.toDataURL('image/png');
//console.log('<img src="' + str + '" />');
resemble(str)
.compareTo(baseUri + '/frame-90.png')
.onComplete(function (data) {
expect(data).to.be.an('object');
expect(data.isSameDimensions).to.equal(true);
expect(data.misMatchPercentage).to.be.below(0.2);
done();
});
});
});
// it('capture something', function (done) {
// this.timeout(2000000);
// onFrame(30, function () {
// var img = new Image();
// img.src = renderer.view.toDataURL('image/png');
// document.body.appendChild(img);
// });
// });
});