es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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);
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, tu código de ejemplo define las restricciones de DAG correctas para el nodo E. Al especificar que la llamada E() debe ejecutarse en secuencia s3, se limita a ejecutarse después de que tanto B() como D() 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.

Comments are closed.