import assert from 'node:assert/strict' import { toPipeNetwork } from '../../../src/modules/cockpit/domain/pipeNetwork.js' import { pipeColorKey } from '../../../src/modules/cockpit/domain/pipeVisual.js' import { planPipeModels } from '../../../src/modules/cockpit/domain/pipeModels.js' const row=(networkLevel,industry='DRAINAGE',remark='雨水')=>({industry,networkLevel,remark}) for(const value of [undefined,null,'', ' ',0,'0'])assert.equal(pipeColorKey(row(value)),'SEWAGE','default/zero drainage is sewage even if remark says rain') for(const value of [1,'1',' 1 '])assert.equal(pipeColorKey(row(value)),'RAINWATER') for(const value of [2,'2',false,true,[],{},'bad'])assert.equal(pipeColorKey(row(value)),'DRAINAGE_UNKNOWN','invalid level must not become sewage/rain') for(const industry of ['GAS','WATER_SUPPLY','MANHOLE'])assert.equal(pipeColorKey(row(1,industry)),industry,'level applies to drainage only') const feature=(level,alias=false)=>({geometry:{type:'LineString',coordinates:[[110.39,28.44],[110.3901,28.44]]},properties:{code:alias?'snake':'camel',industry:'DRAINAGE',remark:'DXF台账',diameter:null,coordinateValidation:{renderable:true},[alias?'network_level':'networkLevel']:level}}) const adapted=toPipeNetwork({features:[feature('1'),feature('0',true)]}) assert.deepEqual(adapted.pipes.map(p=>p.networkLevel),['1','0']) assert.deepEqual(planPipeModels(adapted).instances.map(p=>p.colorKey),['RAINWATER','SEWAGE']) assert.ok(planPipeModels(adapted).instances.every(p=>p.visualDefaultDiameterM===.8&&p.diameterM===null)) console.log('PASS network level 0/1, absent default, remark override, non-drainage immunity and API mapping')