verify-roof-raster-quality.mjs 1.1 KB

12345678910111213141516
  1. import assert from 'node:assert/strict'
  2. import {roofRasterSize,sharpenRoofRgba} from './roof-raster-quality.mjs'
  3. assert.deepEqual(roofRasterSize([54,53],{maxDimension:64}),[64,63])
  4. assert.deepEqual(roofRasterSize([54,53],{maxDimension:512,metresPerPixel:.263}),[206,203])
  5. assert.deepEqual(roofRasterSize([224,209],{maxDimension:512,metresPerPixel:.263}),[512,478])
  6. assert.throws(()=>roofRasterSize([54,53],{maxDimension:1024}))
  7. assert.throws(()=>roofRasterSize([0,3]));assert.throws(()=>roofRasterSize([54,53],{metresPerPixel:0}))
  8. const uniform=Buffer.alloc(5*5*4,130)
  9. assert.deepEqual(sharpenRoofRgba(uniform,5,5),uniform)
  10. const edge=Buffer.from(uniform);edge[48]=255;edge[49]=0;edge[50]=250
  11. const before=Buffer.from(edge),out=sharpenRoofRgba(edge,5,5,.5)
  12. assert.deepEqual(edge,before,'never mutate source image')
  13. for(let i=0;i<out.length;i++){assert.ok(Math.abs(out[i]-edge[i])<=8);if(i%4===3)assert.equal(out[i],edge[i])}
  14. assert.deepEqual(sharpenRoofRgba(edge,5,5,0),edge)
  15. assert.throws(()=>sharpenRoofRgba(edge,5,5,.6))
  16. console.log(JSON.stringify({passed:true,sizingCap:true,alphaPreserved:true,maxChannelDelta:8,neutralFieldUnchanged:true}))