| #include "rive/core/binary_reader.hpp" | |
| #include "rive/file.hpp" | |
| #include "rive/nested_artboard.hpp" | |
| #include "rive/text/text_value_run.hpp" | |
| #include "rive/animation/state_machine_instance.hpp" | |
| #include "rive/animation/state_machine_input_instance.hpp" | |
| #include "catch.hpp" | |
| #include "rive_file_reader.hpp" | |
| #include <cstdio> | |
| TEST_CASE("validate nested text get/set", "[nestedText]") | |
| { | |
| auto file = ReadRiveFile("../../test/assets/runtime_nested_text_runs.riv"); | |
| auto artboard = file->artboard("ArtboardA")->instance(); | |
| REQUIRE(artboard != nullptr); | |
| REQUIRE(artboard->stateMachineCount() == 1); | |
| // Test getting/setting TextValueRun view nested artboard path one level deep | |
| auto textRunB1 = artboard->getTextRun("ArtboardBRun", "ArtboardB-1"); | |
| REQUIRE(textRunB1->is<rive::TextValueRun>()); | |
| REQUIRE(textRunB1->text() == "Artboard B Run"); | |
| auto textRunB2 = artboard->getTextRun("ArtboardBRun", "ArtboardB-2"); | |
| REQUIRE(textRunB2->is<rive::TextValueRun>()); | |
| REQUIRE(textRunB2->text() == "Artboard B Run"); | |
| // Test getting/setting TextValueRun view nested artboard path two level deep | |
| auto textRunB1C1 = artboard->getTextRun("ArtboardCRun", "ArtboardB-1/ArtboardC-1"); | |
| REQUIRE(textRunB1C1->is<rive::TextValueRun>()); | |
| REQUIRE(textRunB1C1->text() == "Artboard C Run"); | |
| auto textRunB1C2 = artboard->getTextRun("ArtboardCRun", "ArtboardB-1/ArtboardC-2"); | |
| REQUIRE(textRunB1C2->is<rive::TextValueRun>()); | |
| REQUIRE(textRunB1C2->text() == "Artboard C Run"); | |
| auto textRunB2C1 = artboard->getTextRun("ArtboardCRun", "ArtboardB-2/ArtboardC-1"); | |
| REQUIRE(textRunB2C1->is<rive::TextValueRun>()); | |
| REQUIRE(textRunB2C1->text() == "Artboard C Run"); | |
| auto textRunB2C2 = artboard->getTextRun("ArtboardCRun", "ArtboardB-2/ArtboardC-2"); | |
| REQUIRE(textRunB2C2->is<rive::TextValueRun>()); | |
| REQUIRE(textRunB2C2->text() == "Artboard C Run"); | |
| // Validate that text run values can be set | |
| textRunB1->text("Artboard B1 Run Updated"); | |
| textRunB2->text("Artboard B2 Run Updated"); | |
| textRunB1C1->text("Artboard B1C1 Run Updated"); | |
| textRunB1C2->text("Artboard B1C2 Run Updated"); | |
| textRunB2C1->text("Artboard B2C1 Run Updated"); | |
| textRunB2C2->text("Artboard B2C2 Run Updated"); | |
| REQUIRE(textRunB1->text() == "Artboard B1 Run Updated"); | |
| REQUIRE(textRunB2->text() == "Artboard B2 Run Updated"); | |
| REQUIRE(textRunB1C1->text() == "Artboard B1C1 Run Updated"); | |
| REQUIRE(textRunB1C2->text() == "Artboard B1C2 Run Updated"); | |
| REQUIRE(textRunB2C1->text() == "Artboard B2C1 Run Updated"); | |
| REQUIRE(textRunB2C2->text() == "Artboard B2C2 Run Updated"); | |
| } |