@spearwolf/twopoint5d
Version:
a library to create 2.5d realtime graphics and pixelart with three.js
47 lines • 2.11 kB
JavaScript
import { describe, expect, test } from 'vitest';
import { VertexObjectDescriptor } from './VertexObjectDescriptor.js';
import { VertexObjectGeometry } from './VertexObjectGeometry.js';
import { selectAttributes } from './selectAttributes.js';
describe('selectAttributes', () => {
const descriptor = new VertexObjectDescriptor({
vertexCount: 4,
indices: [0, 1, 2, 0, 2, 3],
attributes: {
position: {
components: ['x', 'y', 'z'],
type: 'float32',
usage: 'dynamic',
},
color: {
components: ['r', 'g', 'b'],
type: 'float32',
usage: 'dynamic',
},
strength: {
size: 1,
type: 'float32',
usage: 'static',
},
impact: {
size: 1,
type: 'uint32',
usage: 'dynamic',
},
},
});
test('works as axpected', () => {
const geometry = new VertexObjectGeometry(descriptor, 1);
geometry.update();
expect(selectAttributes(geometry.pool, geometry.buffers, ['position', 'color'])).toMatchObject([
geometry.buffers.get('dynamic_float32'),
]);
expect(selectAttributes(geometry.pool, geometry.buffers, ['strength'])).toMatchObject([
geometry.buffers.get('static_float32'),
]);
expect(selectAttributes(geometry.pool, geometry.buffers, ['impact'])).toMatchObject([geometry.buffers.get('dynamic_uint32')]);
expect(selectAttributes(geometry.pool, geometry.buffers, [])).toEqual([]);
expect(selectAttributes(geometry.pool, geometry.buffers, ['position', 'impact'])).toEqual(expect.arrayContaining([geometry.buffers.get('dynamic_float32'), geometry.buffers.get('dynamic_uint32')]));
expect(selectAttributes(geometry.pool, geometry.buffers, ['position', 'impact'])).not.toEqual(expect.arrayContaining([geometry.buffers.get('static_float32')]));
});
});
//# sourceMappingURL=selectAttributes.spec.js.map