ModelHandle/test/tests/importeroff_test.js
2023-10-23 20:34:29 +02:00

298 lines
10 KiB
JavaScript

import * as assert from 'assert';
import * as OV from '../../source/engine/main.js';
import { ImportOffFile } from '../utils/testfiles.js';
import { ModelToObject, ModelToObjectSimple } from '../utils/testutils.js';
export default function suite ()
{
describe ('Off Importer', function () {
it ('single_triangle.off', function (done) {
ImportOffFile ('single_triangle.off', function (model) {
assert.ok (OV.CheckModel (model));
assert.deepStrictEqual (ModelToObject (model), {
name : '',
materials : [
{ name : '' }
],
meshes : [
{
name : '',
lines : [],
triangles : [
{
vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
}
]
}
]
});
done ();
});
});
it ('two_triangles.off', function (done) {
ImportOffFile ('two_triangles.off', function (model) {
assert.ok (OV.CheckModel (model));
assert.deepStrictEqual (ModelToObject (model), {
name : '',
materials : [
{ name : '' }
],
meshes : [
{
name : '',
lines : [],
triangles : [
{
vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
},
{
vertices : [0, 0, 1, 1, 0, 1, 1, 1, 1],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
}
]
}
]
});
done ();
});
});
it ('single_rectangle.off', function (done) {
ImportOffFile ('single_rectangle.off', function (model) {
assert.ok (OV.CheckModel (model));
assert.deepStrictEqual (ModelToObject (model), {
name : '',
materials : [
{ name : '' }
],
meshes : [
{
name : '',
lines : [],
triangles : [
{
vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
},
{
vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
}
]
}
]
});
done ();
});
});
it ('single_triangle_with_comments.off', function (done) {
ImportOffFile ('single_triangle_with_comments.off', function (model) {
assert.ok (OV.CheckModel (model));
assert.deepStrictEqual (ModelToObject (model), {
name : '',
materials : [
{ name : '' }
],
meshes : [
{
name : '',
lines : [],
triangles : [
{
vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
}
]
}
]
});
done ();
});
});
it ('cube.off', function (done) {
ImportOffFile ('cube.off', function (model) {
assert.ok (OV.CheckModel (model));
assert.deepStrictEqual (ModelToObjectSimple (model), {
name : '',
materials : [
{ name : '' }
],
meshes : [
{
name : '',
vertexCount : 8,
vertexColorCount : 0,
normalCount : 12,
uvCount : 0,
lineCount : 0,
triangleCount : 12,
boundingBox : {
min : [0, 0, 0],
max : [1, 1, 1]
}
}
]
});
done ();
});
});
it ('rectangle_vertex_colors_float.off', function (done) {
ImportOffFile ('rectangle_vertex_colors_float.off', function (model) {
assert.ok (OV.CheckModel (model));
assert.strictEqual (model.GetMaterial (0).vertexColors, true);
assert.deepStrictEqual (ModelToObject (model), {
name : '',
materials : [
{ name : '' }
],
meshes : [
{
name : '',
lines : [],
triangles : [
{
vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
},
{
vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
}
]
}
]
});
done ();
});
});
it ('rectangle_vertex_colors_float.off', function (done) {
ImportOffFile ('rectangle_vertex_colors_float.off', function (model) {
assert.ok (OV.CheckModel (model));
assert.strictEqual (model.GetMaterial (0).vertexColors, true);
assert.deepStrictEqual (ModelToObject (model), {
name : '',
materials : [
{ name : '' }
],
meshes : [
{
name : '',
lines : [],
triangles : [
{
vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
},
{
vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
}
]
}
]
});
done ();
});
});
it ('rectangle_face_colors_int.off', function (done) {
ImportOffFile ('rectangle_face_colors_int.off', function (model) {
assert.ok (OV.CheckModel (model));
assert.ok (OV.RGBColorIsEqual (model.GetMaterial (0).color, new OV.RGBColor (255, 0, 0)));
assert.strictEqual (model.GetMaterial (0).vertexColors, false);
assert.deepStrictEqual (ModelToObject (model), {
name : '',
materials : [
{ name : 'FF0000' }
],
meshes : [
{
name : '',
lines : [],
triangles : [
{
vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
},
{
vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
}
]
}
]
});
done ();
});
});
it ('rectangle_face_colors_int.off', function (done) {
ImportOffFile ('rectangle_face_colors_float.off', function (model) {
assert.ok (OV.CheckModel (model));
assert.ok (OV.RGBColorIsEqual (model.GetMaterial (0).color, new OV.RGBColor (255, 0, 0)));
assert.strictEqual (model.GetMaterial (0).vertexColors, false);
assert.deepStrictEqual (ModelToObject (model), {
name : '',
materials : [
{ name : 'FF0000' }
],
meshes : [
{
name : '',
lines : [],
triangles : [
{
vertices : [0, 0, 0, 1, 0, 0, 1, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
},
{
vertices : [0, 0, 0, 1, 1, 0, 0, 1, 0],
normals : [0, 0, 1, 0, 0, 1, 0, 0, 1],
uvs : [],
mat : 0
}
]
}
]
});
done ();
});
});
});
}