327 lines
13 KiB
JavaScript
327 lines
13 KiB
JavaScript
var assert = require ('assert');
|
|
var path = require ('path');
|
|
|
|
function ImportFilesWithImporter (importer, files, callbacks)
|
|
{
|
|
let settings = new OV.ImportSettings ();
|
|
importer.ImportFiles (files, OV.FileSource.File, settings, {
|
|
onFilesLoaded : function () {
|
|
|
|
},
|
|
onImportSuccess : function (importResult) {
|
|
callbacks.success (importer, importResult);
|
|
},
|
|
onImportError : function (importError) {
|
|
callbacks.error (importer, importError);
|
|
}
|
|
});
|
|
}
|
|
|
|
function ImportFiles (files, callbacks)
|
|
{
|
|
let importer = new OV.Importer ();
|
|
ImportFilesWithImporter (importer, files, callbacks);
|
|
}
|
|
|
|
describe ('Importer Test', function () {
|
|
it ('Empty File List', function (done) {
|
|
let files = [];
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert.fail ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.strictEqual (importError.code, OV.ImportErrorCode.NoImportableFile);
|
|
done ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Not existing file', function (done) {
|
|
let files = [
|
|
new FileObject ('', 'obj/missing.obj')
|
|
];
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert.fail ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.strictEqual (importError.code, OV.ImportErrorCode.NoImportableFile);
|
|
done ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Not importable file', function (done) {
|
|
let files = [
|
|
new FileObject ('', 'wrong.ext')
|
|
];
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert.fail ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.strictEqual (importError.code, OV.ImportErrorCode.NoImportableFile);
|
|
done ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Wrong file', function (done) {
|
|
let files = [
|
|
new FileObject ('', '3ds/wrong.3ds')
|
|
];
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert.fail ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.strictEqual (importError.code, OV.ImportErrorCode.ImportFailed);
|
|
done ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Single file', function (done) {
|
|
let files = [
|
|
new FileObject ('', 'obj/single_triangle.obj')
|
|
];
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['single_triangle.obj']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
done ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Multiple files', function (done) {
|
|
let files = [
|
|
new FileObject ('', 'obj/cube_with_materials.obj'),
|
|
new FileObject ('', 'obj/cube_with_materials.mtl'),
|
|
new FileObject ('', 'obj/cube_texture.png')
|
|
]
|
|
|
|
let theImporter = new OV.Importer ();
|
|
ImportFilesWithImporter (theImporter, files, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj', 'cube_with_materials.mtl', 'cube_texture.png']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
done ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Missing files', function (done) {
|
|
let files = [];
|
|
files.push (new FileObject ('', 'obj/cube_with_materials.obj'));
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj']);
|
|
assert.deepStrictEqual (importResult.missingFiles, ['cube_with_materials.mtl']);
|
|
files.push (new FileObject ('', 'obj/cube_with_materials.mtl'));
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj', 'cube_with_materials.mtl']);
|
|
assert.deepStrictEqual (importResult.missingFiles, ['cube_texture.png']);
|
|
files.push (new FileObject ('', 'obj/cube_texture.png'));
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj', 'cube_with_materials.mtl', 'cube_texture.png']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
done ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
it ('Missing texture multiple times', function (done) {
|
|
let files = [
|
|
new FileObject ('', 'obj/two_materials_same_texture.obj'),
|
|
new FileObject ('', 'obj/two_materials_same_texture.mtl'),
|
|
];
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['two_materials_same_texture.obj', 'two_materials_same_texture.mtl']);
|
|
assert.deepStrictEqual (importResult.missingFiles, ['texture.png']);
|
|
done ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Append Missing files', function (done) {
|
|
let theImporter = new OV.Importer ();
|
|
ImportFilesWithImporter (theImporter, [new FileObject ('', 'obj/cube_with_materials.obj')], {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj']);
|
|
assert.deepStrictEqual (importResult.missingFiles, ['cube_with_materials.mtl']);
|
|
ImportFilesWithImporter (theImporter, [new FileObject ('', 'obj/cube_with_materials.mtl')], {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj', 'cube_with_materials.mtl']);
|
|
assert.deepStrictEqual (importResult.missingFiles, ['cube_texture.png']);
|
|
ImportFilesWithImporter (theImporter, [new FileObject ('', 'obj/cube_texture.png')], {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj', 'cube_with_materials.mtl', 'cube_texture.png']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
done ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Reuse importer', function (done) {
|
|
let files1 = [
|
|
new FileObject ('', 'obj/cube_with_materials.obj'),
|
|
new FileObject ('', 'obj/cube_with_materials.mtl'),
|
|
new FileObject ('', 'obj/cube_texture.png')
|
|
]
|
|
let files2 = [
|
|
new FileObject ('', 'obj/single_triangle.obj')
|
|
];
|
|
|
|
let theImporter = new OV.Importer ();
|
|
ImportFilesWithImporter (theImporter, files1, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj', 'cube_with_materials.mtl', 'cube_texture.png']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
|
|
ImportFilesWithImporter (theImporter, files2, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['single_triangle.obj']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
done ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Default color', function (done) {
|
|
let files = [
|
|
new FileObject ('', 'stl/single_triangle.stl')
|
|
];
|
|
let theImporter = new OV.Importer ();
|
|
let settings = new OV.ImportSettings ();
|
|
settings.defaultColor = new OV.Color (200, 0, 0);
|
|
theImporter.ImportFiles (files, OV.FileSource.File, settings, {
|
|
onFilesLoaded : function () {
|
|
|
|
},
|
|
onImportSuccess : function (importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['single_triangle.stl']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
let material = importResult.model.GetMaterial (0);
|
|
assert.deepStrictEqual (material.color, new OV.Color (200, 0, 0));
|
|
done ();
|
|
},
|
|
onImportError : function (importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Zip file', function (done) {
|
|
let files = [
|
|
new FileObject ('', 'zip/cube_four_instances.zip')
|
|
];
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_four_instances.3ds', 'texture.png']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
done ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Zip file with Folders', function (done) {
|
|
let files = [
|
|
new FileObject ('', 'zip/cube_four_instances_folders.zip')
|
|
];
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_four_instances.3ds', 'texture.png']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
done ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
});
|
|
|
|
it ('Multiple Zip Files', function (done) {
|
|
let files = [
|
|
new FileObject ('', 'zip/cube_with_materials_notexture.zip'),
|
|
new FileObject ('', 'zip/textures.zip')
|
|
];
|
|
ImportFiles (files, {
|
|
success : function (importer, importResult) {
|
|
assert (!OV.IsModelEmpty (importResult.model));
|
|
assert.deepStrictEqual (importResult.usedFiles, ['cube_with_materials.obj', 'cube_with_materials.mtl', 'cube_texture.png']);
|
|
assert.deepStrictEqual (importResult.missingFiles, []);
|
|
done ();
|
|
},
|
|
error : function (importer, importError) {
|
|
assert.fail ();
|
|
}
|
|
});
|
|
});
|
|
});
|