testing.md

July 14, 2026 · View on GitHub

Component testing

Quick run

tools\setup_dev_environment.ps1 -RunTests
# or
tests\run_components.ps1 -Compiler Delphi -IncludeGuiTests

-IncludeGuiTests is required for VCL smoke tests (player_smoke_test, linked_player_smoke_test).

Linux (FPC):

tests/linux/run_components.sh

CI: .github/workflows/component-tests.yml.

Test media

ScriptOutputPurpose
tools/generate_test_av.ps1resource/test_av.mp4A/V playback (6 s, H.264 + AAC)
tools/generate_test_subs.ps1test_subs.mp4, .srtmov_text
tools/generate_test_subs_ass.ps1test_subs_ass.mkv, .assASS
tools/generate_test_subs_bitmap.ps1test_subs_bitmap.mkvdvdsub (optional)

run_components.ps1 copies media to bin/win64/test_media/.

Test map

TestVerifies
wrapper_testTFFPacket, TFFFrame
reader_decoder_testTFFReader + TFFDecoder
scaler_testTFFFrameConverter + VCL bitmap
player_smoke_testEngine mode, VCL player
linked_player_smoke_testLinked mode + audio
audio_resampler_testTFFAudioResampler (needs audio track)
encoder_smoke_testSynthetic encode (no media)
encoder_transcode_testTranscode pipeline
writer_remux_testRemux to MKV
graph_link_testComponent graph
hook_smoke_testOnFrameHook / hooks
memory_access_testTStream I/O
bitmap_encoder_testTFFBitmapEncoder
mediainfo_testTFFMediaInfo
thumbnail_testTFFThumbnailExtractor
frame_filter_testTFFFrameFilter
remux_job_testTFFRemuxJob
transcode_clip_testClip transcode
hw_decode_testTFFDecoder.HardwareDevice (manual / CI skip)
subtitle_decoder_testTFFSubtitleDecoder
subtitle_ass_testASS parse
subtitle_bitmap_testBitmap blit (synthetic + optional media)
player_control_smoke_testTFFPlayerControl
fmx_player_smoke_testFMX (compile separately)

Exit codes: 0 = PASS, 1 = FAIL, 2 = SKIP.

Logs

bin/out/component_tests/*.log – compile log.

bin/out/component_tests/*.run.log – test stdout.

Platforms

TargetComponent tests
Delphi Win64Full set (VCL with -IncludeGuiTests)
FPC Win64Console tests
FPC Linux64Console (no VCL player)

All binding targets: tests/run_all_platforms.ps1.