BitVecDeinit
Description
Release all storage owned by bv and reset it to the zeroed state.
Parameters
| Name | Direction | Description |
|---|---|---|
bv |
in,out | Bitvector to deinitialize. Must not be used until reinitialized. |
Success
Backing buffer freed; bv left with NULL data, zero length, zero capacity.
Failure
Function cannot fail; aborts on a corrupted magic via the validator.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
BitVec.c:90:
}
void BitVecDeinit(BitVec *bitvec) {
ValidateBitVec(bitvec);
if (bitvec->data) {- In
BitVec.c:234:
if (!BitVecReserve(out, bv->length) || !BitVecResize(out, bv->length)) {
BitVecDeinit(out);
*out = BitVecInit(bv->allocator);
return false;- In
BitVec.c:889:
if (str[i] == '1') {
if (!BitVecPush(out, true)) {
BitVecDeinit(out);
*out = BitVecInit(alloc);
return false;- In
BitVec.c:895:
} else if (str[i] == '0') {
if (!BitVecPush(out, false)) {
BitVecDeinit(out);
*out = BitVecInit(alloc);
return false;- In
BitVec.c:983:
if (!BitVecReserve(out, bit_len) || !BitVecResize(out, bit_len)) {
BitVecDeinit(out);
*out = BitVecInit(alloc);
return false;- In
BitVec.c:1041:
if (!BitVecReserve(out, bits) || !BitVecResize(out, bits)) {
BitVecDeinit(out);
*out = BitVecInit(alloc);
return false;- In
BitVec.c:1121:
BitVec temp = BitVecClone(bv);
if (temp.length != bv->length) {
BitVecDeinit(&temp);
return;
}- In
BitVec.c:1131:
}
BitVecDeinit(&temp);
}- In
BitVec.c:1147:
BitVec temp = BitVecClone(bv);
if (temp.length != bv->length) {
BitVecDeinit(&temp);
return;
}- In
BitVec.c:1157:
}
BitVecDeinit(&temp);
}
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&original);
BitVecDeinit(&clone); // Clean up
BitVecDeinit(&original);
BitVecDeinit(&clone);
DefaultAllocatorDeinit(&alloc); BitVecGet(&clone, 0) == true && BitVecGet(&clone, 1) == false && BitVecGet(&clone, 2) == true;
BitVecDeinit(&original);
BitVecDeinit(&clone);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&original);
BitVecDeinit(&clone);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLen(&bv) == 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecCapacity(&bv) >= 10000);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLen(&bv1) == 2);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; BitVec clone1 = BitVecClone(&bv);
result = result && (BitVecLen(&clone1) == 0);
BitVecDeinit(&clone1);
// Test clone single element
result = result && (BitVecLen(&clone2) == 1);
result = result && (BitVecGet(&clone2, 0) == true);
BitVecDeinit(&clone2);
// Test clone large data
result = result && (BitVecGet(&clone3, 0) != BitVecGet(&bv, 0));
BitVecDeinit(&clone3);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&clone3);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&clone);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&clone);
} BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&clone);
} BitVecSwap(NULL, &bv);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false;
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
BitVecDeinit(&result); // Clean up
BitVecDeinit(&bv);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc); result = result && (BitVecLen(&bv) == 1000);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLen(&bv) == 2);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&result_bv, 0) == false);
BitVecDeinit(&result_bv);
BitVecDeinit(&bv1); BitVecDeinit(&result_bv);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 1) == false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
return test_result; result = result && (BitVecGet(&bv, 2) == true); // original bit 0
BitVecDeinit(&bv);
BitVecDeinit(&original);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv);
BitVecDeinit(&original);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 4) == false);
BitVecDeinit(&bv);
BitVecDeinit(&original);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv);
BitVecDeinit(&original);
DefaultAllocatorDeinit(&alloc);
return result; test_result = test_result && or_ones;
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
return test_result; test_result = test_result && xor_commutative;
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result1);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result1);
BitVecDeinit(&result2); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result1);
BitVecDeinit(&result2);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv2);
BitVecDeinit(&result1);
BitVecDeinit(&result2);
DefaultAllocatorDeinit(&alloc);
return test_result; }
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
return test_result; BitVecRunLengths(&bv, NULL, values, 5);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return true; // Should never reach here
BitVecRunLengths(&bv, runs, NULL, 5);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return true; // Should never reach here
BitVecRunLengths(&bv, runs, values, 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return true; // Should never reach here
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
BitVecDeinit(&source); // Clean up
BitVecDeinit(&bv);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc); result = result && (BitVecGet(&bv, 999) == true);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 500) == false);
BitVecDeinit(&bv);
BitVecDeinit(&empty);
BitVecDeinit(&source);
BitVecDeinit(&bv);
BitVecDeinit(&empty);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv);
BitVecDeinit(&empty);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 1) == true); // Second bit
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; BitVecInsertRange(&bv, SIZE_MAX, 1, true);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false;- In
BitVec.Type.c:29:
// Clean up
BitVecDeinit(&bitvec);
DefaultAllocatorDeinit(&alloc);- In
BitVec.Type.c:48:
// Clean up
BitVecDeinit(&bitvec);
DefaultAllocatorDeinit(&alloc); result = result && (index == 1); // Should find pattern at index 1 (101...)
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; // Depending on the exact source pattern, adjust this test
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (index == 2); // Only occurrence at index 2
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (count == 3); // Should find at 0, 3, 6
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result;
VecDeinit(&matches);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc); VecDeinit(&matches);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (results[0] == 0);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (count > 0); // Should find at least some patterns
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && !BitVecStartsWith(&source, &prefix);
BitVecDeinit(&source);
BitVecDeinit(&prefix);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&prefix);
DefaultAllocatorDeinit(&alloc);
return result; result = result && BitVecStartsWith(&source, &prefix);
BitVecDeinit(&source);
BitVecDeinit(&prefix);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&prefix);
DefaultAllocatorDeinit(&alloc);
return result; result = result && !BitVecEndsWith(&source, &suffix);
BitVecDeinit(&source);
BitVecDeinit(&suffix);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&suffix);
DefaultAllocatorDeinit(&alloc);
return result; result = result && !BitVecEndsWith(&source, &suffix);
BitVecDeinit(&source);
BitVecDeinit(&suffix);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&suffix);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecFindPattern(&source, &pattern) == SIZE_MAX);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && BitVecContainsAt(&source, &pattern, 3); // Should match
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && !BitVecContainsAt(&source, &pattern, 0); // Pattern too long
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (count == 3);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (pos == 3); // Should find at position 3
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&source, 2) == true);
BitVecDeinit(&source);
BitVecDeinit(&old_pattern);
BitVecDeinit(&new_pattern);
BitVecDeinit(&source);
BitVecDeinit(&old_pattern);
BitVecDeinit(&new_pattern);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&source);
BitVecDeinit(&old_pattern);
BitVecDeinit(&new_pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLen(&source) == 6); // 3 * 2 = 6
BitVecDeinit(&source);
BitVecDeinit(&old_pattern);
BitVecDeinit(&new_pattern);
BitVecDeinit(&source);
BitVecDeinit(&old_pattern);
BitVecDeinit(&new_pattern);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&source);
BitVecDeinit(&old_pattern);
BitVecDeinit(&new_pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && BitVecMatches(&source, &pattern, &wildcard);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
BitVecDeinit(&wildcard);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
BitVecDeinit(&wildcard);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&source);
BitVecDeinit(&pattern);
BitVecDeinit(&wildcard);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (pos == 0); // Should match 110 with 1 error
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return result; result = result && !BitVecRegexMatch(&source, "111");
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return result;
BitVec source = BitVecInit(ALLOCATOR_OF(&alloc));
BitVecs patterns = VecInitWithDeepCopy(NULL, BitVecDeinit, ALLOCATOR_OF(&alloc));
bool result = true;
VecDeinit(&patterns);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return result;
BitVec source = BitVecInit(ALLOCATOR_OF(&alloc));
BitVecs patterns = VecInitWithDeepCopy(NULL, BitVecDeinit, ALLOCATOR_OF(&alloc));
bool result = true;
VecDeinit(&patterns);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return result;- In
Io.Read.c:829:
);
StrDeinit(&result1);
BitVecDeinit(&bv1);
BitVec bv2 = BitVecInit(alloc_base);- In
Io.Read.c:837:
success = success && (value2 == 0xDEAD);
WriteFmt("Test 2 - Hex: {}, Success: {}\n", value2, (value2 == 0xDEAD) ? "true" : "false");
BitVecDeinit(&bv2);
BitVec bv3 = BitVecInit(alloc_base);- In
Io.Read.c:845:
success = success && (value3 == 0755);
WriteFmt("Test 3 - Octal: {}, Success: {}\n", value3, (value3 == 0755) ? "true" : "false");
BitVecDeinit(&bv3);
BitVec bv4 = BitVecInit(alloc_base);- In
Io.Read.c:858:
);
StrDeinit(&result4);
BitVecDeinit(&bv4);
BitVec bv5 = BitVecInit(alloc_base);- In
Io.Read.c:871:
);
StrDeinit(&result5);
BitVecDeinit(&bv5);
WriteFmt("Overall BitVec reading success: {}\n", success ? "true" : "false");- In
Io.Write.c:575:
StrClear(&output);
BitVecDeinit(&bv1);
BitVecDeinit(&bv_empty);
BitVecDeinit(&bv2);- In
Io.Write.c:576:
BitVecDeinit(&bv1);
BitVecDeinit(&bv_empty);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);- In
Io.Write.c:577:
BitVecDeinit(&bv1);
BitVecDeinit(&bv_empty);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
BitVecDeinit(&bv_zero);- In
Io.Write.c:578:
BitVecDeinit(&bv_empty);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
BitVecDeinit(&bv_zero);
StrDeinit(&output);- In
Io.Write.c:579:
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
BitVecDeinit(&bv_zero);
StrDeinit(&output);
DefaultAllocatorDeinit(&alloc);- In
BitVec.Math.c:89:
result = result && (distance == 1);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);- In
BitVec.Math.c:90:
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (distance == 2); // Length of bv1
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (F64Abs(similarity - 0.5) < 0.001);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (F64Abs(similarity - 1.0) < 0.001);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (F64Abs(similarity - 0.0) < 0.001);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (similarity == 0.0);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (product == 0);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (product == 1); // Only first position counts
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (distance == 1);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (distance == 2);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (F64Abs(correlation + 1.0) < 0.001);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (correlation == 0.0); // No variance
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (entropy == 0.0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (entropy == 0.0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (score == -3); // 3 mismatches * -1
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (score == 2); // 2 matches
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (best_pos == 0 || best_pos == 4);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (best_pos == 0);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (edit_dist < 100);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&small1);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&small1);
BitVecDeinit(&small2); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&small1);
BitVecDeinit(&small2);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv2);
BitVecDeinit(&small1);
BitVecDeinit(&small2);
DefaultAllocatorDeinit(&alloc);
return result; BitVecPush(&bv2, true);
BitVecHammingDistance(NULL, &bv2);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv1, true);
BitVecHammingDistance(&bv1, NULL);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv2, true);
BitVecJaccardSimilarity(NULL, &bv2);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv1, true);
BitVecJaccardSimilarity(&bv1, NULL);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv2, true);
BitVecCosineSimilarity(NULL, &bv2);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv1, true);
BitVecCosineSimilarity(&bv1, NULL);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv2, true);
BitVecDotProduct(NULL, &bv2);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv1, true);
BitVecDotProduct(&bv1, NULL);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv2, true);
BitVecEditDistance(NULL, &bv2);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv1, true);
BitVecEditDistance(&bv1, NULL);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv2, true);
BitVecCorrelation(NULL, &bv2);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv1, true);
BitVecCorrelation(&bv1, NULL);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv2, true);
BitVecAlignmentScore(NULL, &bv2, 1, -1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv1, true);
BitVecAlignmentScore(&bv1, NULL, 1, -1);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv2, true);
BitVecBestAlignment(NULL, &bv2);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&bv1, true);
BitVecBestAlignment(&bv1, NULL);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return true; BitVecGet(&bv, 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecSet(&bv, 0, true);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecFlip(&bv, 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecGet(&bv, 1000);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecSet(&bv, 500, true);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecFlip(&bv, 10);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecGet(&bv, SIZE_MAX);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecAnd(NULL, &bv, &bv2);
BitVecDeinit(&bv);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return false; BitVecAnd(NULL, &bv1, &bv2);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return false; BitVecOr(&result, &bv1, NULL);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return false; BitVecXor(&result, NULL, &bv1);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return false; BitVecNot(&result, NULL);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
return false; (BitVecGet(&bv, 3) == false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; (BitVecGet(&bv, 3) == false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; (BitVecGet(&bv, 3) == false); // unchanged
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecCapacity(&bv) >= 100);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; bool result = (BitVecCountOnes(&bv) == 3) && (BitVecCountZeros(&bv) == 2);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 63) == false); // 63 % 2 == 1, so i%2==0 is false for i=63
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 0) == false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 0) == false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecCountZeros(&bv) == 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecCountZeros(&bv) == 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecCountZeros(&bv) == 500);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecCountZeros(&bv) == 1);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecFindLast(&bv, false) == SIZE_MAX);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && !BitVecNone(&bv, false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLongestRun(&bv, false) == 1);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecFindLast(&bv, true) == 999);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && BitVecAny(&bv, false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLongestRun(&bv, false) == 1);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result;- In
BitVec.Init.c:38:
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);- In
BitVec.Init.c:49:
DefaultAllocator alloc = DefaultAllocatorInit();
WriteFmt("Testing BitVecDeinit\n");
BitVec bv = BitVecInit(ALLOCATOR_OF(&alloc));- In
BitVec.Init.c:62:
// Deinitialize
BitVecDeinit(&bv);
// After deinitialization, the bitvector should be in a safe state
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up all
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); // Clean up all
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
DefaultAllocatorDeinit(&alloc); result = result && (BitVecCapacity(&bv) == cap_before);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLen(&bv) == 10);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLen(&bv) == 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result;
result = result && (BitVecLen(&bv) == (size)(cycle % 10));
BitVecDeinit(&bv);
}
// Test NULL bitvec pointer - should abort
BitVecDeinit(NULL);
// If we reach here, validation didn't work as expected
// If we reach here, validation didn't work as expected
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false;
// If we reach here, validation didn't work as expected
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false;
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc); result = result && (count == 1000);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (count == 2); // Should iterate over indices 8,9
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (count4 == sz);
BitVecDeinit(&bv);
} }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result;
VecDeinit(&runs);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; u64 count = BitVecRunLengths(&empty_bv, runs, values, 5);
result = result && (count == 0);
BitVecDeinit(&empty_bv);
// Test 2: Single bit (true)
result = result && (count == 1);
result = result && (runs[0] == 1 && values[0] == true);
BitVecDeinit(&single_bv);
// Test 3: Single bit (false)
result = result && (count == 1);
result = result && (runs[0] == 1 && values[0] == false);
BitVecDeinit(&single_false_bv);
// Test 4: All same bits (all true)
result = result && (count == 1);
result = result && (runs[0] == 10 && values[0] == true);
BitVecDeinit(&all_true_bv);
// Test 5: Alternating bits (0101010)
result = result && (alt_values[i] == (i % 2 == 0));
}
BitVecDeinit(&alternating_bv);
DefaultAllocatorDeinit(&alloc); result = result && (count == 8);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&large_bv);
DefaultAllocatorDeinit(&alloc);
return result;
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc); }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLen(&bv) == 999);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLen(&bv) == 5); // Should have 5 elements left
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (found == true) && (BitVecLen(&bv) == 999);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (count == 500) && (BitVecLen(&bv) == 500);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; BitVecRemoveRange(&bv, SIZE_MAX, 1);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecPop(&bv);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecRemove(&bv, 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecRemoveRange(&bv, 0, 1);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false;
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
BitVecDeinit(&result); // Clean up
BitVecDeinit(&bv);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc); result = result && (BitVecLen(&bv) == 1000);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLen(&bv) == 2);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&result_bv, 0) == false);
BitVecDeinit(&result_bv);
BitVecDeinit(&bv1); BitVecDeinit(&result_bv);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 1) == false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
return test_result; result = result && (BitVecGet(&bv, 2) == true); // original bit 0
BitVecDeinit(&bv);
BitVecDeinit(&original);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv);
BitVecDeinit(&original);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 4) == false);
BitVecDeinit(&bv);
BitVecDeinit(&original);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv);
BitVecDeinit(&original);
DefaultAllocatorDeinit(&alloc);
return result; test_result = test_result && or_ones;
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
return test_result; test_result = test_result && xor_commutative;
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result1);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result1);
BitVecDeinit(&result2); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result1);
BitVecDeinit(&result2);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv2);
BitVecDeinit(&result1);
BitVecDeinit(&result2);
DefaultAllocatorDeinit(&alloc);
return test_result; }
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
return test_result; BitVecAnd(NULL, &bv, &bv2);
BitVecDeinit(&bv);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return false; BitVecAnd(NULL, &bv1, &bv2);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return false; BitVecOr(&result, &bv1, NULL);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return false; BitVecXor(&result, NULL, &bv1);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&result);
BitVecDeinit(&bv1);
DefaultAllocatorDeinit(&alloc);
return false; BitVecNot(&result, NULL);
BitVecDeinit(&result);
DefaultAllocatorDeinit(&alloc);
return false; // Clean up
StrDeinit(&str);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
BitVecDeinit(&empty_bv); // Clean up
BitVecDeinit(&bv);
BitVecDeinit(&empty_bv);
DefaultAllocatorDeinit(&alloc); result = result && (bytes[0] == 0xCD || bytes[0] == 0xB3);
}
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
BitVecDeinit(&zero_bv); // Clean up
BitVecDeinit(&bv);
BitVecDeinit(&zero_bv);
DefaultAllocatorDeinit(&alloc);
StrDeinit(&str);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; StrDeinit(&str_obj);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; BitVec bv1 = BitVecFromStr("", ALLOCATOR_OF(&alloc));
result = result && (BitVecLen(&bv1) == 0);
BitVecDeinit(&bv1);
// Test single character
result = result && (BitVecLen(&bv2) == 1);
result = result && (BitVecGet(&bv2, 0) == true);
BitVecDeinit(&bv2);
// Test long string
result = result && (BitVecGet(&bv3, 0) == true);
result = result && (BitVecGet(&bv3, 1) == false);
BitVecDeinit(&bv3);
DefaultAllocatorDeinit(&alloc); BitVec bv2 = BitVecFromBytes(empty_bytes, 0, ALLOCATOR_OF(&alloc)); // 0 bits
result = result && (BitVecLen(&bv2) == 0);
BitVecDeinit(&bv2);
// Test single byte
BitVec bv3 = BitVecFromBytes(single_byte, 8, ALLOCATOR_OF(&alloc)); // 8 bits from 1 byte
result = result && (BitVecLen(&bv3) == 8);
BitVecDeinit(&bv3);
BitVecDeinit(&bv); BitVecDeinit(&bv3);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; BitVec bv2 = BitVecFromInteger(0, 8, ALLOCATOR_OF(&alloc)); // 8 bits for zero
result = result && (BitVecLen(&bv2) == 8); // Should be 8 bits
BitVecDeinit(&bv2);
// Test large integer
BitVec bv3 = BitVecFromInteger(UINT64_MAX, 64, ALLOCATOR_OF(&alloc)); // 64 bits for max value
result = result && (BitVecLen(&bv3) == 64);
BitVecDeinit(&bv3);
BitVecDeinit(&bv); BitVecDeinit(&bv3);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result;
StrDeinit(&str);
BitVecDeinit(&bv);
} result = result && (recovered == value);
BitVecDeinit(&bv);
}
} result = result && (recovered_byte == test_bytes[i]);
BitVecDeinit(&bv);
} u64 large_value = BitVecToInteger(&large_bv);
result = result && (large_value == 0xFFFFFFFFFFFFFFFF);
BitVecDeinit(&large_bv);
// Test oversized bitvec to integer (should handle gracefully)
// Should return some value or 0, but not crash
result = result && (oversized_value >= 0); // Always true for u64, but documents intent
BitVecDeinit(&oversized);
// Test zero-length conversions
result = result && (empty_bytes[0] == 0xFF); // Should be unchanged
BitVecDeinit(&empty);
DefaultAllocatorDeinit(&alloc); result = result && (written == test_cases[i].byte_count);
BitVecDeinit(&bv);
} StrDeinit(&str2);
StrDeinit(&str3);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); StrDeinit(&str3);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
DefaultAllocatorDeinit(&alloc); result = result && recovered_pattern_correct;
BitVecDeinit(&large_bv);
BitVecDeinit(&recovered_bv);
BitVecDeinit(&large_bv);
BitVecDeinit(&recovered_bv);
// Test string to bitvec with large patterns
result = result && large_pattern_correct;
BitVecDeinit(&large_from_str);
DefaultAllocatorDeinit(&alloc);
// Should handle gracefully
BitVecDeinit(&bv);
// Test fromBytes with 0 bit length - should return empty bitvec
BitVec empty_bv = BitVecFromBytes(dummy_bytes, 0, ALLOCATOR_OF(&alloc));
bool result = (BitVecLen(&empty_bv) == 0);
BitVecDeinit(&empty_bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc); result = result && (count == 1000);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (count == 2); // Should iterate over indices 8,9
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (count4 == sz);
BitVecDeinit(&bv);
} }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; u64 count = BitVecRunLengths(&empty_bv, runs, values, 5);
result = result && (count == 0);
BitVecDeinit(&empty_bv);
// Test 2: Single bit (true)
result = result && (count == 1);
result = result && (runs[0] == 1 && values[0] == true);
BitVecDeinit(&single_bv);
// Test 3: Single bit (false)
result = result && (count == 1);
result = result && (runs[0] == 1 && values[0] == false);
BitVecDeinit(&single_false_bv);
// Test 4: All same bits (all true)
result = result && (count == 1);
result = result && (runs[0] == 10 && values[0] == true);
BitVecDeinit(&all_true_bv);
// Test 5: Alternating bits (0101010)
result = result && (alt_values[i] == (i % 2 == 0));
}
BitVecDeinit(&alternating_bv);
DefaultAllocatorDeinit(&alloc); result = result && (count == 8);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&large_bv);
DefaultAllocatorDeinit(&alloc);
return result; BitVecRunLengths(&bv, NULL, values, 5);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return true; // Should never reach here
BitVecRunLengths(&bv, runs, NULL, 5);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return true; // Should never reach here
BitVecRunLengths(&bv, runs, values, 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return true; // Should never reach here
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&subset);
BitVecDeinit(&superset); // Clean up
BitVecDeinit(&subset);
BitVecDeinit(&superset);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&superset);
BitVecDeinit(&subset); // Clean up
BitVecDeinit(&superset);
BitVecDeinit(&subset);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc); result = result && BitVecIsSubset(&bv1, &bv2); // Empty is subset of empty
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && BitVecOverlaps(&bv1, &bv2);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return result;
// Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3); // Clean up
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
BitVecDeinit(&subset); BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
BitVecDeinit(&subset);
BitVecDeinit(&superset); BitVecDeinit(&bv2);
BitVecDeinit(&bv3);
BitVecDeinit(&subset);
BitVecDeinit(&superset); BitVecDeinit(&bv3);
BitVecDeinit(&subset);
BitVecDeinit(&superset);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&large1);
BitVecDeinit(&large2);
BitVecDeinit(&pos); // Clean up
BitVecDeinit(&large1);
BitVecDeinit(&large2);
BitVecDeinit(&pos);
BitVecDeinit(&neg); BitVecDeinit(&large1);
BitVecDeinit(&large2);
BitVecDeinit(&pos);
BitVecDeinit(&neg); BitVecDeinit(&large2);
BitVecDeinit(&pos);
BitVecDeinit(&neg);
DefaultAllocatorDeinit(&alloc); BitVecEquals(NULL, &bv);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecEqualsRange(NULL, 0, &bv, 0, 1);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecEqualsRange(&bv1, 0, &bv2, 0, 5); // Range exceeds length
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&bv1);
BitVecDeinit(&bv2);
DefaultAllocatorDeinit(&alloc);
return false; result = result && (bitvec_hash(&empty1, 0) == bitvec_hash(&empty2, 0));
BitVecDeinit(&a);
BitVecDeinit(&b);
BitVecDeinit(&empty1);
BitVecDeinit(&a);
BitVecDeinit(&b);
BitVecDeinit(&empty1);
BitVecDeinit(&empty2); BitVecDeinit(&a);
BitVecDeinit(&b);
BitVecDeinit(&empty1);
BitVecDeinit(&empty2);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&b);
BitVecDeinit(&empty1);
BitVecDeinit(&empty2);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (bitvec_hash(&a, 0) != bitvec_hash(&c, 0));
BitVecDeinit(&a);
BitVecDeinit(&b);
BitVecDeinit(&c);
BitVecDeinit(&a);
BitVecDeinit(&b);
BitVecDeinit(&c);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&a);
BitVecDeinit(&b);
BitVecDeinit(&c);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (MapPairCount(&counts) == 2);
BitVecDeinit(&k1);
BitVecDeinit(&k2);
BitVecDeinit(&probe);
BitVecDeinit(&k1);
BitVecDeinit(&k2);
BitVecDeinit(&probe);
BitVecDeinit(&missing); BitVecDeinit(&k1);
BitVecDeinit(&k2);
BitVecDeinit(&probe);
BitVecDeinit(&missing);
MapDeinit(&counts); BitVecDeinit(&k2);
BitVecDeinit(&probe);
BitVecDeinit(&missing);
MapDeinit(&counts);
DefaultAllocatorDeinit(&alloc); result = result && (cmp(&a, &a) == 0);
BitVecDeinit(&a);
BitVecDeinit(&b);
BitVecDeinit(&c);
BitVecDeinit(&a);
BitVecDeinit(&b);
BitVecDeinit(&c);
DefaultAllocatorDeinit(&alloc); BitVecDeinit(&a);
BitVecDeinit(&b);
BitVecDeinit(&c);
DefaultAllocatorDeinit(&alloc);
return result;
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
// Clean up
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc); result = result && (BitVecGet(&bv, 999) == (999 % 3 == 0)); // Last
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 0) == true);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 0) == true);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecCountZeros(&bv) == 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, BitVecLen(&bv) - 1) == true); // Last bit
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecByteSize(&bv) >= 8); // At least 8 bytes for 64 bits
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; }
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecGet(&bv, 4) == true); // F(4) = 0 XOR 1 = 1
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; BitVecGet(&bv, 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecSet(&bv, 0, true);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecFlip(&bv, 0);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecGet(&bv, 1000);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecSet(&bv, 500, true);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecFlip(&bv, 10);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; BitVecGet(&bv, SIZE_MAX);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return false; result = result && (BitVecFindLast(&bv, false) == SIZE_MAX);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && !BitVecNone(&bv, false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLongestRun(&bv, false) == 1);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecFindLast(&bv, true) == 999);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && BitVecAny(&bv, false);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; result = result && (BitVecLongestRun(&bv, false) == 1);
BitVecDeinit(&bv);
DefaultAllocatorDeinit(&alloc);
return result; BitVecFindPattern(NULL, &pattern); // Should cause LOG_FATAL
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return true; BitVecFindPattern(&source, NULL); // Should cause LOG_FATAL
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return true; BitVecFindLastPattern(NULL, &pattern); // Should cause LOG_FATAL
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return true; BitVecFindLastPattern(&source, NULL); // Should cause LOG_FATAL
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return true; BitVecFindAllPattern(&source, NULL, results, 10); // Should cause LOG_FATAL
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return true; BitVecFindAllPattern(&source, &pattern, NULL, 10); // Should cause LOG_FATAL
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return true; BitVecFindAllPattern(&source, &pattern, results, 0); // Should cause LOG_FATAL
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
BitVecDeinit(&source);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&prefix, true);
BitVecStartsWith(NULL, &prefix);
BitVecDeinit(&prefix);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&source, true);
BitVecStartsWith(&source, NULL);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&suffix, true);
BitVecEndsWith(NULL, &suffix);
BitVecDeinit(&suffix);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&source, true);
BitVecEndsWith(&source, NULL);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&pattern, true);
BitVecContainsAt(NULL, &pattern, 0);
BitVecDeinit(&pattern);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&source, true);
BitVecContainsAt(&source, NULL, 0);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&wildcard, false);
BitVecMatches(NULL, &pattern, &wildcard);
BitVecDeinit(&pattern);
BitVecDeinit(&wildcard);
DefaultAllocatorDeinit(&alloc); BitVecMatches(NULL, &pattern, &wildcard);
BitVecDeinit(&pattern);
BitVecDeinit(&wildcard);
DefaultAllocatorDeinit(&alloc);
return true; BitVecPush(&source, true);
BitVecRegexMatch(&source, (Zstr)NULL);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return true; DefaultAllocator alloc = DefaultAllocatorInit();
WriteFmt("Testing BitVecPrefixMatch(NULL, patterns, 1) - should fatal\n");
BitVecs vp = VecInitWithDeepCopy(NULL, BitVecDeinit, ALLOCATOR_OF(&alloc));
BitVecPush(VecPtrAt(&vp, 0), true);
BitVecPrefixMatch(NULL, &vp); BitVecPush(&source, true);
BitVecPrefixMatch(&source, NULL);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return true; DefaultAllocator alloc = DefaultAllocatorInit();
WriteFmt("Testing BitVecSuffixMatch(NULL, patterns, 1) - should fatal\n");
BitVecs vp = VecInitWithDeepCopy(NULL, BitVecDeinit, ALLOCATOR_OF(&alloc));
BitVecPush(VecPtrAt(&vp, 0), true);
BitVecSuffixMatch(NULL, &vp); BitVecPush(&source, true);
BitVecSuffixMatch(&source, NULL);
BitVecDeinit(&source);
DefaultAllocatorDeinit(&alloc);
return true;- In
Init.h:47:
static inline void IntDeinit(Int *value) {
ValidateInt(value);
BitVecDeinit(&value->bits);
}
Last updated on