Added basic testing for init failing. Now to add support for testing for the lack of a programmer error.
This commit is contained in:
parent
761d3a434a
commit
41e62cdce1
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue