mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-13 15:53:44 +08:00
Keep every post-59948b5 change inside verification/. The verifier owns its npm working directory and sanitized Docker context, so no release metadata or root Docker configuration is modified.
66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import {
|
|
extractResolutionHint,
|
|
extractVariantPlaylistUrls,
|
|
parseResolutionFromManifest,
|
|
} from '../../../lib/player/resolution-probe-utils';
|
|
|
|
// GH-ISSUE: 106,110,111; GH-PR: 160,161
|
|
|
|
test('extractResolutionHint recognizes resolution hints from URLs and remarks', () => {
|
|
assert.deepEqual(
|
|
extractResolutionHint('https://cdn.example.com/show/2160/index.m3u8'),
|
|
{ label: '4K', color: 'bg-amber-500', width: 3840, height: 2160 }
|
|
);
|
|
|
|
assert.deepEqual(
|
|
extractResolutionHint('片源 1280x720'),
|
|
{ label: '720P', color: 'bg-teal-500', width: 1280, height: 720 }
|
|
);
|
|
|
|
assert.equal(extractResolutionHint('蓝光原盘'), null);
|
|
});
|
|
|
|
test('parseResolutionFromManifest prefers the highest explicit resolution', () => {
|
|
const manifest = `#EXTM3U
|
|
#EXT-X-STREAM-INF:BANDWIDTH=4800000,RESOLUTION=1280x720,NAME="720P"
|
|
mid/index.m3u8
|
|
#EXT-X-STREAM-INF:BANDWIDTH=9200000,RESOLUTION=1920x1080,NAME="1080P"
|
|
high/index.m3u8
|
|
`;
|
|
|
|
assert.deepEqual(
|
|
parseResolutionFromManifest(manifest, 'https://media.example.com/master.m3u8'),
|
|
{ label: '1080P', color: 'bg-green-500', width: 1920, height: 1080 }
|
|
);
|
|
});
|
|
|
|
test('parseResolutionFromManifest falls back to variant URL hints when RESOLUTION is missing', () => {
|
|
const manifest = `#EXTM3U
|
|
#EXT-X-STREAM-INF:BANDWIDTH=9200000,NAME="Ultra"
|
|
./video_4k/index.m3u8
|
|
`;
|
|
|
|
assert.deepEqual(
|
|
parseResolutionFromManifest(manifest, 'https://media.example.com/master.m3u8'),
|
|
{ label: '4K', color: 'bg-amber-500', width: 3840, height: 2160 }
|
|
);
|
|
});
|
|
|
|
test('extractVariantPlaylistUrls resolves stream and iframe variant URLs', () => {
|
|
const manifest = `#EXTM3U
|
|
#EXT-X-STREAM-INF:BANDWIDTH=9200000,NAME="1080P"
|
|
./video_1080/index.m3u8
|
|
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=200000,URI="./iframes/720p.m3u8"
|
|
`;
|
|
|
|
assert.deepEqual(
|
|
extractVariantPlaylistUrls(manifest, 'https://media.example.com/master.m3u8'),
|
|
[
|
|
'https://media.example.com/video_1080/index.m3u8',
|
|
'https://media.example.com/iframes/720p.m3u8',
|
|
]
|
|
);
|
|
});
|