19 lines
1.2 KiB
JavaScript
19 lines
1.2 KiB
JavaScript
'use strict';
|
|
const assert=require('node:assert/strict'),fs=require('node:fs'),vm=require('node:vm');
|
|
const context={window:{},Math,Float32Array};
|
|
vm.runInNewContext(fs.readFileSync(require('node:path').join(__dirname,'../web/js/map-editor.js'),'utf8'),context);
|
|
const paint=context.window.ExoMapBrush,lat=[80,0,-80],lon=[0,90,180,270,359],range={min:-100,max:100};
|
|
const values=new Float32Array(lat.length*lon.length);
|
|
assert.equal(paint(values,lat,lon,{lat:0,lon:0},4,25,'set',range),true);
|
|
assert.equal(values[5],25);assert.equal(values[9],25);assert.equal(values[6],0);
|
|
assert.equal(paint(values,lat,lon,{lat:0,lon:0},4,500,'raise',range),true);
|
|
assert.equal(values[5],100);assert(values[9]<=100);
|
|
paint(values,lat,lon,{lat:0,lon:0},4,500,'lower',range);assert.equal(values[5],-100);
|
|
const polar=new Float32Array(lat.length*lon.length);
|
|
paint(polar,lat,lon,{lat:90,lon:0},15,1,'set',{min:0,max:1});
|
|
assert.deepEqual(Array.from(polar.slice(0,5)),[1,1,1,1,1]);assert.equal(polar[5],0);
|
|
const smooth=new Float32Array([10,0,0,0,0]);
|
|
paint(smooth,[0],lon,{lat:0,lon:0},4,0,'smooth',range);assert.equal(smooth[0],6);assert.equal(smooth[4],2);
|
|
assert(values.every(Number.isFinite));
|
|
console.log('Map brush seam, pole, range, smoothing, and finite-value checks passed');
|