mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-30 19:46:38 +08:00
76 lines
1.5 KiB
TypeScript
76 lines
1.5 KiB
TypeScript
import { classifyDirectPlayError } from './directPlayError.ts'
|
|
|
|
function check(name: string, cond: boolean) {
|
|
if (!cond) throw new Error(`classifyDirectPlayError: ${name}`)
|
|
}
|
|
|
|
const src = 'http://nas.local/api/stream/m1?token=abc'
|
|
|
|
check(
|
|
'aborted load is ignored',
|
|
classifyDirectPlayError({
|
|
errorCode: 1,
|
|
readyState: 0,
|
|
elementSrc: src,
|
|
expectedSrc: src,
|
|
alreadyRetried: false,
|
|
}) === 'ignore',
|
|
)
|
|
|
|
check(
|
|
'already-playing error is ignored',
|
|
classifyDirectPlayError({
|
|
errorCode: 4,
|
|
readyState: 3,
|
|
elementSrc: src,
|
|
expectedSrc: src,
|
|
alreadyRetried: false,
|
|
}) === 'ignore',
|
|
)
|
|
|
|
check(
|
|
'stale src error is ignored',
|
|
classifyDirectPlayError({
|
|
errorCode: 4,
|
|
readyState: 0,
|
|
elementSrc: 'http://nas.local/old',
|
|
expectedSrc: src,
|
|
alreadyRetried: false,
|
|
}) === 'ignore',
|
|
)
|
|
|
|
check(
|
|
'empty src during reload is ignored',
|
|
classifyDirectPlayError({
|
|
errorCode: 4,
|
|
readyState: 0,
|
|
elementSrc: '',
|
|
expectedSrc: src,
|
|
alreadyRetried: false,
|
|
}) === 'ignore',
|
|
)
|
|
|
|
check(
|
|
'first decode/network miss retries',
|
|
classifyDirectPlayError({
|
|
errorCode: 4,
|
|
readyState: 0,
|
|
elementSrc: src,
|
|
expectedSrc: src,
|
|
alreadyRetried: false,
|
|
}) === 'retry',
|
|
)
|
|
|
|
check(
|
|
'second failure falls back to HLS',
|
|
classifyDirectPlayError({
|
|
errorCode: 4,
|
|
readyState: 0,
|
|
elementSrc: src,
|
|
expectedSrc: src,
|
|
alreadyRetried: true,
|
|
}) === 'fallback',
|
|
)
|
|
|
|
console.log('playerPageModel.test.ts ok')
|