@@ -631,6 +631,96 @@ func TestFormatEventAsText(t *testing.T) {
631631 assert .Contains (t , result , "CONSENSUS" )
632632 assert .Contains (t , result , "Final answer" )
633633 })
634+
635+ // Multi-pass validation phase events
636+ t .Run ("Formats phase start event" , func (t * testing.T ) {
637+ event := & DialogueEvent {Type : EventPhaseStart , Content : "PHASE 1: INITIAL RESPONSE" }
638+ result := FormatEventAsText (event )
639+ assert .Contains (t , result , "PHASE 1" )
640+ assert .Contains (t , result , "═" )
641+ })
642+
643+ t .Run ("Formats phase progress event" , func (t * testing.T ) {
644+ event := & DialogueEvent {Type : EventPhaseProgress , Content : "Processing responses..." }
645+ result := FormatEventAsText (event )
646+ assert .Contains (t , result , "▸" )
647+ assert .Contains (t , result , "Processing responses" )
648+ })
649+
650+ t .Run ("Formats phase end event" , func (t * testing.T ) {
651+ event := & DialogueEvent {Type : EventPhaseEnd , Content : "Phase complete" }
652+ result := FormatEventAsText (event )
653+ assert .Contains (t , result , "Phase Complete" )
654+ assert .Contains (t , result , "─" )
655+ })
656+
657+ t .Run ("Formats validation result event" , func (t * testing.T ) {
658+ event := & DialogueEvent {Type : EventValidationResult , Content : "Score: 0.85" }
659+ result := FormatEventAsText (event )
660+ assert .Contains (t , result , "✓" )
661+ assert .Contains (t , result , "Validation" )
662+ assert .Contains (t , result , "Score" )
663+ })
664+
665+ t .Run ("Formats polish result event" , func (t * testing.T ) {
666+ event := & DialogueEvent {Type : EventPolishResult , Content : "Improved by 15%" }
667+ result := FormatEventAsText (event )
668+ assert .Contains (t , result , "✨" )
669+ assert .Contains (t , result , "Polish" )
670+ assert .Contains (t , result , "15%" )
671+ })
672+
673+ t .Run ("Formats final synthesis event" , func (t * testing.T ) {
674+ event := & DialogueEvent {Type : EventFinalSynthesis , Content : "Synthesized conclusion" }
675+ result := FormatEventAsText (event )
676+ assert .Contains (t , result , "FINAL CONCLUSION" )
677+ assert .Contains (t , result , "Synthesized conclusion" )
678+ assert .Contains (t , result , "═" )
679+ })
680+ }
681+
682+ // TestDialogueEventTypeNewPhaseEvents tests all new phase event types are defined
683+ func TestDialogueEventTypeNewPhaseEvents (t * testing.T ) {
684+ t .Run ("All phase event types are defined" , func (t * testing.T ) {
685+ assert .Equal (t , DialogueEventType ("phase_start" ), EventPhaseStart )
686+ assert .Equal (t , DialogueEventType ("phase_progress" ), EventPhaseProgress )
687+ assert .Equal (t , DialogueEventType ("phase_end" ), EventPhaseEnd )
688+ assert .Equal (t , DialogueEventType ("validation_result" ), EventValidationResult )
689+ assert .Equal (t , DialogueEventType ("polish_result" ), EventPolishResult )
690+ assert .Equal (t , DialogueEventType ("final_synthesis" ), EventFinalSynthesis )
691+ })
692+
693+ t .Run ("Phase event types are unique" , func (t * testing.T ) {
694+ types := []DialogueEventType {
695+ EventPhaseStart , EventPhaseProgress , EventPhaseEnd ,
696+ EventValidationResult , EventPolishResult , EventFinalSynthesis ,
697+ }
698+ uniqueTypes := make (map [DialogueEventType ]bool )
699+ for _ , et := range types {
700+ assert .False (t , uniqueTypes [et ], "Event type %s should be unique" , et )
701+ uniqueTypes [et ] = true
702+ }
703+ })
704+ }
705+
706+ // TestPhaseEventData tests the phase event data structure
707+ func TestPhaseEventData (t * testing.T ) {
708+ t .Run ("Creates valid phase event data" , func (t * testing.T ) {
709+ data := PhaseEventData {
710+ Phase : "validation" ,
711+ PhaseOrder : 2 ,
712+ PhaseIcon : "✓" ,
713+ ValidationScore : 0.85 ,
714+ PolishScore : 0.0 ,
715+ Confidence : 0.8 ,
716+ }
717+ assert .Equal (t , "validation" , data .Phase )
718+ assert .Equal (t , 2 , data .PhaseOrder )
719+ assert .Equal (t , "✓" , data .PhaseIcon )
720+ assert .InDelta (t , 0.85 , data .ValidationScore , 0.01 )
721+ assert .Equal (t , 0.0 , data .PolishScore )
722+ assert .InDelta (t , 0.8 , data .Confidence , 0.01 )
723+ })
634724}
635725
636726// TestDebateRound tests debate round struct
0 commit comments