Files
carinha-control-panel/tests/test_qualidade.js
T

29 lines
1.5 KiB
JavaScript

const assert = require('node:assert/strict');
let Auto;
try { Auto = require('../android/app/assets/qualidade-auto.js'); }
catch (e) { assert.fail('Qualidade automática ainda não implementada'); }
let q = new Auto();
assert.equal(q.level, 0);
q.update({fps: 15, bitrate: 400000, rtt: .5});
assert.equal(q.level, 1);
q.update({fps: 15, bitrate: 350000, rtt: .5});
assert.equal(q.level, 2);
q.update({fps: 30, bitrate: 3000000, rtt: .02});
assert.equal(q.level, 2, 'Uma leitura boa não pode causar oscilação');
q.update({fps: 30, bitrate: 3000000, rtt: .02});
q.update({fps: 30, bitrate: 3000000, rtt: .02});
q.update({fps: 30, bitrate: 3000000, rtt: .02});
assert.equal(q.level, 1);
assert.equal(q.parameters().maxFramerate, 30);
console.log('Qualidade automática: reduz com congestionamento e sobe após estabilidade: OK');
assert.equal(typeof Auto.constraints, 'function', 'Seleção de câmera/qualidade ausente');
const v = Auto.constraints({cameraLado:'environment',videoResolucao:'2160',videoFPS:60}, {});
assert.equal(v.facingMode.exact, 'environment');
assert.equal(v.width.exact, 3840);
assert.equal(v.frameRate.exact, 60);
const maximum = Auto.constraints({videoResolucao:'max',videoFPS:-1}, {width:{max:7680},height:{max:4320},frameRate:{max:120}});
assert.equal(maximum.width.ideal, 7680);
assert.equal(maximum.frameRate.ideal, 120);
assert.equal(maximum.frameRate.max, undefined, 'Sem teto artificial');
assert.equal(new Auto(60, 20000000).parameters().maxFramerate, 60);