diff --git a/test/append-test-log.c b/test/append-test-log.c index 3ce40f1..e9c798e 100644 --- a/test/append-test-log.c +++ b/test/append-test-log.c @@ -52,6 +52,7 @@ static void mf_chk_first(TestState *, void *); static void mf_chk_second(TestState *, void *); static void mf_chk_third(TestState*, void *); static void mk_log_data(LogData *); +static void clean_entry(TestLogEntry *); static void chk_ptr_chg( TestState *, @@ -128,6 +129,11 @@ missing_first(TestState *s) append_test_log(&ld.state, "baz"); test_context_with(s, "first_log", mf_chk_first, &ld); test_context_with(s, "last_log", chk_last, &ld); + TestLogEntry + *context = ld.second.next, + *warning = context->next; + clean_entry(context); + clean_entry(warning); } static void @@ -197,8 +203,7 @@ chk_last(TestState *s, void *ptr) chk_ptr_chg(s, 0, ld->state.last_log, &ld->second); chk_str_eq(s, "text", ld->state.last_log->text, "baz"); chk_ptr_eq(s, "next", ld->state.last_log->next, 0); - free(ld->state.last_log->text); - free(ld->state.last_log); + clean_entry(ld->state.last_log); } static void @@ -272,4 +277,11 @@ chk_ptr_chg_test( chk_ptr_ne(s, "not null", actual, 0); } +static void +clean_entry(TestLogEntry *e) +{ + free(e->text); + free(e); +} + //jl diff --git a/test/run-test-with.c b/test/run-test-with.c new file mode 100644 index 0000000..cfa2c33 --- /dev/null +++ b/test/run-test-with.c @@ -0,0 +1,71 @@ +/* + + 9unit + Copyright (C) Jonathan Lamothe + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program. If not, see + . + +*/ + +#include +#include + +#include "../9unit.h" +#include "util.h" +#include "run-test-with.h" + +// Internal Prototypes + +static TestResult test_run_test_with_test(TestState *, void *); + +// Public Functions + +void +test_run_test_with(TestState *s) +{ + TestState actual, expected; + + // build initial state + mk_sample_state(&actual); + void + *pass_in = malloc(0), + *passed_in = 0; + actual.ptr = &passed_in; + + // run it and see what was passed + run_test_with(&actual, test_run_test_with_test, pass_in); + chk_ptr_eq(s, "value passed", passed_in, pass_in); + + // ensure the state was updated correctly + mk_sample_state(&expected); + expected.passed = 2; + expected.run = 7; + expected.ptr = &passed_in; + chk_TestState_eq(s, "resulting state", &actual, &expected); + + free(pass_in); +} + +// Internal Functions + +static TestResult +test_run_test_with_test(TestState *s, void *ptr) +{ + void **passed_in = s->ptr; + *passed_in = ptr; + return test_success; +} + +//jl diff --git a/test/run-test-with.h b/test/run-test-with.h new file mode 100644 index 0000000..2c4b3b0 --- /dev/null +++ b/test/run-test-with.h @@ -0,0 +1,24 @@ +/* + + 9unit + Copyright (C) Jonathan Lamothe + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this program. If not, see + . + +*/ + +extern void test_run_test_with(TestState *); + +//jl diff --git a/test/tests.c b/test/tests.c index e2b2ad4..cea7959 100644 --- a/test/tests.c +++ b/test/tests.c @@ -55,7 +55,7 @@ tests(TestState *s) test_context_with(s, "initial state", test_initial_state, &scpy); test_context(s, "run_test()", test_run_test); - test_contest(s, "run_test_with()", test_run_test_with); + test_context(s, "run_test_with()", test_run_test_with); test_context(s, "append_test_log()", test_append_test_log); test_context(s, "test_context()", test_test_context); }