Added basic testing for init failing. Now to add support for testing for the lack of a programmer error.

This commit is contained in:
Pietro Gagliardi 2020-05-09 02:04:51 -04:00
parent 761d3a434a
commit 41e62cdce1
3 changed files with 33 additions and 0 deletions

View File

@ -1,5 +1,6 @@
// 19 april 2019 // 19 april 2019
#include "uipriv.h" #include "uipriv.h"
#include "testhooks.h"
enum { enum {
stateUninitialized, stateUninitialized,
@ -14,6 +15,13 @@ static int state = stateUninitialized;
#define initialized() (state != stateUninitialized && state != stateError) #define initialized() (state != stateUninitialized && state != stateError)
bool testHookInitShouldFail = false;
void uiprivTestHookSetInitShouldFailArtificially(bool shouldFail)
{
testHookInitShouldFail = shouldFail;
}
bool uiInit(void *options, uiInitError *err) bool uiInit(void *options, uiInitError *err)
{ {
if (state != stateUninitialized) { if (state != stateUninitialized) {
@ -37,6 +45,10 @@ bool uiInit(void *options, uiInitError *err)
return false; return false;
} }
if (testHookInitShouldFail) {
state = stateError;
return uiprivInitReturnErrorf(err, "general failure");
}
if (!uiprivSysInit(options, err)) { if (!uiprivSysInit(options, err)) {
state = stateError; state = stateError;
return false; return false;

View File

@ -4,6 +4,9 @@
extern "C" { extern "C" {
#endif #endif
// main.c
uiprivExtern void uiprivTestHookSetInitShouldFailArtificially(bool shouldFail);
// errors.c // errors.c
typedef void (*uiprivTestHookReportProgrammerErrorFunc)(const char *msg, void *data); typedef void (*uiprivTestHookReportProgrammerErrorFunc)(const char *msg, void *data);
uiprivExtern void uiprivTestHookReportProgrammerError(uiprivTestHookReportProgrammerErrorFunc f, void *data); uiprivExtern void uiprivTestHookReportProgrammerError(uiprivTestHookReportProgrammerErrorFunc f, void *data);

View File

@ -1,9 +1,27 @@
// 10 april 2019 // 10 april 2019
#include "test.h" #include "test.h"
#include "thread.h" #include "thread.h"
#include "../common/testhooks.h"
// TODO test the number of calls to queued functions made // TODO test the number of calls to queued functions made
TestNoInit(InitFailure)
{
uiInitError err;
//TODO void *ctx;
//TODO ctx = beginCheckProgrammerError(NULL);
uiprivTestHookSetInitShouldFailArtificially(true);
memset(&err, 0, sizeof (uiInitError));
err.Size = sizeof (uiInitError);
if (uiInit(NULL, &err))
TestErrorf("uiInit() succeeded; expected failure");
else if (strcmp(err.Message, "general failure") != 0)
TestErrorf("uiInit() failed with wrong message:" diff("%s"),
err.Message, "general failure");
//TODO endCheckProgrammerError(ctx);
}
TestNoInit(InitWithNonNullOptionsIsProgrammerError) TestNoInit(InitWithNonNullOptionsIsProgrammerError)
{ {
void *ctx; void *ctx;