- Added `<cstdlib>` header to `yaze_test.cc`, enabling the use of standard library functions.
- This change enhances the functionality of the test suite by allowing for additional features from the C++ standard library.
- Modified `CMakeLists.txt` to cache the `YAZE_BUILD_TESTS` option, improving clarity in test suite configuration.
- Updated the GitHub Actions workflow to include verification steps for the CMake configuration, ensuring that test targets are correctly identified.
- Adjusted test discovery logic in `test/CMakeLists.txt` to double-check that tests are enabled, enhancing the robustness of the build process.
- Renamed `MessageTest` to `MessageRomTest` for clarity in context.
- Added checks to skip tests if the ROM file is not available or if tests are disabled via environment variable, enhancing test robustness.
- Updated all test cases to use the new class name, ensuring consistency across the test suite.
- Updated `CMakeLists.txt` to conditionally build the test executable based on the `YAZE_BUILD_TESTS` flag, enhancing flexibility in test management.
- Removed hardcoded test executable configurations and replaced them with conditional logic for minimal and development builds.
- Improved organization of test files and dependencies, ensuring that tests are only built and discovered when enabled, streamlining the build process.
- Added conditional compilation for the ImGui Test Engine in `EditorIntegrationTest`, allowing for test registration and engine initialization when enabled.
- Updated the constructor and destructor to manage the test engine context appropriately.
- Improved the `Initialize` method to include test engine setup and registration, enhancing the integration testing capabilities.
- Ensured compatibility with scenarios where the ImGui Test Engine is disabled by providing default implementations for related methods.
- Replaced direct calls to `rom_->LoadFromData` with `ASSERT_OK` assertions in `OverworldIntegrationTest` and `OverworldV3IntegrationTest` to enhance error handling and ensure robust test execution.
- This change aligns with recent improvements in error management across the testing framework.
- Updated ROM reading assertions to handle potential errors using status checks, enhancing robustness in the E2E tests.
- Simplified byte and word read operations by storing results in variables and checking their status before assertions, improving code clarity.
- Ensured consistency in transaction system tests by applying similar error handling practices.
- Commented out a large number of unused variable declarations and code segments in the `SaveSongs` function to improve readability and maintainability.
- This change does not affect the functionality but prepares the code for future enhancements by reducing clutter.
- Updated CI workflow to include the new MessageTest in core tests and refined additional unit tests for better information capture.
- Introduced a simplified CI test executable (`yaze_test_ci.cc`) to improve reliability by excluding ROM-dependent and E2E tests.
- Expanded documentation to detail the testing system, including categories, execution methods, and configuration options for local and CI environments.
- Improved CMake configuration to differentiate between minimal and full-featured test builds, ensuring appropriate test execution based on the build type.
- Introduced new E2E test suite for comprehensive ROM testing, validating the complete ROM editing workflow.
- Added ZSCustomOverworld test suite to validate version upgrades and data integrity.
- Updated `EditorManager` to register the new test suites.
- Enhanced CMake configuration to include the new test files.
- Updated README to reflect the new testing capabilities and best practices for AI agent testing.
- Added support for post-build test discovery in the release workflow to improve testing efficiency.
- Updated Windows packaging logic to prefer CMake-generated packages, with fallback to manual packaging if necessary.
- Improved error handling and output messages during the packaging process for better clarity and reliability.
- Conditional test discovery based on the YAZE_BUILD_TESTS flag in CMakeLists.txt to streamline test execution.
- Updated EditorManager to improve welcome screen logic, ensuring it only displays in truly empty states and not when a ROM is loaded but current_rom_ is null.
- Enhanced error handling in EditorManager by routing editor errors to the toast manager for better user feedback.
- Improved OverworldEditor with enhanced tile interaction detection and added scratch space functionality for better layout management.
- Introduced a new ScratchSpaceSlot structure in OverworldEditor to manage scratch space for tile16 layouts, allowing for more flexible editing and selection.
- Added utility functions in canvas_utils for grid alignment and effective scaling, improving overall canvas interaction.
- Implemented an enhanced palette editor with ROM integration, providing users with tools for color analysis and palette management.
- Added backend source files for ImGui, improving functionality with SDL2.
- Updated CMakeLists.txt to conditionally create the yaze_c library as static or shared based on the YAZE_MINIMAL_BUILD flag.
- Streamlined test linking by ensuring yaze_test links against yaze_core instead of yaze_c, enhancing modularity.
- Updated CMakeLists.txt to create a separate core library (yaze_core) for testing, enhancing modularity.
- Adjusted source file organization for yaze_c and yaze_core, ensuring proper inclusion of essential components.
- Modified test CMakeLists.txt to link against yaze_core instead of yaze_c, streamlining dependencies for test targets.
- Disabled installation of the library in minimal builds while maintaining the ability to build for testing purposes.
- Refactored target_include_directories in app.cmake, emu.cmake, and z3ed.cmake to use absolute paths for better clarity and maintainability.
- Updated test_manager.cc and test_manager.h to simplify ImGui header inclusion.
- Enhanced test CMakeLists.txt to conditionally include directories for the extract_vanilla_values utility, ensuring proper integration with the new structure.
- Removed unnecessary compile flags from .clangd to streamline configuration.
- Added YAZE_BUILD_LIB option in CMakeLists.txt for conditional library building in minimal builds.
- Enhanced SDL2 CMake configuration to set include directories for bundled SDL, ensuring proper integration.
- Updated test CMakeLists.txt to conditionally link yaze_c and ImGuiTestEngine based on build options, improving modularity and flexibility.
- Refactored test_editor.cc and test_editor.h to conditionally include ImGuiTestEngine headers and manage engine initialization based on availability.
- Added support for UI tests in the CMake configuration by introducing the YAZE_ENABLE_UI_TESTS option, ensuring proper linking with the ImGuiTestEngine if available.
- Updated SDL2 linking in test CMakeLists to use variable targets for improved flexibility and compatibility across platforms.
- Modified sprite_position_test to check for ROM file existence using std::ifstream for better error handling.
- Introduced new rendering methods for various object types including stairs, chests, doors, walls, pots, and sprites, improving visual representation in the dungeon canvas.
- Updated the DrawDungeonCanvas method to streamline object rendering and enhance graphics handling.
- Added detailed layer information overlay to provide context on room objects and sprites.
- Implemented object dimension calculations for walls to ensure accurate rendering based on size properties.
- Improved fallback rendering for objects without valid graphics, enhancing user experience during object placement and editing.
- Added a comprehensive testing framework with support for unit, integration, and UI tests, improving overall test coverage and reliability.
- Integrated ImGui Test Engine for UI testing, allowing for real-time feedback and visualization of test results.
- Updated CMake configuration to conditionally include testing components based on build options, enhancing flexibility for developers.
- Introduced a new command in the CLI for running asset loading tests on ROMs, providing a straightforward way to validate functionality.
- Enhanced error handling and resource management during testing, ensuring stability and clarity in test execution.
- Improved user interface with a dedicated test dashboard for monitoring test progress and results, enhancing developer experience.
- Initialized the snes_tile8 structure to zero in UnpackBppTile for safety.
- Reordered loops in UnpackBppTile to process rows before columns, improving readability.
- Corrected bit manipulation logic in both UnpackBppTile and PackBppTile to ensure accurate color value handling.
- Enhanced test cases for 2bpp and 4bpp tile unpacking to validate expected results, improving test coverage.
- Updated CMakeLists.txt to introduce options for enabling experimental tests and minimal CI builds.
- Modified CMakePresets.json to refine test presets, including stable and experimental test configurations.
- Enhanced CI workflows in ci.yml to streamline testing processes, ensuring stable tests are prioritized and experimental tests are run separately.
- Added new documentation files outlining the CI/CD testing strategy and testing categories for better clarity on testing practices.
- Improved test discovery in CMakeLists.txt to simplify labeling and enhance CI efficiency.
- Upgraded CMake minimum version requirement to 3.16 and updated project version to 0.3.0.
- Introduced new CMake presets for build configurations, including default, debug, and release options.
- Added CI/CD workflows for continuous integration and release management, enhancing automated testing and deployment processes.
- Integrated Asar assembler support with new wrapper classes and CLI commands for patching ROMs.
- Implemented comprehensive tests for Asar integration, ensuring robust functionality and error handling.
- Enhanced packaging configuration for cross-platform support, including Windows, macOS, and Linux.
- Updated documentation and added test assets for improved clarity and usability.
- Introduced a new DungeonEditorSystem to streamline dungeon editing functionalities, including room properties management and object editing.
- Enhanced the DungeonEditor class to initialize the new editor system and manage room properties effectively.
- Added comprehensive object editing capabilities with a dedicated DungeonObjectEditor, supporting object insertion, deletion, and real-time preview.
- Implemented improved UI components for editing dungeon settings, including integrated editing panels for various object types.
- Enhanced error handling and validation throughout the dungeon editing process to ensure robust functionality.
- Updated integration tests to cover new features and validate the overall performance of the dungeon editing system.
- Introduced comprehensive integration tests for the overworld, including tests for overworld map properties, sprite positioning, and filtering logic.
- Added new tests for dungeon integration, focusing on room loading, object parsing, and ensuring compatibility with overworld changes.
- Implemented utility functions for extracting vanilla values from ROM and creating patched ROMs, enhancing testing capabilities.
- Updated CMakeLists.txt to include new test files for comprehensive coverage of overworld and dungeon functionalities.
- Introduced EditorIntegrationTest class to facilitate integration testing for editors, providing a structured environment for testing editor functionalities.
- Implemented methods for initializing the test environment, running tests, and handling ROM operations.
- Added helper methods for common editor actions such as load, save, cut, copy, paste, undo, redo, and find, ensuring thorough coverage of editor capabilities.
- Integrated ImGui test engine for UI interaction testing, enhancing the testing framework's capabilities.
- Updated Snes constructor to initialize CPU callbacks directly, improving readability and maintainability.
- Removed unnecessary CpuCallbacks parameter from Cpu constructor, streamlining the class design.
- Added new methods in Apu for retrieving cycles, status, control, and handling DMA transfers, enhancing audio processing capabilities.
- Introduced unit tests for Apu to validate initialization, sample generation, and handshake timing, ensuring robust audio functionality.
- Updated CMakeLists.txt to include new test files for CPU, PPU, SPC700, APU, and dungeon editor integration tests.
- Introduced new testing helpers in testing.h for validating StatusOr objects with specific error messages and codes.
- Added comprehensive integration tests for the DungeonEditor, covering object parsing, rendering, and room graphics.
- Created mock ROM and object data setups to facilitate testing without real ROM files.
- Implemented various test cases to ensure the reliability of object parsing and rendering logic in the dungeon editor.
- Introduced a Transaction class to handle atomic write operations to ROM, allowing for rollback on failure.
- Implemented methods for writing bytes, words, longs, vectors, and colors, with status checks and operation logging.
- Added a rollback mechanism to restore original values in case of write failures.
- Enhanced unit tests to verify transaction rollback functionality and ensure data integrity after failed operations.
- Changed SnesColor constructor to remove constexpr, improving compatibility with non-constant expressions.
- Added new tests for SnesTile functionality, including unpacking, packing, and conversion between different bit depths.
- Enhanced TileInfo and Tile32 tests to verify construction, operations, and bit manipulation for better coverage.
- Introduced tests for ParseSingleMessage to validate parsing of special characters and dictionary references.
- Added a test case for handling invalid terminators in message data.
- Enhanced existing tests for better coverage of message parsing scenarios.
- Replaced instances of Renderer::GetInstance() with Renderer::Get() for consistency across the codebase.
- Enhanced gesture handling in iOS by adding mouse position events for touch gestures.
- Streamlined test initialization for ImGui to align with recent renderer access changes.