| 1234567891011121314151617 |
- import assert from 'node:assert/strict'
- import { planPipeModels } from '../../../src/modules/cockpit/domain/pipeModels.js'
- import { toPipeNetwork } from '../../../src/modules/cockpit/domain/pipeNetwork.js'
- const pipe=(industry,remark,diameter=100)=>({code:industry+remark,industry,remark,diameter,positions:[[110.39,28.44],[110.3901,28.44]]})
- const input=[pipe('GAS',''),pipe('WATER_SUPPLY',''),pipe('DRAINAGE','污水'),{...pipe('DRAINAGE','雨水'),networkLevel:1}]
- const plan=planPipeModels({pipes:input,components:[]})
- assert.deepEqual(plan.instances.map(row=>row.colorKey),['GAS','WATER_SUPPLY','SEWAGE','RAINWATER'])
- assert.ok(plan.instances.every(row=>row.displayDiameterM===.1),'physical body diameter follows source metres without exaggeration')
- assert.ok(plan.instances.every(row=>row.diameterM===.1),'source millimetres are converted once to metres')
- const payload={features:[{geometry:{type:'LineString',coordinates:[[110.39,28.44],[110.3901,28.44]]},properties:{code:'remark-wins',industry:'DRAINAGE',name:'雨水管',remark:'污水',diameter:400,coordinateValidation:{renderable:true}}}]}
- const adapted=toPipeNetwork(payload)
- assert.equal(adapted.pipes[0].remark,'污水')
- assert.equal(planPipeModels(adapted).instances[0].colorKey,'SEWAGE','missing level defaults to sewage regardless of remark/name')
- assert.equal(planPipeModels({pipes:[{...pipe('DRAINAGE','雨水 污水'),networkLevel:2}],components:[]}).instances[0].colorKey,'DRAINAGE_UNKNOWN')
- assert.equal(planPipeModels({pipes:[{...pipe('DRAINAGE',''),name:'雨水管'}],components:[]}).instances[0].colorKey,'SEWAGE','missing level uses zero, never infer rain from name')
- console.log('PASS five-class semantics from network level, invalid unknown, source diameter separate from display')
|