///
import { readFileSync } from 'node:fs';
import type { TranscodeModel } from '@forgeax/engine-codec';
import type { Loader } from '@forgeax/engine-types';
import { describe, expect, expectTypeOf, it } from 'vitest';
import type { textureLoader } from '../loaders/pack-artifact.js';
const packArtifactSource = readFileSync(
new URL('../loaders/pack-artifact.ts', import.meta.url),
'utf8',
);
describe('assets-runtime transcode model owner', () => {
it('keeps the public texture loader and model vocabulary intact', () => {
expectTypeOf().toEqualTypeOf();
expectTypeOf().toEqualTypeOf<'etc1s' | 'uastc-ldr' | 'uastc-hdr'>();
const models: readonly TranscodeModel[] = ['etc1s', 'uastc-ldr', 'uastc-hdr'];
expect(models).toEqual(['etc1s', 'uastc-ldr', 'uastc-hdr']);
});
it('derives the private model view from the codec owner', () => {
expect(packArtifactSource).toContain('import type { CodecError, TranscodeModel }');
expect(packArtifactSource).toContain('selectTranscodeTarget,');
expect(packArtifactSource).toContain('transcodeKtx2,');
expect(packArtifactSource).not.toContain("await import('@forgeax/engine-codec')");
expect(packArtifactSource).not.toContain('codec.module.import');
expect(packArtifactSource).toContain(
'function transcodeModel(profile: string): TranscodeModel | undefined',
);
expect(packArtifactSource).not.toContain(
"function transcodeModel(profile: string): 'etc1s' | 'uastc-ldr' | 'uastc-hdr' | undefined",
);
});
});