aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@users.noreply.github.com>2020-04-19 00:35:25 -0400
committerGitHub <noreply@github.com>2020-04-19 00:35:25 -0400
commit57c9489b28a481abc078ad3a2dd197079f9c414b (patch)
tree12cc1ea0186b242a82d87bc2f62142e5decefedb /tests
parent59f7d29e2d707373ba1153337dca3279a2e3acc5 (diff)
parent8cdddbb0f1a8c6eb023cbe732e5701240a54ff3c (diff)
downloadspmc-57c9489b28a481abc078ad3a2dd197079f9c414b.tar.gz
Merge pull request #25 from jhunkeler/error-handler-etc
Error handler etc
Diffstat (limited to 'tests')
-rw-r--r--tests/test_error_handler_spm_strerror.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/test_error_handler_spm_strerror.c b/tests/test_error_handler_spm_strerror.c
new file mode 100644
index 0000000..f373a59
--- /dev/null
+++ b/tests/test_error_handler_spm_strerror.c
@@ -0,0 +1,27 @@
+#include "spm.h"
+#include "framework.h"
+
+const char *testFmt = "translated error code '%d': returned '%s', expected '%s'\n";
+struct TestCase testCase[] = {
+ {.caseValue.signed_integer = 0, .truthValue.sptr = "Success", .arg[0].signed_integer = 0},
+ {.caseValue.signed_integer = SPM_ERR_ROOT_NO_RECORD, .truthValue.sptr = "No root record", .arg[0].signed_integer = 0},
+ {.caseValue.signed_integer = SPM_ERR_ROOT_UNSAFE, .truthValue.sptr = "Dangerous root path", .arg[0].signed_integer = 0},
+ {.caseValue.signed_integer = ENOENT, .truthValue.sptr = "No such file or directory", .arg[0].signed_integer = ENOENT},
+ {.caseValue.signed_integer = EPIPE, .truthValue.sptr = "Broken pipe", .arg[0].signed_integer = EPIPE},
+ {.caseValue.signed_integer = -1, .truthValue.sptr = "Unknown error -1", .arg[0].signed_integer = 0},
+};
+size_t numCases = sizeof(testCase) / sizeof(struct TestCase);
+
+int main(int argc, char *argv[]) {
+ for (size_t i = 0; i < numCases; i++) {
+ // Mock global errno value to the value stored in the test case
+ errno = testCase[i].arg[0].signed_integer;
+
+ // Get SPM error (or system error)
+ char *estr = spm_strerror(testCase[i].caseValue.signed_integer);
+
+ // Assert error string matches error produced
+ myassert(strcmp(estr, testCase[i].truthValue.sptr) == 0, testFmt, testCase[i].caseValue.signed_integer, estr, testCase[i].truthValue.sptr);
+ }
+ return 0;
+} \ No newline at end of file