Files
node-metaverse/lib/classes/LLGLTFMaterial.spec.ts

78 lines
3.2 KiB
TypeScript
Raw Normal View History

import { LLGLTFMaterial } from './LLGLTFMaterial';
import * as assert from 'assert';
describe('LLGLTFMaterial', () =>
{
describe('parse', () =>
{
it ('should parse a valid GLTF material asset', () =>
{
const buf = Buffer.from('PD8gTExTRC9CaW5hcnkgPz4KewAAAANrAAAABGRhdGFzAAABznsiYXNzZXQiOnsidmVyc2lvbiI6IjIuMCJ9LCJpbWFnZXMiOlt7InVyaSI6IjJjN2U3MzMyLTM3MTctNWY0ZS04ZjIyLTZlZTlkYTUyNzVmYiJ9LHsidXJpIjoiMTA3OGY1ZWMtMWM1Ni1lNzNmLThmOGYtYmUzNmM0MGU1MTIxIn0seyJ1cmkiOiIyMzBkMmQyZC1iMDkyLTliZjUtYmE3ZS1iMzE5NTY2MzIyYTYifSx7InVyaSI6IjIzMGQyZDJkLWIwOTItOWJmNS1iYTdlLWIzMTk1NjYzMjJhNiJ9XSwibWF0ZXJpYWxzIjpbeyJub3JtYWxUZXh0dXJlIjp7ImluZGV4IjoxfSwib2NjbHVzaW9uVGV4dHVyZSI6eyJpbmRleCI6M30sInBick1ldGFsbGljUm91Z2huZXNzIjp7ImJhc2VDb2xvclRleHR1cmUiOnsiaW5kZXgiOjB9LCJtZXRhbGxpY1JvdWdobmVzc1RleHR1cmUiOnsiaW5kZXgiOjJ9fX1dLCJ0ZXh0dXJlcyI6W3sic291cmNlIjowfSx7InNvdXJjZSI6MX0seyJzb3VyY2UiOjJ9LHsic291cmNlIjozfV19CmsAAAAEdHlwZXMAAAAIR0xURiAyLjBrAAAAB3ZlcnNpb25zAAAAAzEuMX0A', 'base64');
const mat = new LLGLTFMaterial(buf);
assert.equal(mat.version, '1.1');
assert.equal(mat.type, 'GLTF 2.0');
assert.ok(mat.data);
2023-11-10 23:57:26 +00:00
assert.equal(mat.data.asset?.version, '2.0');
assert.equal(mat.data.images?.length, 4);
let image = mat.data?.images?.[0];
if (image && 'uri' in image)
{
assert.equal(image.uri, '2c7e7332-3717-5f4e-8f22-6ee9da5275fb');
}
else
{
assert(false, 'Image missing');
}
image = mat.data?.images?.[1];
if (image && 'uri' in image)
{
assert.equal(image.uri, '1078f5ec-1c56-e73f-8f8f-be36c40e5121');
}
else
{
assert(false, 'Image missing');
}
image = mat.data?.images?.[2];
if (image && 'uri' in image)
{
assert.equal(image.uri, '230d2d2d-b092-9bf5-ba7e-b319566322a6');
}
else
{
assert(false, 'Image missing');
}
image = mat.data?.images?.[3];
if (image && 'uri' in image)
{
assert.equal(image.uri, '230d2d2d-b092-9bf5-ba7e-b319566322a6');
}
else
{
assert(false, 'Image missing');
}
2023-11-10 23:57:26 +00:00
assert.equal(mat.data.materials?.length, 1);
2023-11-10 23:57:26 +00:00
const mat0 = mat.data.materials?.[0];
if (mat0)
{
assert.equal(mat0.normalTexture?.index, 1);
assert.equal(mat0.occlusionTexture?.index, 3);
assert.equal(mat0.pbrMetallicRoughness?.baseColorTexture?.index, 0);
assert.equal(mat0.pbrMetallicRoughness?.metallicRoughnessTexture?.index, 2);
}
else
{
assert(false, 'Material missing');
}
assert.equal(mat.data.textures?.length, 4);
assert.equal(mat.data.textures?.[0].source, 0);
assert.equal(mat.data.textures?.[1].source, 1);
assert.equal(mat.data.textures?.[2].source, 2);
assert.equal(mat.data.textures?.[3].source, 3);
});
});
});