Files
MikrotikManager/backend/src/services/bandwidth-test-rates.test.ts
T

23 lines
1.6 KiB
TypeScript

import {test} from "node:test"
import assert from "node:assert/strict"
import {parseBandwidthRateMbps,readBandwidthTestRates} from "./bandwidth-test-rates.js"
test("native units preserve decimal and explicit zero; absence and malformed rate are unknown",()=>{
for(const raw of [undefined,null,"","bad","-1Mbps",false,"Infinity","5MiB/s"])assert.equal(parseBandwidthRateMbps(raw),null)
assert.equal(parseBandwidthRateMbps("0bps"),0);assert.equal(parseBandwidthRateMbps("150.25Mbps"),150.25)
assert.equal(parseBandwidthRateMbps("125kbps"),0.125);assert.equal(parseBandwidthRateMbps(1000000),1)
assert.equal(parseBandwidthRateMbps("1.5Gbps"),1500)
})
test("explicit total-average zero wins over nonzero samples",()=>{
const result=readBandwidthTestRates([{"tx-current":"20Mbps"},{"tx-total-average":"0bps","rx-total-average":"150.25Mbps"}])
assert.equal(result.txAvgMbps,0);assert.equal(result.rxAvgMbps,150.25)
})
test("one-direction test leaves the other average and curve unknown",()=>{
const result=readBandwidthTestRates([{"rx-current":"10Mbps"},{"rx-total-average":"20Mbps"}])
assert.equal(result.txAvgMbps,null);assert.deepEqual(result.txSeries,[]);assert.equal(result.rxAvgMbps,20)
assert.deepEqual(readBandwidthTestRates([]),{txAvgMbps:null,rxAvgMbps:null,txSeries:[],rxSeries:[]})
})
test("fallback uses only valid samples and never fabricates zero",()=>{
const result=readBandwidthTestRates([{"tx-current":"bad"},{"tx-current":"10Mbps"},{"tx-current":"20Mbps"}])
assert.equal(result.txAvgMbps,15);assert.deepEqual(result.txSeries,[10,20]);assert.equal(result.rxAvgMbps,null)
})