Added more test cases. Also more TODOs in testing_testing.c.

This commit is contained in:
Pietro Gagliardi 2018-03-03 17:01:40 -05:00
parent 6c29932efe
commit 4179ff86c2
2 changed files with 76 additions and 3 deletions

View File

@ -27,15 +27,86 @@ static void freeOpenType(void *otf)
testingTest(OpenTypeFeaturesAddGet) testingTest(OpenTypeFeaturesAddGet)
{ {
uiOpenTypeFeatures *otf; uiOpenTypeFeatures *otf;
int got;
uint32_t value; uint32_t value;
otf = uiNewOpenTypeFeatures(); otf = uiNewOpenTypeFeatures();
testingTDefer(t, freeOpenType, otf); testingTDefer(t, freeOpenType, otf);
uiOpenTypeFeaturesAdd(otf, 'a', 'b', 'c', 'd', 12345); uiOpenTypeFeaturesAdd(otf, 'a', 'b', 'c', 'd', 12345);
if (!uiOpenTypeFeaturesGet(otf, 'a', 'b', 'c', 'd', &value)) got = uiOpenTypeFeaturesGet(otf, 'a', 'b', 'c', 'd', &value);
testingTFatalf(t, "uiOpenTypeFeaturesGet() failed to get feature we added");
if (!got)
testingTErrorf(t, "uiOpenTypeFeaturesGet() failed to get feature we added");
else if (value != 12345)
testingTErrorf(t, "feature abcd: got %" PRIu32 ", want 12345", value);
}
testingTest(OpenTypeFeaturesRemove)
{
uiOpenTypeFeatures *otf;
uint32_t value;
otf = uiNewOpenTypeFeatures();
testingTDefer(t, freeOpenType, otf);
uiOpenTypeFeaturesAdd(otf, 'a', 'b', 'c', 'd', 12345);
uiOpenTypeFeaturesRemove(otf, 'a', 'b', 'c', 'd');
if (uiOpenTypeFeaturesGet(otf, 'a', 'b', 'c', 'd', &value))
testingTErrorf(t, "uiOpenTypeFeaturesGet() succeeded in getting deleted feature; value %" PRIu32, value);
}
testingTest(OpenTypeFeaturesCloneAdd)
{
uiOpenTypeFeatures *otf, *otf2;
uint32_t value;
otf = uiNewOpenTypeFeatures();
testingTDefer(t, freeOpenType, otf);
uiOpenTypeFeaturesAdd(otf, 'a', 'b', 'c', 'd', 12345);
otf2 = uiOpenTypeFeaturesClone(otf);
testingTDefer(t, freeOpenType, otf2);
uiOpenTypeFeaturesAdd(otf2, 'q', 'w', 'e', 'r', 56789);
if (uiOpenTypeFeaturesGet(otf, 'q', 'w', 'e', 'r', &value))
testingTErrorf(t, "uiOpenTypeFeaturesGet() on original succeeded in getting feature added to clone; value %" PRIu32, value);
}
testingTest(OpenTypeFeaturesCloneModify)
{
uiOpenTypeFeatures *otf, *otf2;
uint32_t value;
otf = uiNewOpenTypeFeatures();
testingTDefer(t, freeOpenType, otf);
uiOpenTypeFeaturesAdd(otf, 'a', 'b', 'c', 'd', 12345);
otf2 = uiOpenTypeFeaturesClone(otf);
testingTDefer(t, freeOpenType, otf2);
uiOpenTypeFeaturesAdd(otf2, 'a', 'b', 'c', 'd', 56789);
uiOpenTypeFeaturesGet(otf, 'a', 'b', 'c', 'd', &value);
if (value != 12345) if (value != 12345)
testingTFatalf(t, "feature abcd: got %" PRIu32 ", want 12345", value); testingTErrorf(t, "uiOpenTypeFeaturesGet() on original: got %" PRIu32 ", want 12345", value);
uiOpenTypeFeaturesGet(otf2, 'a', 'b', 'c', 'd', &value);
if (value != 56789)
testingTErrorf(t, "uiOpenTypeFeaturesGet() on clone: got %" PRIu32 ", want 56789", value);
}
testingTest(OpenTypeFeaturesCloneRemove)
{
uiOpenTypeFeatures *otf, *otf2;
uint32_t value;
otf = uiNewOpenTypeFeatures();
testingTDefer(t, freeOpenType, otf);
uiOpenTypeFeaturesAdd(otf, 'a', 'b', 'c', 'd', 12345);
otf2 = uiOpenTypeFeaturesClone(otf);
testingTDefer(t, freeOpenType, otf2);
uiOpenTypeFeaturesRemove(otf2, 'a', 'b', 'c', 'd');
if (uiOpenTypeFeaturesGet(otf2, 'a', 'b', 'c', 'd', &value))
testingTErrorf(t, "uiOpenTypeFeaturesGet() on clone succeeded in getting feature removed from clone; value %" PRIu32, value);
if (!uiOpenTypeFeaturesGet(otf, 'a', 'b', 'c', 'd', &value))
testingTErrorf(t, "uiOpenTypeFeaturesGet() on original failed to get feature removed from clone");
} }
int main(void) int main(void)

View File

@ -36,6 +36,7 @@ void testingprivRegisterTest(const char *name, void (*f)(testingT *))
t->skipped = 0; t->skipped = 0;
t->defers = NULL; t->defers = NULL;
t->defersRun = 0; t->defersRun = 0;
// TODO add in the order called
t->next = tests; t->next = tests;
tests = t; tests = t;
} }
@ -137,6 +138,7 @@ void testingTDefer(testingT *t, void (*f)(void *data), void *data)
d = testingprivNew(struct defer); d = testingprivNew(struct defer);
d->f = f; d->f = f;
d->data = data; d->data = data;
// add to the head of the list so defers are run in reverse order of how they were added
d->next = t->defers; d->next = t->defers;
t->defers = d; t->defers = d;
} }