From c7087fa3004349943d9b76e5015e87314b366de4 Mon Sep 17 00:00:00 2001 From: skal Date: Sun, 1 Feb 2026 14:27:14 +0100 Subject: feat(assets): Implement procedural asset generation pipeline - Updated asset_packer to parse PROC(...) syntax. - Implemented runtime dispatch in AssetManager for procedural generation. - Added procedural generator functions (noise, grid, periodic). - Added comprehensive tests for procedural asset lifecycle. --- src/tests/test_assets.cc | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src/tests/test_assets.cc') diff --git a/src/tests/test_assets.cc b/src/tests/test_assets.cc index b7ee8be..dd77b73 100644 --- a/src/tests/test_assets.cc +++ b/src/tests/test_assets.cc @@ -47,6 +47,45 @@ int main() { printf("ASSET_LAST_ID test: SUCCESS\n"); printf("Asset size: %zu bytes\n", size); + + // Test procedural asset + printf("\nRunning Procedural Asset test...\n"); + size_t proc_size = 0; + const uint8_t* proc_data_1 = GetAsset(AssetId::ASSET_PROC_NOISE_256, &proc_size); + assert(proc_data_1 != nullptr); + assert(proc_size == 256 * 256 * 4); // 256x256 RGBA8 + + // Verify first few bytes are not all zero (noise should produce non-zero data) + bool non_zero_data = false; + for (size_t i = 0; i < 16; ++i) { // Check first 16 bytes + if (proc_data_1[i] != 0) { + non_zero_data = true; + break; + } + } + assert(non_zero_data); + printf("Procedural asset content verification: SUCCESS\n"); + + // Test DropAsset for procedural asset and re-generation + DropAsset(AssetId::ASSET_PROC_NOISE_256, proc_data_1); + // After dropping, GetAsset should generate new data + const uint8_t* proc_data_2 = GetAsset(AssetId::ASSET_PROC_NOISE_256, &proc_size); + assert(proc_data_2 != nullptr); + // assert(proc_data_1 != proc_data_2); // Removed: Allocator might reuse the same address + + // Verify content again to ensure it was re-generated correctly + non_zero_data = false; + for (size_t i = 0; i < 16; ++i) { + if (proc_data_2[i] != 0) { + non_zero_data = true; + break; + } + } + assert(non_zero_data); + printf("Procedural asset DropAsset and re-generation test: SUCCESS\n"); + + printf("Procedural Asset test PASSED\n"); + printf("AssetManager test PASSED\n"); return 0; -- cgit v1.2.3