ValidateMapPolicy
Description
Validate whether a given MapPolicy object is valid. Aborts if the policy is structurally invalid.
Parameters
| Name | Direction | Description |
|---|---|---|
policy_value |
in | Policy to validate. |
Success
Continue execution, meaning the policy has a non-empty name, all required callbacks, a non-zero max_probe_count, and first_index / next_index return in-range indices across a fixed set of probe-snapshot inputs.
Failure
abort via LOG_FATAL when any of those invariants is broken (NULL pointer, missing name, missing callback, zero max_probe_count, or a callback returning an index past capacity).
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Type.c:129:
};
ValidateMapPolicy(custom_policy);
return custom_next_capacity(6, 5, 0, 7) == 10 && custom_first_index(0x55u, 5) < 5 &&
custom_next_index(0x55u, 5, 1, 2) < 5;- In
Deadend.c:110:
};
ValidateMapPolicy(policy);
return true;
}- In
Deadend.c:276:
// name check lets the policy pass cleanly (no later abort).
static bool test_validate_map_policy_without_name_fails(void) {
WriteFmt("Testing ValidateMapPolicy without name\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:281:
policy.name = "";
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:287:
// Isolates: missing should_rehash callback.
static bool test_validate_map_policy_without_should_rehash_fails(void) {
WriteFmt("Testing ValidateMapPolicy without should_rehash\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:292:
policy.should_rehash = NULL;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:298:
// Isolates: missing next_capacity callback.
static bool test_validate_map_policy_without_next_capacity_fails(void) {
WriteFmt("Testing ValidateMapPolicy without next_capacity\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:303:
policy.next_capacity = NULL;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:309:
// Isolates: missing first_index callback.
static bool test_validate_map_policy_without_first_index_fails(void) {
WriteFmt("Testing ValidateMapPolicy without first_index\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:314:
policy.first_index = NULL;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:320:
// Isolates: missing next_index callback.
static bool test_validate_map_policy_without_next_index_fails(void) {
WriteFmt("Testing ValidateMapPolicy without next_index\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:325:
policy.next_index = NULL;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:331:
// Isolates: max_probe_count == 0 check.
static bool test_validate_map_policy_without_probe_limit_fails(void) {
WriteFmt("Testing ValidateMapPolicy without probe limit\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:336:
policy.max_probe_count = 0;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:351:
static bool test_validate_map_policy_zero_capacity_nonempty_fails(void) {
WriteFmt("Testing ValidateMapPolicy zero-capacity for non-empty snapshot\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:356:
policy.next_capacity = zero_for_first_nonempty_snapshot;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:371:
static bool test_validate_map_policy_capacity_below_length_fails(void) {
WriteFmt("Testing ValidateMapPolicy capacity smaller than length\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:376:
policy.next_capacity = small_for_same_min;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:390:
static bool test_validate_map_policy_capacity_below_min_entries_fails(void) {
WriteFmt("Testing ValidateMapPolicy capacity smaller than min_entries\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:395:
policy.next_capacity = small_for_more_min;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:407:
static bool test_validate_map_policy_first_index_out_of_range_fails(void) {
WriteFmt("Testing ValidateMapPolicy first_index out of range\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:412:
policy.first_index = out_of_range_first_index;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:427:
static bool test_validate_map_policy_next_index_out_of_range_fails(void) {
WriteFmt("Testing ValidateMapPolicy next_index out of range\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:432:
policy.next_index = out_of_range_next_index;
ValidateMapPolicy(policy);
return false;
}- In
Deadend.c:446:
static bool test_validate_map_policy_stuck_probe_fails(void) {
WriteFmt("Testing ValidateMapPolicy stuck probe sequence\n");
MapPolicy policy = valid_baseline_policy();- In
Deadend.c:451:
policy.next_index = stuck_next_index;
ValidateMapPolicy(policy);
return false;
}
Last updated on