94 lines
2.8 KiB
JavaScript
94 lines
2.8 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import {
|
|
getPathConflictDisplayEnabled,
|
|
isNewPathConflictPayload,
|
|
normalizePathConflictMessage,
|
|
} from '../src/utils/pathConflictDisplay.mjs'
|
|
|
|
assert.equal(getPathConflictDisplayEnabled({}), true)
|
|
assert.equal(getPathConflictDisplayEnabled({ pathConflictDisplayEnabled: false }), false)
|
|
|
|
const status = normalizePathConflictMessage({
|
|
type: 'path_conflict_status',
|
|
payload: {
|
|
conflictPoint: { latitude: 36.1, longitude: 120.2 },
|
|
aircraftName: 'A01',
|
|
vehicleName: 'V01',
|
|
aircraftDistanceToConflictMeters: 120,
|
|
vehicleDistanceToConflictMeters: 80,
|
|
aircraftAlertThresholdMeters: 200,
|
|
vehicleAlertThresholdMeters: 100,
|
|
vehicleMovingTowardConflictPoint: true,
|
|
directionLockStatus: 'DIRECTION_LOCKED',
|
|
calculationStatus: 'MONITORING',
|
|
directionLockReason: '',
|
|
object1ForwardDistanceMeters: 118,
|
|
object2ForwardDistanceMeters: 78,
|
|
},
|
|
})
|
|
|
|
assert.equal(status.kind, 'status')
|
|
assert.equal(status.title, '计算中')
|
|
assert.deepEqual(status.conflictPoint, { latitude: 36.1, longitude: 120.2 })
|
|
assert.equal(status.key, 'A01::V01')
|
|
assert.equal(status.directionLockText, '方向已锁定')
|
|
assert.equal(status.directionLockFailed, false)
|
|
assert.equal(status.directionLockReason, '')
|
|
assert.equal(status.object1ForwardDistance, 118)
|
|
assert.equal(status.object2ForwardDistance, 78)
|
|
|
|
const directionInvalid = normalizePathConflictMessage({
|
|
type: 'path_conflict_status',
|
|
payload: {
|
|
aircraftName: 'A01',
|
|
vehicleName: 'V01',
|
|
directionLockStatus: 'DIRECTION_INVALID',
|
|
calculationStatus: 'DIRECTION_LOCK_FAILED',
|
|
directionLockReason: '冲突点在两侧',
|
|
},
|
|
})
|
|
|
|
assert.equal(directionInvalid.directionLockText, '方向无法锁定')
|
|
assert.equal(directionInvalid.directionLockFailed, true)
|
|
assert.equal(directionInvalid.directionLockReason, '冲突点在两侧')
|
|
|
|
const resume = normalizePathConflictMessage({
|
|
type: 'path_conflict_alert',
|
|
payload: {
|
|
messageType: 'PATH_CONFLICT_RESUME',
|
|
aircraftName: 'A01',
|
|
vehicleName: 'V01',
|
|
},
|
|
})
|
|
|
|
assert.equal(resume.kind, 'resume')
|
|
assert.equal(resume.key, 'A01::V01')
|
|
assert.equal(resume.aircraftName, 'A01')
|
|
assert.equal(resume.vehicleName, 'V01')
|
|
|
|
const alert = normalizePathConflictMessage({
|
|
type: 'path_conflict_alert',
|
|
payload: {
|
|
alertLevel: 'EMERGENCY',
|
|
conflictPoint: { latitude: 36.1, longitude: 120.2 },
|
|
aircraftName: 'A01',
|
|
vehicleName: 'V01',
|
|
},
|
|
})
|
|
|
|
assert.equal(alert.kind, 'alert')
|
|
assert.equal(alert.level, 'EMERGENCY')
|
|
assert.equal(alert.title, '紧急告警')
|
|
|
|
assert.equal(isNewPathConflictPayload({
|
|
object1: { objectName: 'V01' },
|
|
object2: { objectName: 'V02' },
|
|
alertType: 'CONFLICT_WARNING',
|
|
}), false)
|
|
|
|
assert.equal(isNewPathConflictPayload({
|
|
aircraftName: 'A01',
|
|
vehicleName: 'V01',
|
|
conflictPoint: { latitude: 36.1, longitude: 120.2 },
|
|
}), true)
|