+++ /dev/null
-/*
- * Copyright (c) 2009 Apple Inc. All Rights Reserved.
- */
-
-#include <securityd/policytree.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <libDER/oids.h>
-
-#include "securityd_regressions.h"
-
-#define DUMP_POLICY_TREE 0
-
-int verbose = DUMP_POLICY_TREE;
-
-static bool randomly_add_children(policy_tree_t node, void *ctx) {
- int i, count;
- uint32_t rnd = arc4random();
-#if 1
- count = rnd % 7;
- if (count > 4)
- count = 0;
-#else
- if (rnd < 0x40000000) {
- count = 1;
- } else if (rnd < 0x80000000) {
- count = 2;
- } else if (rnd < 0xc0000000) {
- count = 3;
- } else if (rnd < 0xf0000000) {
- count = 4;
- } else {
- count = 0;
- }
-#endif
-
-#if DUMP_POLICY_TREE
- diag("node %p add %d children", node, count);
-#endif
- for (i = 1; i <= count ; ++i) {
- policy_tree_add_child(node, &oidAnyPolicy, NULL);
- //diag("node %p %d/%d children added", node, i, count);
- //policy_tree_dump(node);
- }
- return count != 0;
-}
-
-static void tests(void)
-{
- policy_qualifier_t p_q = NULL;
- policy_tree_t tree;
- ok(tree = policy_tree_create(&oidAnyPolicy, p_q),
- "create tree root");
- if (verbose) policy_tree_dump(tree);
-
-#if 0
- int i, count = 4;
- for (i = 1; i <= count ; ++i) {
- policy_tree_add_child(tree, &oidAnyPolicy, NULL);
-#if DUMP_POLICY_TREE
- diag("node %p %d/%d children added", tree, i, count);
-#endif
- }
- policy_tree_dump(tree);
-#else
- int depth;
- for (depth = 0; tree && depth < 7; ++depth) {
- bool added = false;
- while (!added) {
- added = policy_tree_walk_depth(tree, depth,
- randomly_add_children, NULL);
-#if DUMP_POLICY_TREE
- diag("depth: %d %s", depth,
- (added ? "added children" : "no children added"));
-#endif
- }
- if (verbose) policy_tree_dump(tree);
-#if DUMP_POLICY_TREE
- diag("prune_childless depth: %d", depth);
-#endif
- policy_tree_prune_childless(&tree, depth);
- if (verbose) {
- if (tree)
- policy_tree_dump(tree);
- else {
-#if DUMP_POLICY_TREE
- diag("tree empty at depth: %d", depth);
-#endif
- break;
- }
- }
- }
-#endif
- if (tree)
- policy_tree_prune(&tree);
-}
-
-int sd_10_policytree(int argc, char *const *argv)
-{
- plan_tests(1);
-
-
- tests();
-
- return 0;
-}