///|
test "evaluate a compiled access rule" (bench : @bench.T) {
let program = compile(
"user.age >= 18 && user.country in [\"CN\", \"SG\"] && contains(user.roles, \"owner\") && user.active",
).unwrap()
let input : Json = {
"user": {
"age": 24,
"country": "CN",
"roles": ["editor", "owner"],
"active": true,
},
}
bench.bench(fn() { bench.keep(evaluate(program, input)) })
}
///|
test "evaluate a six-rule API policy" (bench : @bench.T) {
let rules = RuleSet::compile([
RuleDefinition::new("id", "is_uuid(request?.id)", "id"),
RuleDefinition::new("email", "is_email(request?.email)", "email"),
RuleDefinition::new("date", "is_date(request?.date)", "date"),
RuleDefinition::new("ip", "is_ipv4(request?.ip)", "ip"),
RuleDefinition::new("version", "is_semver(request?.version)", "version"),
RuleDefinition::new("active", "request?.active == true", "active"),
]).unwrap()
let input : Json = {
"request": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"email": "dev@example.com",
"date": "2026-07-27",
"ip": "192.168.1.20",
"version": "1.2.3",
"active": true,
},
}
bench.bench(fn() { bench.keep(rules.evaluate(input)) })
}
///|
test "run four regression cases against two rules" (bench : @bench.T) {
let rules = RuleSet::compile([
RuleDefinition::new("adult", "user?.age >= 18", "adult"),
RuleDefinition::new(
"email", "is_email(coalesce(user?.email, \"\"))", "email",
),
]).unwrap()
let suite = RuleTestSuite::new([
RuleTestCase::new(
"valid",
{ "user": { "age": 24, "email": "dev@example.com" } },
true,
),
RuleTestCase::new(
"minor",
{ "user": { "age": 12, "email": "dev@example.com" } },
false,
expected_failed_rules=["adult"],
),
RuleTestCase::new(
"bad email",
{ "user": { "age": 24, "email": "bad" } },
false,
expected_failed_rules=["email"],
),
RuleTestCase::new(
"both invalid",
{ "user": { "age": 12, "email": "bad" } },
false,
expected_failed_rules=["adult", "email"],
),
]).unwrap()
bench.bench(fn() { bench.keep(rules.run_test_suite(suite)) })
}