Wizard DXF e riepilogo: overlay SVG, Salva immagine, NaN per quota non misurata
Refs #118 #119 #121 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -139,6 +139,44 @@ delete global.getComputedStyle;
|
||||
await wd.loadDxfPreview();
|
||||
check('#113 DXF tolto: vista azzerata', wd.views.dxf.w === 0 && wd.views.dxf.zoom === 1);
|
||||
|
||||
// #121: overlay SVG al posto del canvas; ridisegno a ogni cambio di zoom (zoomBy, fit)
|
||||
{
|
||||
const calls = [];
|
||||
global.window = { VisionOverlay: { svg: (shapes, o) => { calls.push({ n: shapes.length, zoom: o.zoom }); return '<path d="M0 0"/>'; } } };
|
||||
const attrs = {};
|
||||
const sv = { innerHTML: '', setAttribute: (k, v) => { attrs[k] = v; } };
|
||||
const mk = () => {
|
||||
const x = make(400);
|
||||
x.$refs = { viewport: { clientWidth: 400, clientHeight: 300, scrollLeft: 0, scrollTop: 0 },
|
||||
img: { naturalWidth: 800, naturalHeight: 600 }, overlay: sv };
|
||||
x.result = { result: { overlay: [{ type: 'contour', role: 'found', rows: [1], cols: [2] }] } };
|
||||
return x;
|
||||
};
|
||||
const wo = mk();
|
||||
wo.drawOverlay();
|
||||
check('#121 viewBox = dimensioni naturali', attrs.viewBox === '0 0 800 600', attrs.viewBox);
|
||||
check('#121 innerHTML = VisionOverlay.svg', sv.innerHTML === '<path d="M0 0"/>' && calls[0].n === 1);
|
||||
wo.zoomBy(2);
|
||||
check('#121 zoomBy ridisegna col nuovo zoom', calls[calls.length - 1].zoom === wo.zoom && wo.zoom === 2, JSON.stringify(calls));
|
||||
wo.fit();
|
||||
check('#121 fit ridisegna col nuovo zoom', calls[calls.length - 1].zoom === wo.zoom, JSON.stringify(calls));
|
||||
// senza modulo o senza svg: vuoto, nessun errore
|
||||
global.window = {};
|
||||
sv.innerHTML = 'x';
|
||||
let err = null;
|
||||
try { mk().drawOverlay(); } catch (e) { err = e; }
|
||||
check('#121 senza VisionOverlay: vuoto senza errori', err === null && sv.innerHTML === '', String(err));
|
||||
global.window = { VisionOverlay: {} };
|
||||
sv.innerHTML = 'x';
|
||||
try { mk().drawOverlay(); } catch (e) { err = e; }
|
||||
check('#121 senza svg(): vuoto senza errori', err === null && sv.innerHTML === '', String(err));
|
||||
// immagine non ancora caricata: non tocca nulla
|
||||
const wn = mk(); wn.$refs.img.naturalWidth = 0; sv.innerHTML = 'y';
|
||||
wn.drawOverlay();
|
||||
check('#121 immagine non caricata: nessun disegno', sv.innerHTML === 'y');
|
||||
delete global.window;
|
||||
}
|
||||
|
||||
if (failures) { console.log(failures + ' test falliti'); process.exit(1); }
|
||||
console.log('tutti i test #113 ok');
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user