Release 0.11.0 with guided calibration, source transitions and root repair

This commit is contained in:
matze19999 committed 2026-10-06 20:29:25 +02:00
1 parent e55d37772a
commit f74a658097
33 files changed
+855 -75

No files matched your search

+19
View File
@@ -0,0 +1,19 @@
'use strict';
const assert=require('assert'),fs=require('fs'),vm=require('vm');
const c={};vm.createContext(c);vm.runInContext(fs.readFileSync('app/calibration.js','utf8'),c);
const baseline=Array(16).fill(10);
const patches=Array.from({length:32},(_,i)=>Array.from({length:16},(_,r)=>{
const center=r*2+.5,distance=Math.min(Math.abs(i-center),32-Math.abs(i-center));
return 10+80*Math.max(0,1-distance/2);
}));
const fit=c.calibrationFit(baseline,patches,'OTHER-TV');assert.equal(fit.points.length,16);
fit.points.forEach((p,i)=>{assert.equal(p.region,i);assert(Math.abs(p.position-(i*2+1)/8)<.05);});
assert.throws(()=>c.calibrationFit(baseline,Array.from({length:32},()=>Array(16).fill(90)),'OTHER-TV'),/reliable spatial/);
assert.throws(()=>c.calibrationFit(baseline,Array.from({length:32},()=>baseline),'OTHER-TV'),/reliable spatial/);
assert.throws(()=>c.calibrationFit(baseline,patches.slice(1),'OTHER-TV'),/Incomplete/);
assert.throws(()=>c.calibrationAverage([baseline,baseline]),/fresh/);
const nested=patches.map(p=>p.map((v,r)=>r===15?p[0]:v));
const reduced=c.calibrationFit(baseline,nested,'NESTED-TV');assert.equal(reduced.points.length,15);assert(!reduced.points.some(p=>p.region===15));
const duplicate=patches.map(p=>Array(16).fill(p[0]));assert.throws(()=>c.calibrationFit(baseline,duplicate,'DUPLICATE-TV'),/reliable spatial/);
assert.deepEqual(Array.from(c.calibrationAverage([baseline,baseline,baseline])),baseline);
console.log('PASS: measured edge positions, global/absent response rejection and fresh sample minimum');