topical media & game development
mobile-sugar-test-SceneTest.js / js
(function() {
'use strict';
module('Scene');
test('constructor, properties, and getters', function() {
var scn1 = new DivSugar.Scene('scene1');
ok(scn1.div instanceof HTMLDivElement);
strictEqual(scn1.div.id, 'scene1');
strictEqual(scn1.div.sugar, scn1);
strictEqual(scn1.getParent(), null);
strictEqual(scn1.getViewAngle(), 45);
nearlyEqual(scn1.getPerspective(), 482.8427);
strictEqual(scn1.getWidth(), 400);
strictEqual(scn1.getHeight(), 300);
strictEqual(scn1.getViewWidth(), 400);
strictEqual(scn1.getViewHeight(), 300);
strictEqual(scn1.getPositionX(), 0);
strictEqual(scn1.getPositionY(), 0);
strictEqual(scn1.getVisible(), true);
strictEqual(scn1.getClip(), true);
strictEqual(scn1.getOpacity(), 1);
strictEqual(scn1.getImage(), '#0000ff');
strictEqual(scn1.getImageClipU1(), 0);
strictEqual(scn1.getImageClipV1(), 0);
strictEqual(scn1.getImageClipU2(), 1);
strictEqual(scn1.getImageClipV2(), 1);
var scn2 = new DivSugar.Scene();
strictEqual(scn2.div.id, '');
});
test('append', function() {
var scn = new DivSugar.Scene();
var node = new DivSugar.Node();
scn.append(node);
strictEqual(node.getParent(), scn);
ok(scn.append(node).append(node));
});
test('appendTo', function() {
var div = document.createElement('div');
var scn = new DivSugar.Scene();
scn.appendTo(div);
strictEqual(scn.getParent(), div);
ok(scn.appendTo(div).appendTo(div));
});
test('remove', function() {
var scn = new DivSugar.Scene();
var node = new DivSugar.Node();
scn.append(node);
scn.remove(node);
strictEqual(node.getParent(), null);
ok(scn.remove(node).remove(node));
});
test('setViewAngle', function() {
var scn = new DivSugar.Scene();
scn.setSize(800, 600);
scn.setViewAngle(90);
strictEqual(scn.getViewAngle(), 90);
nearlyEqual(scn.getPerspective(), 400);
ok(scn.setViewAngle(90).setViewAngle(90));
});
test('setSize', function() {
var scn = new DivSugar.Scene();
scn.setSize(10, 20);
nearlyEqual(scn.getPerspective(), 12.0711);
strictEqual(scn.getWidth(), 10);
strictEqual(scn.getHeight(), 20);
strictEqual(scn.getViewWidth(), 10);
strictEqual(scn.getViewHeight(), 20);
scn.setSize(100, 200, 300, 400);
nearlyEqual(scn.getPerspective(), 362.1320);
strictEqual(scn.getWidth(), 100);
strictEqual(scn.getHeight(), 200);
strictEqual(scn.getViewWidth(), 300);
strictEqual(scn.getViewHeight(), 400);
ok(scn.setSize(1, 1).setSize(1, 1));
});
test('setPosition', function() {
var scn = new DivSugar.Scene();
scn.setPosition(10, 20);
strictEqual(scn.getPositionX(), 10);
strictEqual(scn.getPositionY(), 20);
raises(function() {
scn.setPosition(1, 2, 3);
}, function(e) {
strictEqual(e, 'DivSugar: Invalid number of arguments');
return true;
});
ok(scn.setPosition(0, 0).setPosition(0, 0));
});
test('setVisible', function() {
var scn = new DivSugar.Scene();
scn.setVisible(false);
strictEqual(scn.getVisible(), false);
ok(scn.setVisible(true).setVisible(true));
});
test('setClip', function() {
var scn = new DivSugar.Scene();
scn.setClip(false);
strictEqual(scn.getClip(), false);
ok(scn.setClip(true).setClip(true));
});
test('setOpacity', function() {
var scn = new DivSugar.Scene();
scn.setOpacity(0.5);
strictEqual(scn.getOpacity(), 0.5);
ok(scn.setOpacity(0).setOpacity(0));
});
test('setImage', function() {
var scn = new DivSugar.Scene();
scn.setImage('../examples/assets/coin.png');
strictEqual(scn.getImage(), '../examples/assets/coin.png');
scn.setImage('../examples/assets/coin.png', function(width, height) {
start();
strictEqual(width, 400);
strictEqual(height, 200);
});
stop();
ok(scn.setImage(null).setImage(null));
});
test('setImageClip', function() {
var scn = new DivSugar.Scene();
scn.setImageClip(0.1, 0.2, 0.3, 0.4);
strictEqual(scn.getImageClipU1(), 0.1);
strictEqual(scn.getImageClipV1(), 0.2);
strictEqual(scn.getImageClipU2(), 0.3);
strictEqual(scn.getImageClipV2(), 0.4);
scn.setImageClip(-1, -2, -3, -4);
strictEqual(scn.getImageClipU1(), 0);
strictEqual(scn.getImageClipV1(), 0);
strictEqual(scn.getImageClipU2(), 0);
strictEqual(scn.getImageClipV2(), 0);
scn.setImageClip(2, 3, 4, 5);
strictEqual(scn.getImageClipU1(), 1);
strictEqual(scn.getImageClipV1(), 1);
strictEqual(scn.getImageClipU2(), 1);
strictEqual(scn.getImageClipV2(), 1);
ok(scn.setImageClip(0, 0, 0, 0).setImageClip(0, 0, 0, 0));
});
test('adjustLayout', function() {
var scn = new DivSugar.Scene();
scn.setSize(100, 200, 300, 400);
scn.adjustLayout(1000, 2000, 'center');
nearlyEqual(scn.getWidth(), 100);
nearlyEqual(scn.getHeight(), 200);
nearlyEqual(scn.getPositionX(), 450);
nearlyEqual(scn.getPositionY(), 900);
scn.adjustLayout(1000, 2000, 'contain');
nearlyEqual(scn.getWidth(), 1000);
nearlyEqual(scn.getHeight(), 1333.3333);
nearlyEqual(scn.getPositionX(), 0);
nearlyEqual(scn.getPositionY(), 333.3333);
scn.adjustLayout(2000, 1000, 'contain');
nearlyEqual(scn.getWidth(), 750);
nearlyEqual(scn.getHeight(), 1000);
nearlyEqual(scn.getPositionX(), 625);
nearlyEqual(scn.getPositionY(), 0);
scn.adjustLayout(1000, 2000, 'cover');
nearlyEqual(scn.getWidth(), 1500);
nearlyEqual(scn.getHeight(), 2000);
nearlyEqual(scn.getPositionX(), -250);
nearlyEqual(scn.getPositionY(), 0);
scn.adjustLayout(2000, 1000, 'cover');
nearlyEqual(scn.getWidth(), 2000);
nearlyEqual(scn.getHeight(), 2666.6667);
nearlyEqual(scn.getPositionX(), 0);
nearlyEqual(scn.getPositionY(), -833.3333);
raises(function() {
scn.adjustLayout(1000, 2000, 'dummy');
}, function(e) {
strictEqual(e, "DivSugar: Unknown layout style 'dummy'");
return true;
});
ok(scn.adjustLayout(1, 1, 'center').adjustLayout(1, 1, 'center'));
});
test('getLocalPosition', function() {
var vec = new DivSugar.Vector();
var scn = new DivSugar.Scene();
scn.setSize(100, 200, 300, 400).appendTo(document.body);
scn.getLocalPosition(100, 100, vec);
ok(vec.x !== 0 && vec.y !== 0 && vec.z === 0);
ok(scn.getLocalPosition(0, 0, vec).getLocalPosition(0, 0, vec));
document.body.removeChild(scn.div);
});
})();
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.