t32-network-level.mjs 1.6 KB

123456789101112131415
  1. import assert from 'node:assert/strict'
  2. import { toPipeNetwork } from '../../../src/modules/cockpit/domain/pipeNetwork.js'
  3. import { pipeColorKey } from '../../../src/modules/cockpit/domain/pipeVisual.js'
  4. import { planPipeModels } from '../../../src/modules/cockpit/domain/pipeModels.js'
  5. const row=(networkLevel,industry='DRAINAGE',remark='雨水')=>({industry,networkLevel,remark})
  6. for(const value of [undefined,null,'', ' ',0,'0'])assert.equal(pipeColorKey(row(value)),'SEWAGE','default/zero drainage is sewage even if remark says rain')
  7. for(const value of [1,'1',' 1 '])assert.equal(pipeColorKey(row(value)),'RAINWATER')
  8. for(const value of [2,'2',false,true,[],{},'bad'])assert.equal(pipeColorKey(row(value)),'DRAINAGE_UNKNOWN','invalid level must not become sewage/rain')
  9. for(const industry of ['GAS','WATER_SUPPLY','MANHOLE'])assert.equal(pipeColorKey(row(1,industry)),industry,'level applies to drainage only')
  10. 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}})
  11. const adapted=toPipeNetwork({features:[feature('1'),feature('0',true)]})
  12. assert.deepEqual(adapted.pipes.map(p=>p.networkLevel),['1','0'])
  13. assert.deepEqual(planPipeModels(adapted).instances.map(p=>p.colorKey),['RAINWATER','SEWAGE'])
  14. assert.ok(planPipeModels(adapted).instances.every(p=>p.visualDefaultDiameterM===.8&&p.diameterM===null))
  15. console.log('PASS network level 0/1, absent default, remark override, non-drainage immunity and API mapping')