ModelHandle/test/tests/importero3dv_test.js

137 lines
5.0 KiB
JavaScript

import * as assert from 'assert';
import * as OV from '../../source/engine/main.js';
import { ImportO3dvFile } from '../utils/testfiles.js';
import { ModelNodesToTree } from '../utils/testutils.js';
export default function suite ()
{
describe ('O3dv Importer', function () {
it ('translateandrotate.o3dv', function (done) {
ImportO3dvFile ('translateandrotate.o3dv', function (model) {
assert.ok (OV.CheckModel (model));
assert.deepStrictEqual (ModelNodesToTree (model), {
name : '<Root>',
childNodes : [
{
name : 'Translated',
childNodes : [
{
name : '',
childNodes : [],
meshNames : ['Cube']
}
],
meshNames : []
},
{
name : 'Rotated',
childNodes : [
{
name : 'Translated and Rotated',
childNodes : [
{
name : '',
childNodes : [],
meshNames : ['Cube']
}
],
meshNames : []
}
],
meshNames : []
},
{
name : '',
childNodes : [],
meshNames : ['Cube']
}
],
meshNames : []
});
assert.strictEqual (model.MeshInstanceCount (), 3);
let boundingBox = OV.GetBoundingBox (model);
assert.ok (OV.CoordIsEqual3D (boundingBox.min, new OV.Coord3D (-1.0, 0.0, 0.0)));
assert.ok (OV.CoordIsEqual3D (boundingBox.max, new OV.Coord3D (3.0, 3.0, 1.0)));
done ();
});
});
it ('solids.o3dv', function (done) {
ImportO3dvFile ('solids.o3dv', function (model) {
assert.ok (OV.CheckModel (model));
assert.deepStrictEqual (ModelNodesToTree (model), {
name : '<Root>',
childNodes : [
{
name : 'Tetrahedral',
childNodes : [
{
name : '',
childNodes : [],
meshNames : ['Tetrahedron']
}
],
meshNames : []
},
{
name : 'Octahedral',
childNodes : [
{
name : '',
childNodes : [],
meshNames : ['Hexahedron']
},
{
name : '',
childNodes : [],
meshNames : ['Octahedron']
}
],
meshNames : []
}, {
name : 'Icosahedral',
childNodes : [
{
name : '',
childNodes : [],
meshNames : ['Dodecahedron']
},
{
name : '',
childNodes : [],
meshNames : ['Icosahedron']
}
],
meshNames : []
}
],
meshNames : []
});
assert.strictEqual (model.MaterialCount (), 5);
assert.strictEqual (model.MeshCount (), 5);
assert.strictEqual (model.MeshInstanceCount (), 5);
assert.ok (OV.IsTwoManifold (model));
assert.ok (OV.IsEqual (OV.CalculateVolume (model), 8.707448863695035));
assert.ok (OV.IsEqual (OV.CalculateSurfaceArea (model), 39.636169009449105));
assert.strictEqual (model.PropertyGroupCount (), 1);
assert.strictEqual (model.GetPropertyGroup (0).PropertyCount (), 2);
for (let i = 0; i < model.MeshCount (); i++) {
let mesh = model.GetMesh (i);
assert.strictEqual (mesh.PropertyGroupCount (), 1);
assert.strictEqual (mesh.GetPropertyGroup (0).PropertyCount (), 5);
}
done ();
});
});
});
}