repo: janusweb action: commit revision: path_from: revision_from: 63e8b02addffa5d771e54d21f102f17468ae55b9: path_to: revision_to:
commit 63e8b02addffa5d771e54d21f102f17468ae55b9 Author: James BaicoianuDate: Mon Aug 15 04:44:48 2016 -0700 Added asset tests diff --git a/tests/assets/images.test.js b/tests/assets/images.test.js new file mode 100644 index 0000000000000000000000000000000000000000..bd6ce64cddb0f0ce37149c3dc0ea2c9818f361a0 --- /dev/null +++ b/tests/assets/images.test.js @@ -0,0 +1,105 @@ +describe("Elation Engine Assets", function() { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000; + + elation.config.set('dependencies.rootdir', '/base/build/'); + elation.config.set('dependencies.main', 'janusweb.js'); + elation.engine.assets.loadJSON([ + { "assettype": "image", "name": "image_jpg", "src": "media/assets/translator/reddit/trontile.jpg" }, + { "assettype": "image", "name": "image_png", "src": "media/assets/skybox/miramar_front.png" }, + { "assettype": "image", "name": "image_png_alpha", "src": "media/assets/linear_gradient.png" }, + { "assettype": "image", "name": "image_gif", "src": "media/assets/translator/errors/static.gif" }, + ], self.location.origin + "/base/build/"); + + beforeEach(function(done) { + done(); + }); + + function loadAsset(type, name) { + var asset = elation.engine.assets.find(type, name, true); + if (asset) { + var tex = asset.getInstance(); + } + return new Promise(function(succeed, fail) { + if (!tex) fail(asset); + elation.events.add(asset, 'asset_load', function() { + //console.log(type + ' loaded!', tex); + succeed(asset); + }); + elation.events.add(asset, 'asset_error', function() { + fail(asset); + }); + }); + } + it("should load a JPG image", function(done) { + loadAsset('image', 'image_jpg').then(function(asset) { + expect(asset).toBeDefined(); + expect(asset.loaded).toBe(true); + expect(asset.imagetype).toBe('jpg'); + var tex = asset.getInstance(); + expect(tex.image).toBeDefined(); + expect(asset.hasalpha).toBe(false); + done(); + }, function() { + expect(asset.loaded).toBe(true); + done(); + }); + }); + it("should load a PNG image", function(done) { + loadAsset('image', 'image_png').then(function(asset) { + expect(asset).toBeDefined(); + expect(asset.loaded).toBe(true); + expect(asset.imagetype).toBe('png'); + var tex = asset.getInstance(); + var tex = asset.getInstance(); + expect(tex.image).toBeDefined(); + expect(asset.hasalpha).toBe(false); + done(); + }, function() { + expect(asset.loaded).toBe(true); + var tex = asset.getInstance(); + done(); + }); + }); + it("should load a PNG image with alpha", function(done) { + loadAsset('image', 'image_png_alpha').then(function(asset) { + expect(asset).toBeDefined(); + expect(asset.loaded).toBe(true); + expect(asset.imagetype).toBe('png'); + var tex = asset.getInstance(); + expect(tex.image).toBeDefined(); + expect(asset.hasalpha).toBe(true); + done(); + }, function() { + expect(asset.loaded).toBe(true); + done(); + }); + }); + it("should load a GIF", function(done) { + loadAsset('image', 'image_gif').then(function(asset) { + expect(asset).toBeDefined(); + expect(asset.loaded).toBe(true); + expect(asset.imagetype).toBe('gif'); + var tex = asset.getInstance(); + expect(tex.image).toBeDefined(); + expect(asset.hasalpha).toBe(true); + done(); + }, function() { + expect(asset.loaded).toBe(true); + done(); + }); + }); + it("should load an image that's not specified in assets list", function(done) { + loadAsset('image', 'http://meobets.com:9876/base/build/media/assets/translator/errors/static.gif').then(function(asset) { + expect(asset).toBeDefined(); + expect(asset.loaded).toBe(true); + var tex = asset.getInstance(); + expect(tex.image).toBeDefined(); + expect(asset.hasalpha).toBe(true); + done(); + }, function(asset) { + expect(asset).toBeDefined(); + //expect(asset.loaded).toBe(true); + done(); + }); + }); +}); diff --git a/tests/assets/models.test.js b/tests/assets/models.test.js new file mode 100644 index 0000000000000000000000000000000000000000..a6f13780a2675b352d85dd8d1a60e55923a0331e --- /dev/null +++ b/tests/assets/models.test.js @@ -0,0 +1,193 @@ +describe("Elation Engine Assets", function() { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000; + 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_normalmap", "src": "", "mtl": "" }, + { "assettype": "model", "name": "model_dae_gz", "src": "http://www.janusvr.com/newlobby/room/V1/V1.dae.gz" }, + ], self.location.origin + "/base/build/"); + + beforeEach(function(done) { + done(); + }); + + function loadAsset(type, name) { + var asset = elation.engine.assets.find(type, name, true); + if (asset) { + var tex = asset.getInstance(); + } + return new Promise(function(succeed, fail) { + if (!tex) fail(asset); + elation.events.add(asset, 'asset_load', function() { + //console.log(type + ' loaded!', tex); + succeed(asset); + }); + elation.events.add(asset, 'asset_error', function() { + fail(asset); + }); + }); + } + + describe('OBJ', function() { + beforeEach(function(done) { + done(); + }); + var mesh; + it("should load an OBJ", function(done) { + loadAsset('model', 'model_obj').then(function(asset) { + expect(asset).toBeDefined(); + expect(asset.loaded).toBe(true); + var group = asset.getInstance(); + mesh = group.children[0].children[0].children[0]; + expect(mesh).toBeDefined(); + done(); + }, function(asset) { + expect(asset.loaded).toBe(true); + done(); + }); + }); + it('is a buffergeometry', function(done) { + 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); + done(); + }); + }); + + describe('OBJ+MTL', function() { + beforeEach(function(done) { + done(); + }); + var mesh; + it("should load an OBJ", function(done) { + loadAsset('model', 'model_obj_mtl').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? + expect(mesh).toBeDefined(); + done(); + }, function(asset) { + expect(asset.loaded).toBe(true); + done(); + }); + }); + it('is a buffergeometry', function(done) { + 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); + expect(mesh.geometry.attributes.uv.count).toBe(132); + 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'); + done(); + }); + }); + + describe('OBJ+MTL - textures', function() { + beforeEach(function(done) { + done(); + }); + var mesh; + it("should load an OBJ+MTL with textures", function(done) { + loadAsset('model', 'model_obj_textures').then(function(asset) { + expect(asset).toBeDefined(); + expect(asset.loaded).toBe(true); + var group = asset.getInstance(); + mesh = group.children[0].children[0].children[0]; + expect(mesh).toBeDefined(); + done(); + }, function(asset) { + expect(asset.loaded).toBe(true); + done(); + }); + }); + it('is a buffergeometry', function(done) { + 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); + 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'); + done(); + }); + }); + +/* + describe('DAE (gzipped)', function() { + beforeEach(function(done) { + done(); + }); + var mesh; + it("should load a gzipped DAE", function(done) { + loadAsset('model', 'model_dae_gz').then(function(asset) { + expect(asset).toBeDefined(); + expect(asset.loaded).toBe(true); + var group = asset.getInstance(); +console.log('derrr', asset, group); + mesh = group; + expect(mesh).toBeDefined(); + done(); + }, function(asset) { + expect(asset.loaded).toBe(true); + done(); + }); + }); + it('is a buffergeometry', function(done) { + 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); + expect(mesh.geometry.attributes.uv.count).toBe(132); + 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'); + done(); + }); + }); +*/ +/* + it("should load an OBJ with material+color", function(done) { + }); + it("should load an OBJ with material+texture", function(done) { + }); + it("should load an OBJ with material+texture+normalmap", function(done) { + }); + it("should load an OBJ with multiple objects", function(done) { + }); +*/ + + // load a model (dae) + // load a sound + // load a video +});
-----END OF PAGE-----