| #include "rive/file.hpp" | |
| #include "rive/animation/linear_animation.hpp" | |
| #include "rive/animation/linear_animation_instance.hpp" | |
| #include "rive/animation/state_machine_instance.hpp" | |
| #include "rive/viewmodel/viewmodel.hpp" | |
| #include "utils/serializing_factory.hpp" | |
| #include "../include/pointer_log_replay.hpp" | |
| #include "rive_file_reader.hpp" | |
| #include <catch.hpp> | |
| #include <cstdio> | |
| #include <cstring> | |
| #include <filesystem> | |
| #include <fstream> | |
| #include <iostream> | |
| using namespace rive; | |
| // These rivs carry Luau bytecode; without the Luau backend the scripts | |
| // cannot run and the streams cannot match. | |
| #ifdef WITH_RIVE_SCRIPTING_LUAU | |
| TEST_CASE("Game menu ad script test", "[script]") | |
| { | |
| SerializingFactory silver; | |
| auto file = ReadRiveFile("assets/game_menu_ad_police_files.riv", &silver); | |
| auto artboard = file->artboardDefault(); | |
| silver.frameSize(artboard->width(), artboard->height()); | |
| auto sm = artboard->stateMachineAt(0); | |
| auto vmi = file->createViewModelInstance(artboard.get()->viewModelId(), 0); | |
| sm->bindViewModelInstance(vmi); | |
| sm->advanceAndApply(0.1f); | |
| auto renderer = silver.makeRenderer(); | |
| artboard->draw(renderer.get()); | |
| replayPointerLog("assets/game_menu_ad_police_files.json", | |
| silver, | |
| artboard.get(), | |
| sm.get(), | |
| renderer.get(), | |
| {.fps = 30}); | |
| CHECK(silver.matches("game_menu_ad_police_files")); | |
| } | |
| TEST_CASE("Inventory script test", "[script]") | |
| { | |
| SerializingFactory silver; | |
| auto file = ReadRiveFile("assets/inventory_demo_test_v2.riv", &silver); | |
| auto artboard = file->artboardDefault(); | |
| silver.frameSize(artboard->width(), artboard->height()); | |
| auto sm = artboard->stateMachineAt(0); | |
| auto vmi = file->createViewModelInstance(artboard.get()->viewModelId(), 0); | |
| sm->bindViewModelInstance(vmi); | |
| sm->advanceAndApply(0.1f); | |
| auto renderer = silver.makeRenderer(); | |
| artboard->draw(renderer.get()); | |
| replayPointerLog("assets/inventory_demo_test_v2.json", | |
| silver, | |
| artboard.get(), | |
| sm.get(), | |
| renderer.get(), | |
| {.fps = 30}); | |
| CHECK(silver.matches("inventory_demo_test_v2")); | |
| } | |
| TEST_CASE("Layout Planets script test", "[script]") | |
| { | |
| SerializingFactory silver; | |
| auto file = ReadRiveFile("assets/layoutstest_8-planets-grid.riv", &silver); | |
| auto artboard = file->artboardDefault(); | |
| silver.frameSize(artboard->width(), artboard->height()); | |
| auto sm = artboard->stateMachineAt(0); | |
| auto vmi = file->createViewModelInstance(artboard.get()->viewModelId(), 0); | |
| sm->bindViewModelInstance(vmi); | |
| sm->advanceAndApply(0.1f); | |
| auto renderer = silver.makeRenderer(); | |
| artboard->draw(renderer.get()); | |
| replayPointerLog("assets/layoutstest_8-planets-grid.json", | |
| silver, | |
| artboard.get(), | |
| sm.get(), | |
| renderer.get(), | |
| {.fps = 30}); | |
| CHECK(silver.matches("layoutstest_8-planets-grid")); | |
| } | |
| #endif // WITH_RIVE_SCRIPTING_LUAU |