@jonobr1/force-directed-graph
Version:
GPU supercharged attraction-graph visualizations for the web built on top of Three.js
50 lines (42 loc) • 1.3 kB
JavaScript
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { __TEST__ } from '../texture-worker.js';
describe('texture-worker fallback integration', () => {
let posted;
beforeEach(() => {
posted = [];
globalThis.self = {
postMessage: vi.fn((message) => posted.push(message)),
};
});
afterEach(() => {
delete globalThis.self;
});
it('returns successful payload for empty graph', () => {
__TEST__.processFallback({
requestId: 42,
nodes: [],
links: [],
textureSize: 4,
frustumSize: 100,
});
expect(posted).toHaveLength(1);
expect(posted[0].type).toBe('texture-processed');
expect(posted[0].success).toBe(true);
expect(posted[0].data.packedLinkAmount).toBe(0);
expect(posted[0].data.positions.length).toBe(4 * 4 * 4);
});
it('returns validation error type for invalid texture size', () => {
__TEST__.processFallback({
requestId: 99,
nodes: [],
links: [],
textureSize: 3,
frustumSize: 100,
});
expect(posted).toHaveLength(1);
expect(posted[0].type).toBe('texture-processed');
expect(posted[0].success).toBe(false);
expect(posted[0].errorType).toBe('validation');
expect(posted[0].error).toMatch(/power of 2/i);
});
});