Commit Graph

163 Commits

Author SHA1 Message Date
scawful
baedab91c8 Add include for stdlib in YAZE test file
- 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.
2025-09-28 18:12:04 -04:00
scawful
1ac48139c7 Update CMake configuration to enhance test suite management
- 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.
2025-09-28 17:36:19 -04:00
scawful
40127b702e Refactor message tests to improve ROM loading checks and class naming
- 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.
2025-09-28 16:32:02 -04:00
scawful
9066c8a3c0 Refactor test configuration in CMake to enable conditional test builds
- 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.
2025-09-28 16:25:40 -04:00
scawful
edf5cb2c51 Enhance EditorIntegrationTest for ImGui Test Engine support
- 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.
2025-09-28 15:44:44 -04:00
scawful
8e5bfb962b Update ROM loading assertions in integration tests for improved error handling
- 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.
2025-09-28 15:25:14 -04:00
scawful
41326edd91 Refactor E2E ROM tests to improve error handling and readability
- 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.
2025-09-28 15:24:19 -04:00
scawful
3210cc0ab6 Refactor Tracker::SaveSongs function by commenting out unused variables and code
- 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.
2025-09-28 15:22:55 -04:00
scawful
6cb10aac47 Enhance CI testing framework and documentation
- 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.
2025-09-28 15:17:38 -04:00
scawful
97f00d3fc6 Add E2E and ZSCustomOverworld test suites for comprehensive testing
- 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.
2025-09-28 15:11:31 -04:00
scawful
a4821a28e1 Enhance CI workflow and packaging process
- 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.
2025-09-28 14:11:02 -04:00
scawful
a9ead0a45c Refactor EditorManager and OverworldEditor for enhanced functionality and error handling
- 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.
2025-09-27 15:24:58 -04:00
scawful
a868b32a48 Enhance ImGui library integration and CMake configuration
- 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.
2025-09-26 16:47:47 -04:00
scawful
857e75e7fe Refactor CMake configuration for core library and testing
- 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.
2025-09-26 15:14:52 -04:00
scawful
78579d2934 Update CMake include directories for improved modularity and organization
- 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.
2025-09-26 14:46:41 -04:00
scawful
cbce2730b6 Update CMake configuration and .clangd settings for improved build management
- 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.
2025-09-26 13:51:02 -04:00
scawful
9b43c2b4e4 Enhance CMake configuration for UI tests and SDL2 linking
- 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.
2025-09-26 12:06:39 -04:00
scawful
7ca841d6a5 Refactor DungeonCanvasViewer for enhanced rendering and object management
- 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.
2025-09-25 20:58:40 -04:00
scawful
41adb1b70e Enhance testing framework and UI integration for YAZE
- 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.
2025-09-25 13:26:56 -04:00
scawful
4c6342cb73 Refactor UnpackBppTile and PackBppTile functions for clarity and correctness
- 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.
2025-09-25 11:16:13 -04:00
scawful
e930789f4b Enhance CMake configuration and CI/CD workflows for improved testing
- 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.
2025-09-25 09:39:33 -04:00
scawful
6bdcfe95ec Update CMake configuration and CI/CD workflows
- 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.
2025-09-25 08:59:59 -04:00
scawful
ccd4e8cf4b Integrate Dungeon Editor System and Object Editor for Enhanced Dungeon Management
- 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.
2025-09-24 22:48:47 -04:00
scawful
f6ef5f971b Add integration tests for overworld and dungeon functionalities
- 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.
2025-09-24 18:37:57 -04:00
scawful
710a9685fe Add EditorIntegrationTest class for comprehensive editor testing
- 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.
2025-09-24 12:59:07 -04:00
scawful
3734884ba3 Refactor Snes class and enhance Apu functionality
- 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.
2025-09-24 12:51:29 -04:00
scawful
789f577ee3 Add integration tests for Dungeon Editor and object parsing 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.
2025-09-24 12:44:14 -04:00
scawful
d5ec1ece19 Update window creation in TestEditor to support resizable windows
- Modified the CreateWindow function call to include the SDL_WINDOW_RESIZABLE flag, allowing for dynamic window resizing during integration tests.
2025-09-13 11:45:51 -04:00
scawful
e2aab3f2e4 Add transaction management for atomic ROM operations with rollback
- 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.
2025-09-13 11:45:29 -04:00
scawful
7f60ddcd42 test housekeeping 2025-08-21 19:01:40 -04:00
scawful
f632650568 Update SnesColor constructor and add SnesTile tests
- 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.
2025-05-15 23:05:25 -04:00
scawful
47ab1bdfd5 Add tests for ParseSingleMessage handling special characters and dictionary references
- 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.
2025-05-15 22:59:02 -04:00
scawful
fcb6a46bb1 Refactor Renderer access and improve gesture handling in iOS and test files
- 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.
2025-05-08 19:39:49 -04:00
scawful
6e09630733 Refactor HandleHexStringParams to modify hex string directly and add hex_test for comprehensive testing of hex conversion functions with various prefixes. 2025-05-03 14:09:35 -04:00
scawful
6c6f7a9581 Add comprehensive tests for SnesColor and SnesPalette classes, including constructors, color addition, updating, sub-palettes, and iterator functionality; ensure proper behavior and state management in various scenarios. 2025-04-17 22:12:14 -04:00
scawful
f43328a1ae Update overworld loading logic to use Rom pointers directly; adjust test cases for consistency. 2025-04-12 11:29:45 -04:00
scawful
cb86c7b2ec Add TestEditor class and integration test setup for ImGui; implement basic UI elements and test registration functionality. 2025-04-12 09:59:47 -04:00
scawful
e38a7d7581 Fix formatting in ParseTextDataByte and optimize message handling in ReadAllTextDataV2 2025-04-05 17:50:49 -04:00
scawful
2539724369 Add unit tests for message parsing and dictionary word replacement functions 2025-04-05 17:26:03 -04:00
scawful
9705745c14 Refactor MessageTest: remove unused tests and enhance message parsing validation 2025-04-05 14:07:24 -04:00
scawful
0d4ae946f8 Refactor TestEditor: move to yaze::test namespace and implement Save/Load methods 2025-04-05 13:47:07 -04:00
scawful
358520fcae Remove test editor integration from Controller and update integration test logic 2025-03-11 20:11:47 -04:00
scawful
b707345a06 Add MockRom class for unit testing ROM interactions 2025-03-03 17:08:24 -05:00
scawful
26cda69d44 Refactor common functionality into zelda3 namespace; remove references to core::common 2025-01-22 13:53:01 -05:00
scawful
809282edad remove nonstandard type aliases 2025-01-19 20:16:40 -05:00
scawful
fa33be3463 Add tests for ParseSingleMessage function in message_test.cc 2025-01-19 20:01:57 -05:00
scawful
5afaecf1ee Refactor test includes 2025-01-19 19:14:53 -05:00
scawful
e4cc3b977a Move test dir to root 2025-01-19 19:09:39 -05:00
scawful
096b10ff77 move test directory into src 2024-07-24 01:55:13 -04:00
scawful
4582a18f53 Move GfxContext to editor/utils, update CMakeLists.txt 2024-07-19 23:07:04 -04:00