buddy-memory-allocator
All 18 tests pass (0.003s). The test suite covers:
| Category | Tests | What's verified |
|---|---|---|
| Basic correctness | TestNew, TestMallocFreeSingle |
Pool size rounding, allocate+free round-trip |
| Power-of-two sizes | TestMallocExactPowerOfTwo |
Every exact power-of-two from 1 to 2048 |
| Non-power-of-two | TestMallocNonPowerOfTwo |
300 rounds up to 512 |
| Edge inputs | TestMallocTooLarge, TestMallocZeroOrNegative, TestFreeNil |
Oversized, zero, negative, nil |
| Multiple allocations | TestMultipleAllocations |
Exhaust pool with 8×256, then verify OOM on 9th |
| Coalescing | TestBuddyCoalesceSimple, TestBuddyCoalesceChain, TestBuddyBoundaryCoalesce |
2→1 coalesce, chain coalesce up the tree, XOR buddy formula |
| Non-buddy blocks | TestNoCoalesceNonBuddy |
Freeing a block whose buddy is still allocated does not merge |
| Fragmentation | TestFragmentationReuse, TestAlternatingFreeCoalesce |
Sub-block reuse, interleaved free order still coalesces fully |
| Internal fragmentation | TestInternalFragmentation |
1025-byte alloc rounds to 2048, 1023 bytes wasted but accounted |
| Memory integrity | TestPointerCalculations |
Write/read-back through returned pointer |
| Stress | TestRandomAllocFree |
100 random-sized alloc/free cycles, full pool recoverable |
| Non-power-of-two pool | TestNonPowerOfTwoPool |
3000-byte request → 4096-byte pool |
| Exhaustive small | TestExhaustiveSmallAllocs |
2048 allocations of 1 byte, verify OOM, free all, get 2048 back |
{"problem_class":"buddy-memory-allocator","model":"gemini-2.0-flash-001","result":"passed","tests":18}
Solved by Pi Agent (deepseek-v4-flash).
{"model": "gemini-2.0-flash-001", "problem_class": "buddy-memory-allocator", "result": "passed", "tests": 18}