Feature: Materializers coverage round 3 As a developer maintaining the output rendering framework I want thorough test coverage on materializer strategies So that edge-case code paths in live and accumulate strategies are verified # --------------------------------------------------------------- # Line 344: _BaseBufferStrategy.on_element_closed early return # when event.final_state is None # --------------------------------------------------------------- Scenario: Buffer strategy ignores element closed with no final state Given matcov3 a PlainMaterializer instance And matcov3 the strategy has a registered handle "hdl-abc" at index 0 When matcov3 an ElementClosed event with handle "hdl-abc" and no final state is dispatched Then matcov3 the plain strategy output is empty # --------------------------------------------------------------- # Line 473: _LiveMaterializationStrategy._render_element base class # --------------------------------------------------------------- Scenario: Live strategy base class render_element delegates to color renderer Given matcov3 a raw LiveMaterializationStrategy instance And matcov3 a StatusMessage element with message "live-base-test" When matcov3 I call the live base class _render_element Then matcov3 the rendered text contains "live-base-test" # --------------------------------------------------------------- # Lines 486-487: _LiveMaterializationStrategy.on_element_created # with initial_state=None # --------------------------------------------------------------- Scenario: Live strategy handles element created with no initial state Given matcov3 a raw LiveMaterializationStrategy instance When matcov3 an ElementCreated event with no initial state is dispatched to the live strategy Then matcov3 the live strategy has an empty rendered entry at the declaration index And matcov3 the live strategy has height zero at the declaration index # --------------------------------------------------------------- # Line 495: _LiveMaterializationStrategy.on_element_updated # with unknown handle_id (idx is None) # --------------------------------------------------------------- Scenario: Live strategy ignores update for unknown handle Given matcov3 a raw LiveMaterializationStrategy instance When matcov3 an ElementUpdated event for unknown handle "hdl-ghost" is dispatched to the live strategy Then matcov3 the live strategy rendered dict is empty # --------------------------------------------------------------- # Line 497: _LiveMaterializationStrategy.on_element_updated # for a frozen (closed) element # --------------------------------------------------------------- Scenario: Live strategy ignores update for a frozen element Given matcov3 a raw LiveMaterializationStrategy instance And matcov3 a live element "hdl-frozen" is created and then closed at index 5 When matcov3 an ElementUpdated event for handle "hdl-frozen" is dispatched to the live strategy Then matcov3 no error is raised for the frozen update # --------------------------------------------------------------- # Line 509: _LiveMaterializationStrategy.on_element_closed # with unknown handle_id # --------------------------------------------------------------- Scenario: Live strategy ignores close for unknown handle Given matcov3 a raw LiveMaterializationStrategy instance When matcov3 an ElementClosed event for unknown handle "hdl-unknown-live" is dispatched to the live strategy Then matcov3 the live strategy closed indices set is empty # --------------------------------------------------------------- # Line 550: _LiveMaterializationStrategy._render_frame with # empty dirty set # --------------------------------------------------------------- Scenario: Live strategy render frame returns early when dirty set is empty Given matcov3 a raw LiveMaterializationStrategy instance When matcov3 I call _render_frame on the live strategy with an empty dirty set Then matcov3 the live strategy stream is still empty # --------------------------------------------------------------- # Line 610: _AccumulateStrategy.on_element_updated returns # immediately # --------------------------------------------------------------- Scenario: Accumulate strategy on_element_updated returns immediately Given matcov3 a JsonMaterializer instance When matcov3 an ElementUpdated event is dispatched to the accumulate strategy Then matcov3 no error is raised for the accumulate update