repo: janusweb action: commit revision: path_from: revision_from: faa29d397a1c9743bf0c6aecd5cf8c492125d9eb: path_to: revision_to:
commit faa29d397a1c9743bf0c6aecd5cf8c492125d9eb Author: James BaicoianuDate: Thu Dec 22 03:21:03 2016 -0800 Added model loading tests diff --git a/tests/assets/models.test.js b/tests/assets/models.test.js
--- a/tests/assets/models.test.js
+++ b/tests/assets/models.test.js
@@ -1,27 +1,36 @@
describe("Elation Engine Assets", function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000;
- elation.config.set('dependencies.rootdir', '/base/build/');
+console.log('now test models');
+ elation.config.set('dependencies.path', document.origin);
+ elation.config.set('dependencies.rootdir', 'base/build/');
elation.config.set('dependencies.main', 'janusweb.js');
elation.engine.assets.loadJSON([
{ "assettype": "model", "name": "model_obj", "src": "media/assets/primitives/cube.obj" },
{ "assettype": "model", "name": "model_obj_mtl", "src": "media/assets/translator/web/screensingle.obj", "mtl": "screensingle.mtl" },
- { "assettype": "model", "name": "model_obj_textures", "src": "http://vrsites.com/assets/Alt/2/index.obj", "mtl": "http://vrsites.com/assets/Alt/2/index.mtl" },
+ { "assettype": "model", "name": "model_obj_textures", "src": "media/tests/models/monkey-material-smooth.obj", "mtl": "monkey-material-smooth.mtl" },
{ "assettype": "model", "name": "model_obj_textures_normalmap", "src": "", "mtl": "" },
- { "assettype": "model", "name": "model_dae_gz", "src": "http://www.janusvr.com/newlobby/room/V1/V1.dae.gz" },
+ { "assettype": "model", "name": "model_dae_gz", "src": "https://janusweb.lnq.to:8089/www.janusvr.com/newlobby/room/V1/V1.dae.gz" },
], self.location.origin + "/base/build/");
beforeEach(function(done) {
done();
});
- function loadAsset(type, name) {
+ function loadAsset(type, name, eventlog) {
var asset = elation.engine.assets.find(type, name, true);
+ elation.events.add(asset, 'asset_load_queued,asset_load_start,asset_load_progress,asset_load_processing,asset_load_processed,asset_load_complete', function(ev) {
+ if (!eventlog[ev.type]) {
+ eventlog[ev.type] = [];
+ }
+ eventlog[ev.type].push(ev);
+ });
+ if (!eventlog) eventlog = {};
if (asset) {
var tex = asset.getInstance();
}
return new Promise(function(succeed, fail) {
if (!tex) fail(asset);
- elation.events.add(asset, 'asset_load', function() {
+ elation.events.add(asset, 'asset_load_complete', function() {
//console.log(type + ' loaded!', tex);
succeed(asset);
});
@@ -36,8 +45,9 @@ describe("Elation Engine Assets", function() {
done();
});
var mesh;
+ var eventlog = {};
it("should load an OBJ", function(done) {
- loadAsset('model', 'model_obj').then(function(asset) {
+ loadAsset('model', 'model_obj', eventlog).then(function(asset) {
expect(asset).toBeDefined();
expect(asset.loaded).toBe(true);
var group = asset.getInstance();
@@ -59,6 +69,13 @@ describe("Elation Engine Assets", function() {
expect(mesh.geometry.attributes.uv.count).toBe(36);
done();
});
+ it('fired all expected events', function(done) {
+ expect(eventlog.asset_load_queued.length).toBe(1);
+ expect(eventlog.asset_load_processing.length).toBe(1);
+ expect(eventlog.asset_load_processed.length).toBe(1);
+ expect(eventlog.asset_load_complete.length).toBe(1);
+ done();
+ });
});
describe('OBJ+MTL', function() {
@@ -66,12 +83,13 @@ describe("Elation Engine Assets", function() {
done();
});
var mesh;
+ var eventlog = {};
it("should load an OBJ", function(done) {
- loadAsset('model', 'model_obj_mtl').then(function(asset) {
+ loadAsset('model', 'model_obj_mtl', eventlog).then(function(asset) {
expect(asset).toBeDefined();
expect(asset.loaded).toBe(true);
var group = asset.getInstance();
- mesh = group.children[0].children[0].children[0].children[0]; // FIXME - why is this differemt from just OBJ?
+ mesh = group.children[0].children[0].children[0];
expect(mesh).toBeDefined();
done();
}, function(asset) {
@@ -90,10 +108,16 @@ describe("Elation Engine Assets", function() {
done();
});
it('has the right materials', function(done) {
- expect(mesh.material.type).toBe('MultiMaterial');
- expect(mesh.material.materials.length).toBe(2);
- expect(mesh.material.materials[0].type).toBe('MeshLambertMaterial');
- expect(mesh.material.materials[1].type).toBe('MeshPhongMaterial');
+ expect(mesh.material.type).toBe('MeshPhongMaterial');
+ done();
+ });
+ it('fired all expected events', function(done) {
+ expect(eventlog.asset_load_queued.length).toBe(1);
+ expect(eventlog.asset_load_start.length).toBe(1);
+ expect(eventlog.asset_load_progress.length).toBe(1);
+ expect(eventlog.asset_load_processing.length).toBe(1);
+ expect(eventlog.asset_load_processed.length).toBe(1);
+ expect(eventlog.asset_load_complete.length).toBe(1);
done();
});
});
@@ -103,8 +127,9 @@ describe("Elation Engine Assets", function() {
done();
});
var mesh;
+ var eventlog = {};
it("should load an OBJ+MTL with textures", function(done) {
- loadAsset('model', 'model_obj_textures').then(function(asset) {
+ loadAsset('model', 'model_obj_textures', eventlog).then(function(asset) {
expect(asset).toBeDefined();
expect(asset.loaded).toBe(true);
var group = asset.getInstance();
@@ -120,31 +145,44 @@ describe("Elation Engine Assets", function() {
expect(mesh.geometry.type).toBe('BufferGeometry');
done();
});
- it('has 36 vertices', function(done) {
- expect(mesh.geometry.attributes.position.count).toBe(36);
- expect(mesh.geometry.attributes.normal.count).toBe(36);
- expect(mesh.geometry.attributes.uv.count).toBe(36);
+ it('has 2904 vertices', function(done) {
+ expect(mesh.geometry.attributes.position.count).toBe(2904);
+ expect(mesh.geometry.attributes.normal.count).toBe(2904);
+ expect(mesh.geometry.attributes.uv.count).toBe(2904);
done();
});
it('has the right materials', function(done) {
- expect(mesh.material.type).toBe('MultiMaterial');
- expect(mesh.material.materials.length).toBe(4);
- expect(mesh.material.materials[0].type).toBe('MeshLambertMaterial');
- expect(mesh.material.materials[1].type).toBe('MeshPhongMaterial');
- expect(mesh.material.materials[2].type).toBe('MeshPhongMaterial');
- expect(mesh.material.materials[3].type).toBe('MeshPhongMaterial');
+ expect(mesh.material.type).toBe('MeshPhongMaterial');
+
+ expect(mesh.material.map).toBeDefined();
+ expect(mesh.material.map.image).toBeDefined();
+console.log(mesh.material.map.image);
+ expect(mesh.material.bumpMap).toBeDefined();
+ expect(mesh.material.bumpMap.image).toBeDefined();
+ console.log(mesh);
+ done();
+ });
+ it('fired all expected events', function(done) {
+ expect(eventlog.asset_load_queued).toBeDefined();
+ expect(eventlog.asset_load_queued.length).toBe(1);
+ expect(eventlog.asset_load_processing).toBeDefined();
+ expect(eventlog.asset_load_processing.length).toBe(1);
+ expect(eventlog.asset_load_processed).toBeDefined();
+ expect(eventlog.asset_load_processed.length).toBe(1);
+ expect(eventlog.asset_load_complete).toBeDefined();
+ expect(eventlog.asset_load_complete.length).toBe(1);
done();
});
});
-/*
describe('DAE (gzipped)', function() {
beforeEach(function(done) {
done();
});
var mesh;
+ var eventlog = {};
it("should load a gzipped DAE", function(done) {
- loadAsset('model', 'model_dae_gz').then(function(asset) {
+ loadAsset('model', 'model_dae_gz', eventlog).then(function(asset) {
expect(asset).toBeDefined();
expect(asset.loaded).toBe(true);
var group = asset.getInstance();
@@ -158,9 +196,10 @@ console.log('derrr', asset, group);
});
});
it('is a buffergeometry', function(done) {
- expect(mesh.geometry.type).toBe('BufferGeometry');
+ //expect(mesh.geometry.type).toBe('BufferGeometry');
done();
});
+/*
it('has 132 vertices', function(done) {
expect(mesh.geometry.attributes.position.count).toBe(132);
expect(mesh.geometry.attributes.normal.count).toBe(132);
@@ -174,8 +213,15 @@ console.log('derrr', asset, group);
expect(mesh.material.materials[1].type).toBe('MeshPhongMaterial');
done();
});
- });
*/
+ it('fired all expected events', function(done) {
+ expect(eventlog.asset_load_queued.length).toBe(1);
+ expect(eventlog.asset_load_processing.length).toBe(1);
+ expect(eventlog.asset_load_processed.length).toBe(1);
+ expect(eventlog.asset_load_complete.length).toBe(1);
+ done();
+ });
+ });
/*
it("should load an OBJ with material+color", function(done) {
});
diff --git a/tests/karma.conf.js b/tests/karma.conf.js
--- a/tests/karma.conf.js
+++ b/tests/karma.conf.js
@@ -22,7 +22,8 @@ module.exports = function(config) {
{pattern: 'build/media/**', watched: false, included: false, served: true},
'tests/imagediff.js',
//{pattern: 'tests/*.test.js', watched: true, included: true, served: true},
- {pattern: 'tests/assets/*.test.js', watched: true, included: true, served: true},
+ //{pattern: 'tests/assets/*.test.js', watched: true, included: true, served: true},
+ {pattern: 'tests/assets/models.test.js', watched: true, included: true, served: true},
],
-----END OF PAGE-----