import test from 'node:test'; import assert from 'node:assert/strict'; import {readFileSync} from 'node:fs'; import ts from 'typescript'; const source=readFileSync(new URL('../../../plugins/insta360-x4/frontend/src/model.ts',import.meta.url),'utf8'); const code=ts.transpileModule(source,{compilerOptions:{module:ts.ModuleKind.ESNext}}).outputText; const {cameraLabel,cameraStatus,resolutionLabel}=await import('data:text/javascript;base64,'+Buffer.from(code).toString('base64')); const camera={id:'instax4_synthetic_a',online:true,configured:true,prepared:true,snapshot:{enrollment:'enrolled'},camera_status:{connected:true,recording:0,preview:0,function_mode:7}}; test('SD recording remains visible after preview closes, independently for each camera',()=>{ const recording={...camera,camera_status:{...camera.camera_status,recording:1}}; assert.equal(cameraLabel(recording,true).label,'Запись на карту камеры'); assert.equal(cameraLabel({...camera,id:'instax4_synthetic_b'},true).label,'Подключена'); assert.equal(cameraStatus(recording).preview,0); }); test('stale and unconfirmed camera state never appears ready or actively recording',()=>{ assert.equal(cameraLabel({...camera,camera_status:{...camera.camera_status,recording:1}},false).tone,'neutral'); assert.equal(cameraLabel({...camera,camera_status:{}},true).tone,'warning'); assert.equal(cameraLabel({...camera,camera_status:{...camera.camera_status,preview:-1}},true).tone,'warning'); assert.equal(cameraStatus({...camera,camera_status:{preview:true,recording:'1',connected:1}}).preview,null); }); test('installed model support does not enroll a new physical camera',()=>{ assert.equal(cameraLabel({...camera,configured:false},true).label,'Требуется подготовка'); assert.equal(cameraLabel({...camera,initializable:false},true).tone,'warning'); }); test('SDK resolution names are presented with their actual dimensions and frame rate',()=>{ assert.equal(resolutionLabel('3840_1920_30'),'3840 × 1920 · 30 кадр/с'); });