23 lines
1.6 KiB
TypeScript
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)
|
|
})
|