diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d352c39..c8ec5e8 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -381,485 +381,6 @@ add_emutest_test( TEST_SCRIPT "loads-core.lua" ) -## Loading invalid data #################################################### - -add_emutest_test( - NAME "Loading invalid ROM does not cause a crash" - CONTENT "$" - TEST_SCRIPT "no-crash-on-invalid-rom.lua" - WILL_FAIL -) - -# See https://github.com/JesseTG/melonds-ds/issues/70 -add_retroarch_test( - NAME "Core unloads with threaded software rendering" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_boot_mode=direct" - CORE_OPTION "melonds_sysfile_mode=builtin" - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_threaded_renderer=enabled" -) - -# See https://github.com/JesseTG/melonds-ds/issues/62 -add_emutest_test( - NAME "Core resets when using built-in system files and direct boot (NDS)" - CONTENT "${NDS_ROM}" - TEST_SCRIPT "no-hang-on-reboot.lua" - CORE_OPTION melonds_boot_mode="direct" - CORE_OPTION melonds_show_cursor="disabled" - CORE_OPTION melonds_sysfile_mode="builtin" - CORE_OPTION melonds_console_mode="ds" -) - -add_emutest_test( - NAME "Core resets when using native system files and direct boot (NDS)" - CONTENT "${NDS_ROM}" - TEST_SCRIPT "no-hang-on-reboot.lua" - ARM7_BIOS - ARM9_BIOS - NDS_FIRMWARE - CORE_OPTION melonds_firmware_nds_path='melonDS DS/${NDS_FIRMWARE_NAME}' - CORE_OPTION melonds_boot_mode="direct" - CORE_OPTION melonds_sysfile_mode="native" - CORE_OPTION melonds_show_cursor="disabled" - CORE_OPTION melonds_console_mode="ds" -) - -add_emutest_test( - NAME "Core resets when using native system files and native boot (NDS)" - CONTENT "${NDS_ROM}" - TEST_SCRIPT "no-hang-on-reboot.lua" - ARM7_BIOS - ARM9_BIOS - NDS_FIRMWARE - CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" - CORE_OPTION melonds_boot_mode="native" - CORE_OPTION melonds_sysfile_mode="native" - CORE_OPTION melonds_show_cursor="disabled" -) - -add_emutest_test( - NAME "Core resets when using native system files and direct boot (DSi)" - CONTENT "${NDS_ROM}" - TEST_SCRIPT "no-hang-on-reboot.lua" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - DSI_FIRMWARE - DSI_NAND - CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" - CORE_OPTION melonds_console_mode="dsi" - CORE_OPTION melonds_boot_mode="direct" - CORE_OPTION melonds_sysfile_mode="native" - CORE_OPTION melonds_show_cursor="disabled" -) - -add_emutest_test( - NAME "Core resets when using native system files and native boot (DSi)" - CONTENT "${NDS_ROM}" - TEST_SCRIPT "no-hang-on-reboot.lua" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - DSI_FIRMWARE - DSI_NAND - CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION melonds_console_mode="dsi" - CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" - CORE_OPTION melonds_boot_mode="native" - CORE_OPTION melonds_sysfile_mode="native" - CORE_OPTION melonds_show_cursor="disabled" -) - -# See https://github.com/JesseTG/melonds-ds/issues/51 -add_retroarch_test( - NAME "Core exposes config options to frontend" - CONTENT "${NDS_ROM}" - FAIL_REGULAR_EXPRESSION "GET_VARIABLE: melonds_[a-z_]+ - Not implemented" -) - -### Preventing Unneeded Loads - -add_retroarch_test( - NAME "Core doesn't try to load native BIOS if using FreeBIOS (NDS)" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=builtin" - PASS_REGULAR_EXPRESSION "Not loading native ARM BIOS files" -) - -### With Content - -add_retroarch_test( - NAME "Core falls back to FreeBIOS if ARM7 BIOS is missing (NDS)" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=native" - CORE_OPTION "melonds_boot_mode=direct" - ARM9_BIOS - PASS_REGULAR_EXPRESSION "Falling back to FreeBIOS" -) - -add_retroarch_test( - NAME "Core falls back to FreeBIOS if ARM9 BIOS is missing (NDS)" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=native" - CORE_OPTION "melonds_boot_mode=direct" - ARM7_BIOS - PASS_REGULAR_EXPRESSION "Falling back to FreeBIOS" -) - -add_retroarch_test( - NAME "Core falls back to built-in firmware if native firmware is missing (NDS)" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=native" - CORE_OPTION "melonds_boot_mode=direct" - CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${NDS_FIRMWARE_NAME}" - ARM7_BIOS - ARM9_BIOS - PASS_REGULAR_EXPRESSION "Falling back to built-in firmware" -) - - -## Direct Boot of NDS game #################################################### - -add_retroarch_test( - NAME "Direct NDS boot with built-in system files succeeds" - CONTENT "${NDS_ROM}" - MAX_FRAMES 180 - CORE_OPTION "melonds_boot_mode=direct" - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=builtin" -) - -add_retroarch_test( - NAME "Direct NDS boot with native system files succeeds" - CONTENT "${NDS_ROM}" - MAX_FRAMES 180 - CORE_OPTION "melonds_boot_mode=direct" - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=native" - CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${NDS_FIRMWARE_NAME}" - ARM7_BIOS - ARM9_BIOS - NDS_FIRMWARE - FAIL_REGULAR_EXPRESSION "Failed to load ARM[79]" - FAIL_REGULAR_EXPRESSION "Failed to load the required firmware" -) - -add_retroarch_test( - NAME "Direct NDS boot with native BIOS and non-bootable firmware succeeds" - CONTENT "${NDS_ROM}" - MAX_FRAMES 180 - CORE_OPTION "melonds_boot_mode=direct" - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=native" - CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${DSI_FIRMWARE_NAME}" - ARM7_BIOS - ARM9_BIOS - DSI_FIRMWARE - FAIL_REGULAR_EXPRESSION "Failed to load ARM[79]" - FAIL_REGULAR_EXPRESSION "Failed to load the required firmware" -) - -## Boot to firmware #################################################### - -add_retroarch_test( - NAME "NDS boot with no content, native BIOS, and bootable firmware succeeds" - MAX_FRAMES 180 - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=native" - CORE_OPTION "melonds_boot_mode=native" - CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${NDS_FIRMWARE_NAME}" - NDS_FIRMWARE - ARM7_BIOS - ARM9_BIOS -) - -add_retroarch_test( - NAME "NDS boot with no content and built-in system files fails" - MAX_FRAMES 180 - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=builtin" - WILL_FAIL -) - -add_retroarch_test( - NAME "NDS boot with no content, native BIOS, and non-bootable firmware fails" - MAX_FRAMES 180 - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_sysfile_mode=builtin" - CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${DSI_FIRMWARE_NAME}" - ARM7_BIOS - ARM9_BIOS - DSI_FIRMWARE - WILL_FAIL -) - -## DSi boot #################################################### - -add_retroarch_test( - NAME "DSi boot to menu with no NAND image fails" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION "melonds_dsi_nand_path=/notfound" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - DSI_FIRMWARE - WILL_FAIL -) - -add_retroarch_test( - NAME "DSi boot to menu with no NDS BIOS fails" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" - ARM7_DSI_BIOS - ARM9_DSI_BIOS - DSI_FIRMWARE - DSI_NAND - WILL_FAIL -) - -add_retroarch_test( - NAME "DSi boot to menu with no DSi BIOS fails" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" - ARM7_BIOS - ARM9_BIOS - DSI_FIRMWARE - DSI_NAND - WILL_FAIL -) - -add_retroarch_test( - NAME "DSi boot to menu with NDS firmware fails" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${NDS_FIRMWARE_NAME}" - CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - NDS_FIRMWARE - DSI_NAND - WILL_FAIL -) - -add_retroarch_test( - NAME "DSi boot to menu with no firmware fails" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - DSI_NAND - WILL_FAIL -) - -add_retroarch_test( - NAME "DSi boot to menu with all system files succeeds" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - DSI_FIRMWARE - DSI_NAND -) - -add_retroarch_test( - NAME "Direct DSi boot to NDS game with no NAND image fails" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_boot_mode=direct" - CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION "melonds_dsi_nand_path=/notfound" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - DSI_FIRMWARE - WILL_FAIL -) - -add_retroarch_test( - NAME "Direct DSi boot to NDS game with no NDS BIOS image fails" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_boot_mode=direct" - CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" - ARM7_DSI_BIOS - ARM9_DSI_BIOS - DSI_FIRMWARE - DSI_NAND - WILL_FAIL -) - -add_retroarch_test( - NAME "Direct DSi boot to NDS game with no DSi BIOS image fails" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_boot_mode=direct" - CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" - ARM7_BIOS - ARM9_BIOS - DSI_FIRMWARE - DSI_NAND - WILL_FAIL -) - -add_retroarch_test( - NAME "Direct DSi boot to NDS game with all system files succeeds" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=dsi" - CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - DSI_FIRMWARE - DSI_NAND -) - -### Using wfcsettings.bin - -# See https://github.com/JesseTG/melonds-ds/issues/59 -add_retroarch_test( - NAME "Native firmware is not overwritten by contents of wfcsettings.bin" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${NDS_FIRMWARE_NAME}" - CORE_OPTION "melonds_sysfile_mode=native" - CORE_OPTION "melonds_boot_mode=native" - ARM7_BIOS - ARM9_BIOS - NDS_FIRMWARE - REQUIRE_FILE_SIZE_UNCHANGED "system/melonDS DS/${NDS_FIRMWARE_NAME}" -) - -add_retroarch_test( - NAME "Core saves wi-fi settings to wfcsettings.bin when using built-in firmware" - CONTENT "${NDS_ROM}" - MAX_FRAMES 6 - CORE_OPTION "melonds_console_mode=ds" - CORE_OPTION "melonds_firmware_nds_path=/builtin" - ARM7_BIOS - ARM9_BIOS - REQUIRE_FILE_CREATED "system/melonDS DS/wfcsettings.bin" -) - -### Overwriting Firmware - -add_emutest_test( - NAME "NDS firmware is not overwritten when switching from DS to DSi mode" - CONTENT "${NDS_ROM}" - TEST_SCRIPT "firmware-not-overwritten.lua" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - NDS_FIRMWARE - DSI_FIRMWARE - DSI_NAND - CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" - CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" - CORE_OPTION melonds_console_mode="ds" - CORE_OPTION melonds_boot_directly="false" - CORE_OPTION melonds_sysfile_mode="native" - CORE_OPTION melonds_show_cursor="disabled" -) - -add_emutest_test( - NAME "NDS firmware is not overwritten when switching from DSi to NDS mode" - CONTENT "${NDS_ROM}" - TEST_SCRIPT "firmware-not-overwritten.lua" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - NDS_FIRMWARE - DSI_FIRMWARE - DSI_NAND - CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" - CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" - CORE_OPTION melonds_console_mode="dsi" - CORE_OPTION melonds_boot_directly="false" - CORE_OPTION melonds_sysfile_mode="native" - CORE_OPTION melonds_show_cursor="disabled" -) - -add_emutest_test( - NAME "DSi firmware is not overwritten when switching from NDS to DSi mode" - CONTENT "${NDS_ROM}" - TEST_SCRIPT "firmware-not-overwritten.lua" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - NDS_FIRMWARE - DSI_FIRMWARE - DSI_NAND - CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" - CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" - CORE_OPTION melonds_console_mode="dsi" - CORE_OPTION melonds_boot_directly="false" - CORE_OPTION melonds_sysfile_mode="native" - CORE_OPTION melonds_show_cursor="disabled" -) - -add_emutest_test( - NAME "DSi firmware is not overwritten when switching from DSi to NDS mode" - CONTENT "${NDS_ROM}" - TEST_SCRIPT "firmware-not-overwritten.lua" - ARM7_BIOS - ARM9_BIOS - ARM7_DSI_BIOS - ARM9_DSI_BIOS - NDS_FIRMWARE - DSI_FIRMWARE - DSI_NAND - CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" - CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" - CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" - CORE_OPTION melonds_console_mode="dsi" - CORE_OPTION melonds_boot_directly="false" - CORE_OPTION melonds_sysfile_mode="native" - CORE_OPTION melonds_show_cursor="disabled" -) - # TODO: Write the following test capabilities: # - Copying a system file to a particular location # - Select a GBA ROM @@ -875,4 +396,9 @@ add_emutest_test( # (will need to find a test case besides Pokemon) include(cmake/Basics.cmake) -include(cmake/TestHomebrewSDCards.cmake) \ No newline at end of file +include(cmake/Booting.cmake) +include(cmake/Errors.cmake) +include(cmake/Firmware.cmake) +include(cmake/Reset.cmake) +include(cmake/TestHomebrewSDCards.cmake) +include(cmake/Video.cmake) \ No newline at end of file diff --git a/test/cmake/Basics.cmake b/test/cmake/Basics.cmake index dac01a3..7d50ad1 100644 --- a/test/cmake/Basics.cmake +++ b/test/cmake/Basics.cmake @@ -82,7 +82,8 @@ add_python_test( add_python_test( NAME "Core accepts analog input" - TEST_MODULE "" + TEST_MODULE basics.core_accepts_analog_input + NDS_SYSFILES # This test needs the NDS system menu ) add_python_test( @@ -127,8 +128,11 @@ add_python_test( add_python_test( NAME "Core rotates the screen" - TEST_MODULE "" -) + TEST_MODULE basics.core_rotates_screen + NDS_SYSFILES + DISABLED +) # TODO: Implement this test +# TODO: Set the screen layout sequence add_python_test( NAME "Core can send messages (API V0)" @@ -226,7 +230,8 @@ add_python_test( add_python_test( NAME "Core loads and unloads with subsystem content" TEST_MODULE "" -) + DISABLED +) # TODO: Implement this test add_python_test( NAME "Core defines controller info" @@ -237,7 +242,8 @@ add_python_test( add_python_test( NAME "Core sets geometry at runtime" TEST_MODULE "" -) + DISABLED +) # TODO: Implement this test add_python_test( NAME "Core registers support for achievements" @@ -295,6 +301,7 @@ add_python_test( NDS_SYSFILES ) +# See https://github.com/JesseTG/melonds-ds/issues/51 add_python_test( NAME "Core sets options (V2 API)" TEST_MODULE basics.core_defines_options_v2 @@ -310,12 +317,14 @@ add_python_test( add_python_test( NAME "Core accepts microphone input" TEST_MODULE "" -) + DISABLED +) # TODO: Implement this test add_python_test( NAME "Core queries device power state" TEST_MODULE "" -) + DISABLED +) # TODO: Implement this test diff --git a/test/cmake/Booting.cmake b/test/cmake/Booting.cmake new file mode 100644 index 0000000..003b628 --- /dev/null +++ b/test/cmake/Booting.cmake @@ -0,0 +1,219 @@ +## Direct Boot of NDS game #################################################### + +add_retroarch_test( + NAME "Direct NDS boot with built-in system files succeeds" + CONTENT "${NDS_ROM}" + MAX_FRAMES 180 + CORE_OPTION "melonds_boot_mode=direct" + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=builtin" +) + +add_retroarch_test( + NAME "Direct NDS boot with native system files succeeds" + CONTENT "${NDS_ROM}" + MAX_FRAMES 180 + CORE_OPTION "melonds_boot_mode=direct" + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=native" + CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${NDS_FIRMWARE_NAME}" + ARM7_BIOS + ARM9_BIOS + NDS_FIRMWARE + FAIL_REGULAR_EXPRESSION "Failed to load ARM[79]" + FAIL_REGULAR_EXPRESSION "Failed to load the required firmware" +) + +add_retroarch_test( + NAME "Direct NDS boot with native BIOS and non-bootable firmware succeeds" + CONTENT "${NDS_ROM}" + MAX_FRAMES 180 + CORE_OPTION "melonds_boot_mode=direct" + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=native" + CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${DSI_FIRMWARE_NAME}" + ARM7_BIOS + ARM9_BIOS + DSI_FIRMWARE + FAIL_REGULAR_EXPRESSION "Failed to load ARM[79]" + FAIL_REGULAR_EXPRESSION "Failed to load the required firmware" +) + +## Boot to firmware #################################################### + +add_retroarch_test( + NAME "NDS boot with no content, native BIOS, and bootable firmware succeeds" + MAX_FRAMES 180 + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=native" + CORE_OPTION "melonds_boot_mode=native" + CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${NDS_FIRMWARE_NAME}" + NDS_FIRMWARE + ARM7_BIOS + ARM9_BIOS +) + +add_retroarch_test( + NAME "NDS boot with no content and built-in system files fails" + MAX_FRAMES 180 + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=builtin" + WILL_FAIL +) + +add_retroarch_test( + NAME "NDS boot with no content, native BIOS, and non-bootable firmware fails" + MAX_FRAMES 180 + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=builtin" + CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${DSI_FIRMWARE_NAME}" + ARM7_BIOS + ARM9_BIOS + DSI_FIRMWARE + WILL_FAIL +) + +## DSi boot #################################################### + +add_retroarch_test( + NAME "DSi boot to menu with no NAND image fails" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION "melonds_dsi_nand_path=/notfound" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + DSI_FIRMWARE + WILL_FAIL +) + +add_retroarch_test( + NAME "DSi boot to menu with no NDS BIOS fails" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" + ARM7_DSI_BIOS + ARM9_DSI_BIOS + DSI_FIRMWARE + DSI_NAND + WILL_FAIL +) + +add_retroarch_test( + NAME "DSi boot to menu with no DSi BIOS fails" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" + ARM7_BIOS + ARM9_BIOS + DSI_FIRMWARE + DSI_NAND + WILL_FAIL +) + +add_retroarch_test( + NAME "DSi boot to menu with NDS firmware fails" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${NDS_FIRMWARE_NAME}" + CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + NDS_FIRMWARE + DSI_NAND + WILL_FAIL +) + +add_retroarch_test( + NAME "DSi boot to menu with no firmware fails" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + DSI_NAND + WILL_FAIL +) + +add_retroarch_test( + NAME "DSi boot to menu with all system files succeeds" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + DSI_FIRMWARE + DSI_NAND +) + +add_retroarch_test( + NAME "Direct DSi boot to NDS game with no NAND image fails" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_boot_mode=direct" + CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION "melonds_dsi_nand_path=/notfound" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + DSI_FIRMWARE + WILL_FAIL +) + +add_retroarch_test( + NAME "Direct DSi boot to NDS game with no NDS BIOS image fails" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_boot_mode=direct" + CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" + ARM7_DSI_BIOS + ARM9_DSI_BIOS + DSI_FIRMWARE + DSI_NAND + WILL_FAIL +) + +add_retroarch_test( + NAME "Direct DSi boot to NDS game with no DSi BIOS image fails" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_boot_mode=direct" + CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" + ARM7_BIOS + ARM9_BIOS + DSI_FIRMWARE + DSI_NAND + WILL_FAIL +) + +add_retroarch_test( + NAME "Direct DSi boot to NDS game with all system files succeeds" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=dsi" + CORE_OPTION "melonds_firmware_dsi_path=melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION "melonds_dsi_nand_path=melonDS DS/${DSI_NAND_NAME}" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + DSI_FIRMWARE + DSI_NAND +) \ No newline at end of file diff --git a/test/cmake/Errors.cmake b/test/cmake/Errors.cmake new file mode 100644 index 0000000..204c715 --- /dev/null +++ b/test/cmake/Errors.cmake @@ -0,0 +1,43 @@ +### With Content + +add_retroarch_test( + NAME "Core falls back to FreeBIOS if ARM7 BIOS is missing (NDS)" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=native" + CORE_OPTION "melonds_boot_mode=direct" + ARM9_BIOS + PASS_REGULAR_EXPRESSION "Falling back to FreeBIOS" +) + +add_retroarch_test( + NAME "Core falls back to FreeBIOS if ARM9 BIOS is missing (NDS)" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=native" + CORE_OPTION "melonds_boot_mode=direct" + ARM7_BIOS + PASS_REGULAR_EXPRESSION "Falling back to FreeBIOS" +) + +add_retroarch_test( + NAME "Core falls back to built-in firmware if native firmware is missing (NDS)" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=native" + CORE_OPTION "melonds_boot_mode=direct" + CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${NDS_FIRMWARE_NAME}" + ARM7_BIOS + ARM9_BIOS + PASS_REGULAR_EXPRESSION "Falling back to built-in firmware" +) + +add_emutest_test( + NAME "Loading invalid ROM does not cause a crash" + CONTENT "$" + TEST_SCRIPT "no-crash-on-invalid-rom.lua" + WILL_FAIL +) diff --git a/test/cmake/Firmware.cmake b/test/cmake/Firmware.cmake new file mode 100644 index 0000000..e3115c9 --- /dev/null +++ b/test/cmake/Firmware.cmake @@ -0,0 +1,118 @@ +### Preventing Unneeded Loads +add_retroarch_test( + NAME "Core doesn't try to load native BIOS if using FreeBIOS (NDS)" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_sysfile_mode=builtin" + PASS_REGULAR_EXPRESSION "Not loading native ARM BIOS files" +) + + + +# See https://github.com/JesseTG/melonds-ds/issues/59 +add_retroarch_test( + NAME "Native firmware is not overwritten by contents of wfcsettings.bin" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_firmware_nds_path=melonDS DS/${NDS_FIRMWARE_NAME}" + CORE_OPTION "melonds_sysfile_mode=native" + CORE_OPTION "melonds_boot_mode=native" + ARM7_BIOS + ARM9_BIOS + NDS_FIRMWARE + REQUIRE_FILE_SIZE_UNCHANGED "system/melonDS DS/${NDS_FIRMWARE_NAME}" +) + +add_retroarch_test( + NAME "Core saves wi-fi settings to wfcsettings.bin when using built-in firmware" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_firmware_nds_path=/builtin" + ARM7_BIOS + ARM9_BIOS + REQUIRE_FILE_CREATED "system/melonDS DS/wfcsettings.bin" +) + +### Overwriting Firmware + +add_emutest_test( + NAME "NDS firmware is not overwritten when switching from DS to DSi mode" + CONTENT "${NDS_ROM}" + TEST_SCRIPT "firmware-not-overwritten.lua" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + NDS_FIRMWARE + DSI_FIRMWARE + DSI_NAND + CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" + CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" + CORE_OPTION melonds_console_mode="ds" + CORE_OPTION melonds_boot_directly="false" + CORE_OPTION melonds_sysfile_mode="native" + CORE_OPTION melonds_show_cursor="disabled" +) + +add_emutest_test( + NAME "NDS firmware is not overwritten when switching from DSi to NDS mode" + CONTENT "${NDS_ROM}" + TEST_SCRIPT "firmware-not-overwritten.lua" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + NDS_FIRMWARE + DSI_FIRMWARE + DSI_NAND + CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" + CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" + CORE_OPTION melonds_console_mode="dsi" + CORE_OPTION melonds_boot_directly="false" + CORE_OPTION melonds_sysfile_mode="native" + CORE_OPTION melonds_show_cursor="disabled" +) + +add_emutest_test( + NAME "DSi firmware is not overwritten when switching from NDS to DSi mode" + CONTENT "${NDS_ROM}" + TEST_SCRIPT "firmware-not-overwritten.lua" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + NDS_FIRMWARE + DSI_FIRMWARE + DSI_NAND + CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" + CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" + CORE_OPTION melonds_console_mode="dsi" + CORE_OPTION melonds_boot_directly="false" + CORE_OPTION melonds_sysfile_mode="native" + CORE_OPTION melonds_show_cursor="disabled" +) + +add_emutest_test( + NAME "DSi firmware is not overwritten when switching from DSi to NDS mode" + CONTENT "${NDS_ROM}" + TEST_SCRIPT "firmware-not-overwritten.lua" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + NDS_FIRMWARE + DSI_FIRMWARE + DSI_NAND + CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" + CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" + CORE_OPTION melonds_console_mode="dsi" + CORE_OPTION melonds_boot_directly="false" + CORE_OPTION melonds_sysfile_mode="native" + CORE_OPTION melonds_show_cursor="disabled" +) \ No newline at end of file diff --git a/test/cmake/Reset.cmake b/test/cmake/Reset.cmake new file mode 100644 index 0000000..1e1d09f --- /dev/null +++ b/test/cmake/Reset.cmake @@ -0,0 +1,74 @@ + +# See https://github.com/JesseTG/melonds-ds/issues/62 +add_emutest_test( + NAME "Core resets when using built-in system files and direct boot (NDS)" + CONTENT "${NDS_ROM}" + TEST_SCRIPT "no-hang-on-reboot.lua" + CORE_OPTION melonds_boot_mode="direct" + CORE_OPTION melonds_show_cursor="disabled" + CORE_OPTION melonds_sysfile_mode="builtin" + CORE_OPTION melonds_console_mode="ds" +) + +add_emutest_test( + NAME "Core resets when using native system files and direct boot (NDS)" + CONTENT "${NDS_ROM}" + TEST_SCRIPT "no-hang-on-reboot.lua" + ARM7_BIOS + ARM9_BIOS + NDS_FIRMWARE + CORE_OPTION melonds_firmware_nds_path='melonDS DS/${NDS_FIRMWARE_NAME}' + CORE_OPTION melonds_boot_mode="direct" + CORE_OPTION melonds_sysfile_mode="native" + CORE_OPTION melonds_show_cursor="disabled" + CORE_OPTION melonds_console_mode="ds" +) + +add_emutest_test( + NAME "Core resets when using native system files and native boot (NDS)" + CONTENT "${NDS_ROM}" + TEST_SCRIPT "no-hang-on-reboot.lua" + ARM7_BIOS + ARM9_BIOS + NDS_FIRMWARE + CORE_OPTION melonds_firmware_nds_path="melonDS DS/${NDS_FIRMWARE_NAME}" + CORE_OPTION melonds_boot_mode="native" + CORE_OPTION melonds_sysfile_mode="native" + CORE_OPTION melonds_show_cursor="disabled" +) + +add_emutest_test( + NAME "Core resets when using native system files and direct boot (DSi)" + CONTENT "${NDS_ROM}" + TEST_SCRIPT "no-hang-on-reboot.lua" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + DSI_FIRMWARE + DSI_NAND + CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" + CORE_OPTION melonds_console_mode="dsi" + CORE_OPTION melonds_boot_mode="direct" + CORE_OPTION melonds_sysfile_mode="native" + CORE_OPTION melonds_show_cursor="disabled" +) + +add_emutest_test( + NAME "Core resets when using native system files and native boot (DSi)" + CONTENT "${NDS_ROM}" + TEST_SCRIPT "no-hang-on-reboot.lua" + ARM7_BIOS + ARM9_BIOS + ARM7_DSI_BIOS + ARM9_DSI_BIOS + DSI_FIRMWARE + DSI_NAND + CORE_OPTION melonds_firmware_dsi_path="melonDS DS/${DSI_FIRMWARE_NAME}" + CORE_OPTION melonds_console_mode="dsi" + CORE_OPTION melonds_dsi_nand_path="melonDS DS/${DSI_NAND_NAME}" + CORE_OPTION melonds_boot_mode="native" + CORE_OPTION melonds_sysfile_mode="native" + CORE_OPTION melonds_show_cursor="disabled" +) \ No newline at end of file diff --git a/test/cmake/Video.cmake b/test/cmake/Video.cmake new file mode 100644 index 0000000..a303a73 --- /dev/null +++ b/test/cmake/Video.cmake @@ -0,0 +1,10 @@ +# See https://github.com/JesseTG/melonds-ds/issues/70 +add_retroarch_test( + NAME "Core unloads with threaded software rendering" + CONTENT "${NDS_ROM}" + MAX_FRAMES 6 + CORE_OPTION "melonds_boot_mode=direct" + CORE_OPTION "melonds_sysfile_mode=builtin" + CORE_OPTION "melonds_console_mode=ds" + CORE_OPTION "melonds_threaded_renderer=enabled" +) \ No newline at end of file