blob: 198e73a3e745a397bdd79a2d5cad0c02c0b2db27 [file]
#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