2 #include "core/binary_reader.hpp"
4 #include "no_op_renderer.hpp"
6 #include "shapes/clipping_shape.hpp"
7 #include "shapes/rectangle.hpp"
8 #include "shapes/shape.hpp"
11 TEST_CASE("clipping loads correctly", "[clipping]")
13 FILE* fp = fopen("../../test/assets/circle_clips.riv", "r");
14 REQUIRE(fp != nullptr);
16 fseek(fp, 0, SEEK_END);
17 auto length = ftell(fp);
18 fseek(fp, 0, SEEK_SET);
19 uint8_t* bytes = new uint8_t[length];
20 REQUIRE(fread(bytes, 1, length, fp) == length);
21 auto reader = rive::BinaryReader(bytes, length);
22 rive::File* file = nullptr;
23 auto result = rive::File::import(reader, &file);
25 REQUIRE(result == rive::ImportResult::success);
26 REQUIRE(file != nullptr);
27 REQUIRE(file->artboard() != nullptr);
29 auto node = file->artboard()->find("TopEllipse");
30 REQUIRE(node != nullptr);
31 REQUIRE(node->is<rive::Shape>());
33 auto shape = node->as<rive::Shape>();
34 REQUIRE(shape->clippingShapes().size() == 2);
35 REQUIRE(shape->clippingShapes()[0]->source()->name() == "ClipRect2");
36 REQUIRE(shape->clippingShapes()[1]->source()->name() == "BabyEllipse");
38 file->artboard()->updateComponents();
40 rive::NoOpRenderer renderer;
41 file->artboard()->draw(&renderer);