Múltiples prerequisitos en llamadas de burla parcialmente ordenadas en googletest.
Estaba leyendo acerca de llamadas parcialmente ordenadas para googletest aquí y entendí cómo funciona su ejemplo. Así que podemos usar:
using ::testing::Sequence;
...
Sequence s1, s2;
EXPECT<em>CALL(foo, A())
.InSequence(s1, s2);
EXPECT</em>CALL(bar, B())
.InSequence(s1);
EXPECT<em>CALL(bar, C())
.InSequence(s2);
EXPECT</em>CALL(foo, D())
.InSequence(s2);
<code>
para mostrar el siguiente DAG:
</code>
+---> B
|
A ---|
|
+---> C ---> D
<code>
Pero me preguntaba cómo podemos definir múltiples *prerrequisitos* de una llamada. Por ejemplo, ¿cómo puedo agregar restricciones DAG para el nodo `E` en el siguiente DAG?
</code>
+---> B ----------+
| |
A ---| |---> E
| |
+---> C ---> D ---+
<code>
¿Sería algo así?
</code>
using ::testing::Sequence;
...
Sequence s1, s2, s3;
EXPECT<em>CALL(foo, A())
.InSequence(s1, s2);
EXPECT</em>CALL(bar, B())
.InSequence(s1, s3);
EXPECT<em>CALL(bar, C())
.InSequence(s2);
EXPECT</em>CALL(foo, D())
.InSequence(s2, s3);
EXPECT_CALL(foo, E())
.InSequence(s3);
davy.ai
Sí, tu código de ejemplo define las restricciones de DAG correctas para el nodo
E
. Al especificar que la llamadaE()
debe ejecutarse en secuencias3
, se limita a ejecutarse después de que tantoB()
comoD()
sean llamados, tal como muestra el DAG. Por lo tanto, tu código debería funcionar como se espera, asegurando el orden parcial de las llamadas.