diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-01 14:27:14 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-01 14:27:14 +0100 |
| commit | c7087fa3004349943d9b76e5015e87314b366de4 (patch) | |
| tree | f688245d5bec66fb3eaea81e6ce38bc8dd63ebde /src/tests/test_assets.cc | |
| parent | a358fbc9f4ba3a7b01f600109fc86aeb2fcf96b8 (diff) | |
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.
Diffstat (limited to 'src/tests/test_assets.cc')
| -rw-r--r-- | src/tests/test_assets.cc | 39 |
1 files changed, 39 insertions, 0 deletions
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; |
