diff --git a/common/controls.c b/common/controls.c index 483fec4f..096bc6b2 100644 --- a/common/controls.c +++ b/common/controls.c @@ -1,5 +1,6 @@ // 8 june 2019 #include "uipriv.h" +#include "testhooks.h" struct controlType { uint32_t id; @@ -202,3 +203,13 @@ void *uiControlImplData(uiControl *c) } return c->implData; } + +static uiControl testHookControlWithInvalidType = { + .controlID = controlTypeID, + .typeID = 5, +}; + +uiControl *uiprivTestHookControlWithInvalidType(void) +{ + return &testHookControlWithInvalidType; +} diff --git a/common/testhooks.h b/common/testhooks.h index 986c6fc4..a6076001 100644 --- a/common/testhooks.h +++ b/common/testhooks.h @@ -8,6 +8,9 @@ extern "C" { typedef void (*uiprivTestHookReportProgrammerErrorFunc)(const char *msg, void *data); uiprivExtern void uiprivTestHookReportProgrammerError(uiprivTestHookReportProgrammerErrorFunc f, void *data); +// controls.c +uiprivExtern uiControl *uiprivTestHookControlWithInvalidType(void); + #ifdef __cplusplus } #endif diff --git a/test/controls_errors.cpp b/test/controls_errors.cpp index f581e32f..783f2cc5 100644 --- a/test/controls_errors.cpp +++ b/test/controls_errors.cpp @@ -73,9 +73,16 @@ static const struct checkErrorCase casesAfterOSVtable[] = { { "uiCheckControlType() with a control with an unknown type", [](void) { - // TODO + uiCheckControlType(uiprivTestHookControlWithInvalidType(), testControlType); }, - "TODO", + "uiCheckControlType(): unknown uiControl type 5 found in uiControl (this is likely not a real uiControl or some data is corrupt)", + }, + { + "uiCheckControlType() with a control with an unknown type, even with uiControlType()", + [](void) { + uiCheckControlType(uiprivTestHookControlWithInvalidType(), uiControlType()); + }, + "uiCheckControlType(): unknown uiControl type 5 found in uiControl (this is likely not a real uiControl or some data is corrupt)", }, { "uiCheckControlType() asking for an unknown control type",