
This brings our tree to NetBSD 7.0, as found on -current on the 10-10-2015. This updates: - LLVM to 3.6.1 - GCC to GCC 5.1 - Replace minix/commands/zdump with usr.bin/zdump - external/bsd/libelf has moved to /external/bsd/elftoolchain/ - Import ctwm - Drop sprintf from libminc Change-Id: I149836ac18e9326be9353958bab9b266efb056f0
90 lines
2.2 KiB
C
90 lines
2.2 KiB
C
/* $NetBSD: test_expr.c,v 1.1.1.2 2014/04/24 12:45:42 pettai Exp $ */
|
|
|
|
|
|
#include "hx_locl.h"
|
|
#include <err.h>
|
|
|
|
struct foo {
|
|
int val;
|
|
char *str;
|
|
} foo[] = {
|
|
{ 0, "FALSE" },
|
|
{ 1, "TRUE" },
|
|
{ 0, "!TRUE" },
|
|
{ 0, "! TRUE" },
|
|
{ 0, "!\tTRUE" },
|
|
{ 0, "( FALSE AND FALSE )" },
|
|
{ 0, "( TRUE AND FALSE )" },
|
|
{ 1, "( TRUE AND TRUE )" },
|
|
{ 1, "( TRUE OR TRUE )" },
|
|
{ 1, "( TRUE OR FALSE )" },
|
|
{ 0, "( FALSE OR FALSE )" },
|
|
{ 1, "! ( FALSE OR FALSE )" },
|
|
|
|
{ 1, "\"foo\" TAILMATCH \"foo\"" },
|
|
{ 1, "\"foobar\" TAILMATCH \"bar\"" },
|
|
{ 0, "\"foobar\" TAILMATCH \"foo\"" },
|
|
|
|
{ 1, "\"foo\" == \"foo\"" },
|
|
{ 0, "\"foo\" == \"bar\"" },
|
|
{ 0, "\"foo\" != \"foo\"" },
|
|
{ 1, "\"foo\" != \"bar\"" },
|
|
{ 1, "%{variable} == \"foo\"" },
|
|
{ 0, "%{variable} == \"bar\"" },
|
|
{ 1, "%{context.variable} == \"foo\"" },
|
|
{ 0, "%{context.variable} == \"bar\"" },
|
|
{ 1, "\"foo\" IN ( \"bar\", \"foo\")" },
|
|
{ 0, "\"foo\" IN ( \"bar\", \"baz\")" },
|
|
{ 0, "\"bar\" IN %{context}" },
|
|
{ 1, "\"foo\" IN %{context}" },
|
|
{ 1, "\"variable\" IN %{context}" },
|
|
|
|
{ 1, "\"foo\" IN %{context} AND %{context.variable} == \"foo\"" }
|
|
};
|
|
|
|
int
|
|
main(int argc, char **argv)
|
|
{
|
|
struct hx_expr *expr;
|
|
hx509_context context;
|
|
hx509_env env = NULL, env2 = NULL;
|
|
int val, i, ret;
|
|
|
|
#if 0
|
|
extern int yydebug;
|
|
yydebug = 1;
|
|
#endif
|
|
|
|
ret = hx509_context_init(&context);
|
|
if (ret)
|
|
errx(1, "hx509_context_init failed with %d", ret);
|
|
|
|
hx509_env_add(context, &env, "variable", "foo");
|
|
hx509_env_add(context, &env2, "variable", "foo");
|
|
hx509_env_add_binding(context, &env, "context", env2);
|
|
|
|
for (i = 0; i < sizeof(foo)/sizeof(foo[0]); i++) {
|
|
|
|
expr = _hx509_expr_parse(foo[i].str);
|
|
if (expr == NULL)
|
|
errx(1, "_hx509_expr_parse failed for %d: %s", i, foo[i].str);
|
|
|
|
val = _hx509_expr_eval(context, env, expr);
|
|
if (foo[i].val) {
|
|
if (val == 0)
|
|
errx(1, "_hx509_expr_eval not true when it should: %d: %s",
|
|
i, foo[i].str);
|
|
} else {
|
|
if (val)
|
|
errx(1, "_hx509_expr_eval true when it should not: %d: %s",
|
|
i, foo[i].str);
|
|
}
|
|
|
|
_hx509_expr_free(expr);
|
|
}
|
|
|
|
hx509_env_free(&env);
|
|
|
|
return 0;
|
|
}
|