diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-04-28 13:46:47 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2020-04-28 13:46:47 -0400 |
commit | 94e1cd46a031b60ddaa51f3d08f61ec46c77a97b (patch) | |
tree | a6be73dd1ab18d44160dee6056d2ec7dacacf37e /tests/test_environment.c | |
parent | 165fc0645c4bcd0c0120931ea99339f7b9559c61 (diff) | |
download | spmc-94e1cd46a031b60ddaa51f3d08f61ec46c77a97b.tar.gz |
Refactor TestValue usage
Diffstat (limited to 'tests/test_environment.c')
-rw-r--r-- | tests/test_environment.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/test_environment.c b/tests/test_environment.c new file mode 100644 index 0000000..d081dac --- /dev/null +++ b/tests/test_environment.c @@ -0,0 +1,40 @@ +#include "spm.h" +#include "framework.h" + +const char *testFmt = "returned '%s', expected '%s'\n"; +struct TestCase testCase = { + .caseValue.voidptr = (char *[]){"test1=one", "test2=two", NULL}, + .inputValue.voidptr = (char *[]){"test1", "test2", NULL}, + .truthValue.voidptr = (char *[]){"one", "two", NULL}, + .arg[0].sptr = "one hundred", +}; + +int main(int argc, char *argv[]) { + RuntimeEnv *rt = NULL; + char **pInput = (char **)testCase.inputValue.voidptr; + char **pTruth = (char **)testCase.truthValue.voidptr; + + rt = runtime_copy((char **)testCase.caseValue.voidptr); + myassert(rt != NULL, "runtime_copy failed"); + + // Are the keys we just inserted actually there? + for (size_t j = 0; pInput[j] != NULL; j++) { + char *result = runtime_get(rt, pInput[j]); + myassert(strcmp(result, pTruth[j]) == 0, "returned '%s', expected '%s'\n", result, pTruth[j]); + } + + // Set a key that already exists to have a different value + runtime_set(rt, pInput[0], testCase.arg[0].sptr); + myassert(strcmp(runtime_get(rt, pInput[0]), testCase.arg[0].sptr) == 0, + "runtime_set changed contents of '%s', but did not work: '%s'\n", runtime_get(rt, pInput[0]), runtime_get(rt, pInput[0])); + + myassert(runtime_contains(rt, pInput[0]) >= 0, "key '%s' is not present", pInput[0]); + myassert(runtime_contains(rt, pInput[1]) >= 0, "key '%s' is not present", pInput[1]); + + // Apply changes in `rt` to system environment + runtime_apply(rt); + myassert(getenv(pInput[0]) != NULL, "runtime_apply failed"); + myassert(getenv(pInput[1]) != NULL, "runtime_apply failed"); + + runtime_free(rt); +}
\ No newline at end of file |