+
+ if (strcmp(t->err, t->expected_err) != 0) {
+ fprintf(stderr, "Test line %d: expecting %s got %s\n",
+ t->start_line, t->expected_err, t->err);
+ return 0;
+ }
+
+ if (t->func == NULL && t->reason == NULL)
+ return 1;
+
+ if (t->func == NULL || t->reason == NULL) {
+ fprintf(stderr, "Test line %d: missing function or reason code\n",
+ t->start_line);
+ return 0;
+ }
+
+ err = ERR_peek_error();
+ if (err == 0) {
+ fprintf(stderr, "Test line %d, expected error \"%s:%s\" not set\n",
+ t->start_line, t->func, t->reason);
+ return 0;
+ }
+
+ func = ERR_func_error_string(err);
+ reason = ERR_reason_error_string(err);
+
+ if (func == NULL && reason == NULL) {
+ fprintf(stderr, "Test line %d: expected error \"%s:%s\", no strings available. Skipping...\n",
+ t->start_line, t->func, t->reason);
+ return 1;
+ }
+
+ if (strcmp(func, t->func) == 0 && strcmp(reason, t->reason) == 0)