#include <rive/file.hpp>
#include <rive/node.hpp>
#include <rive/shapes/clipping_shape.hpp>
#include <rive/shapes/rectangle.hpp>
#include <rive/shapes/shape.hpp>
#include <rive/animation/state_machine_instance.hpp>
#include "utils/no_op_factory.hpp"
#include "utils/no_op_renderer.hpp"
#include "rive_file_reader.hpp"
#include <catch.hpp>
#include <cstdio>

TEST_CASE("default state machine is detected at load", "[file]")
{
    auto file = ReadRiveFile("assets/entry.riv");

    auto abi = file->artboardAt(0);
    auto index = abi->defaultStateMachineIndex();

    REQUIRE(index >= 0);
    REQUIRE(abi->stateMachineNameAt(index) == "State Machine 1");

    auto smi = abi->defaultStateMachine();

    REQUIRE(smi != nullptr);
    REQUIRE(smi->name() == "State Machine 1");

    // default scene is the same as the default statemachine (when we have one)
    auto scene = abi->defaultScene();
    REQUIRE(scene != nullptr);
    REQUIRE(scene->name() == smi->name());
}
