Referencia · 01

Aserciones con contexto.

Las aserciones son bloques independientes y tipados. Todas comparten el mismo contrato de contadores y diagnóstico.

Catálogo actual

AserciónTiposCódigoComprueba
FB_AssertEquals_INTINT1Expected = Actual
FB_AssertEquals_BOOLBOOL2Expected = Actual
FB_AssertNotEquals_INTINT3Expected <> Actual
FB_AssertGreaterThan_INTINT4Actual > ExpectedGreater
FB_AssertEquals_DINTDINT5Expected = Actual
FB_AssertTrueBOOL6Condition = TRUE
FB_AssertFalseBOOL7Condition = FALSE
FB_AssertNotEquals_BOOLBOOL8Expected <> Actual
FB_AssertLessThan_INTINT9Actual < ExpectedLess
FB_AssertLessOrEqual_INTINT10Actual <= ExpectedLessOrEqual
FB_AssertGreaterOrEqual_INTINT11Actual >= ExpectedGreaterOrEqual
FB_AssertInRange_INTINT12Minimum <= Actual <= Maximum
FB_AssertNear_REALREAL13|Actual - Expected| <= Tolerance
FB_AssertBitSet_WORDWORD14(Value AND Mask) = Mask
FB_AssertBitClear_WORDWORD15(Value AND Mask) = 0
FB_AssertEventuallyBOOL / scans16Condition dentro de TimeoutScans

Los rangos son inclusivos. FB_AssertNear_REAL usa tolerancia absoluta. Las aserciones de bits trabajan con máscaras WORD y FB_AssertEventually conserva el estado entre scans hasta que la condición se cumple o vence el límite.

Contrato del diagnóstico

TYPE ST_AssertionDiagnostic :
STRUCT
    Expected : DINT;
    Actual   : DINT;
    ExpectedReal : LREAL;
    ActualReal   : LREAL;
    ToleranceReal : LREAL;
    Code     : INT;
END_STRUCT;
END_TYPE

Para un caso correcto se conserva la primera aserción como diagnóstico representativo. Cuando una aserción falla, el contexto conserva los valores esperado y actual de la última que falló. Las aserciones REAL añaden precisión extendida y tolerancia en el reporte JSON y JUnit.

Añadir una aserción

  1. Crea un bloque independiente en core/assertions/.
  2. Declara Context : ST_TestCaseContext como VAR_IN_OUT.
  3. Incrementa AssertCount y exactamente uno de PassCount o FailCount.
  4. Expón el bloque desde core/STUnit.st.
  5. Añade casos positivos y negativos a la suite.

Aserciones listas.
Ejecuta una suite completa o filtra por tags.

Ver el runner →