feature/capability-based-deps (#53)

Reviewed-on: #53
Co-authored-by: David Gwilliam <dhgwilliam@gmail.com>
Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
This commit was merged in pull request #53.
This commit is contained in:
2026-03-31 01:55:21 +00:00
committed by david
parent 2650f7245e
commit 2d28e92594
190 changed files with 37860 additions and 2026 deletions

View File

@@ -0,0 +1,79 @@
"""
Integration tests for figment effect in the pipeline.
"""
from engine.effects.plugins import discover_plugins
from engine.effects.registry import get_registry
from engine.pipeline import Pipeline, PipelineConfig, get_preset
from engine.pipeline.adapters import (
EffectPluginStage,
SourceItemsToBufferStage,
create_stage_from_display,
)
from engine.pipeline.controller import PipelineRunner
class TestFigmentPipeline:
"""Tests for figment effect in pipeline integration."""
def setup_method(self):
"""Discover plugins before each test."""
discover_plugins()
def test_figment_in_pipeline(self):
"""Figment effect can be added to pipeline."""
registry = get_registry()
figment = registry.get("figment")
pipeline = Pipeline(
config=PipelineConfig(
source="empty",
display="null",
camera="feed",
effects=["figment"],
)
)
# Add source stage
from engine.data_sources.sources import EmptyDataSource
from engine.pipeline.adapters import DataSourceStage
empty_source = EmptyDataSource(width=80, height=24)
pipeline.add_stage("source", DataSourceStage(empty_source, name="empty"))
# Add render stage
pipeline.add_stage("render", SourceItemsToBufferStage(name="items-to-buffer"))
# Add figment effect stage
pipeline.add_stage("effect_figment", EffectPluginStage(figment, name="figment"))
# Add display stage
from engine.display import DisplayRegistry
display = DisplayRegistry.create("null")
display.init(0, 0)
pipeline.add_stage("display", create_stage_from_display(display, "null"))
# Build and initialize pipeline
pipeline.build()
assert pipeline.initialize()
# Use PipelineRunner to step through frames
runner = PipelineRunner(pipeline)
runner.start()
# Run pipeline for a few frames
for i in range(10):
runner.step()
# Result might be None for null display, but that's okay
# Verify pipeline ran without errors
assert pipeline.context.params.frame_number == 10
def test_figment_preset(self):
"""Figment preset is properly configured."""
preset = get_preset("test-figment")
assert preset is not None
assert preset.source == "empty"
assert preset.display == "terminal"
assert "figment" in preset.effects