t32-pipe-model-plan.mjs 1.8 KB

123456789101112131415161718192021222324252627282930
  1. import assert from 'node:assert/strict'
  2. import { planPipeModels } from '../../../src/modules/cockpit/domain/pipeModels.js'
  3. const plan = planPipeModels({ pipes: [
  4. { code: 'known', industry: 'GAS', diameter: 400, positions: [[110.39, 28.44], [110.3901, 28.44], [110.3901, 28.4401]] },
  5. { code: 'missing', industry: 'GAS', diameter: null, positions: [[110.39, 28.44], [110.3901, 28.44]] },
  6. ], components: [] })
  7. assert.equal(plan.instances.length, 3, 'original path spans plus missing-diameter display model, no invented elbow')
  8. assert.deepEqual(plan.instances[0].start, [110.39, 28.44])
  9. assert.deepEqual(plan.instances[1].end, [110.3901, 28.4401])
  10. assert.equal(plan.instances[0].diameterM, 0.4)
  11. assert.equal(plan.virtualDepthM, 2)
  12. assert.deepEqual(plan.fallbacks, [])
  13. assert.equal(plan.instances[2].diameterM, null)
  14. assert.equal(plan.instances[2].diameterSource, 'visual-default')
  15. assert.equal(plan.instances[2].visualDefaultDiameterM, 0.16)
  16. console.log('PASS known diameter, exact path and missing diameter display placeholder')
  17. const parts = planPipeModels({ pipes: [], components: [
  18. { code: 'v', kind: 'valve', industry: 'GAS', position: [110.39, 28.44] },
  19. { code: 't', kind: 'branch', label: 'tee', position: [110.39, 28.44] },
  20. { code: 'x', kind: 'branch', label: 'cross', position: [110.39, 28.44] },
  21. { code: 'e', kind: 'elbow', position: [110.39, 28.44] },
  22. { code: 'u', kind: 'other', label: 'regulator', position: [110.39, 28.44] },
  23. ] })
  24. assert.deepEqual(parts.instances.map((row) => row.kind), ['valve', 'branch', 'cross', 'elbow'])
  25. assert.equal(parts.instances[0].sizeM, 1)
  26. assert.equal(parts.instances[0].orientationSource, 'fixed-approximate')
  27. assert.deepEqual(parts.fallbacks, [{ id: 'component:u', reason: '未建模构件,保留原始符号' }])
  28. console.log('PASS four classes and cross variant; unknown does not masquerade')