@@ -103,8 +103,23 @@ TYPED_TEST_P(DominoTest, bugFix_shallDeduceAll)
103103 EXPECT_TRUE (PARA_DOM->state (" e2" ));
104104}
105105
106- #define INVALID_PREV
106+ #define PREV
107107// ***********************************************************************************************
108+ TYPED_TEST_P (DominoTest, GOLD_multi_allPrevSatisfied_thenPropagate)
109+ {
110+ // e3 depends on e1(T) AND e2(F)
111+ PARA_DOM->setPrev (" e3" , {{" e1" , true }, {" e2" , false }});
112+ EXPECT_FALSE (PARA_DOM->state (" e3" )) << " REQ: not all prev satisfied yet" ;
113+
114+ PARA_DOM->setState ({{" e1" , true }});
115+ EXPECT_TRUE (PARA_DOM->state (" e3" )) << " REQ: all prev satisfied => propagate T" ;
116+
117+ PARA_DOM->setState ({{" e2" , true }}); // now e2==true breaks link=false
118+ EXPECT_FALSE (PARA_DOM->state (" e3" )) << " REQ: one prev unsatisfied => propagate F" ;
119+
120+ PARA_DOM->setState ({{" e1" , false }}); // e1==false breaks link=true too
121+ EXPECT_FALSE (PARA_DOM->state (" e3" )) << " REQ: no prev satisfied => stay F" ;
122+ }
108123TYPED_TEST_P (DominoTest, invalid_loopSelf)
109124{
110125 EXPECT_EQ (Domino::D_EVENT_FAILED_RET, PARA_DOM->setPrev (" e1" , {{" e1" , true }})) << " REQ: can't loop self" ;
@@ -126,7 +141,7 @@ TYPED_TEST_P(DominoTest, invalid_mixLoop)
126141 EXPECT_NE (Domino::D_EVENT_FAILED_RET, PARA_DOM->setPrev (" e0" , {{" e1" , false }}));
127142 EXPECT_EQ (Domino::D_EVENT_FAILED_RET, PARA_DOM->setPrev (" e1" , {{" e0" , true }})) << " REQ: can't T/F mix loop" ;
128143}
129- TYPED_TEST_P (DominoTest, invalidPrev_toBothTrueAndFalse )
144+ TYPED_TEST_P (DominoTest, whyFalse_diagnoseTrueFalseConflict )
130145{
131146 // e11 <- (T) <- e10
132147 // \ /
@@ -293,11 +308,12 @@ REGISTER_TYPED_TEST_SUITE_P(DominoTest
293308 , setState_onlyAtChainHead
294309 , bugFix_shallDeduceAll
295310
311+ , GOLD_multi_allPrevSatisfied_thenPropagate
296312 , invalid_loopSelf
297313 , invalid_deepLoop
298314 , invalid_deeperLoop
299315 , invalid_mixLoop
300- , invalidPrev_toBothTrueAndFalse
316+ , whyFalse_diagnoseTrueFalseConflict
301317
302318 , GOLD_multi_retOne
303319 , trueEvent_retEmpty
0 commit comments