geopro/tests/render/test_scene.cpp

46 lines
1.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <gtest/gtest.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkVolume.h>
#include "Scene.hpp"
using geopro::render::Scene;
// addActor 把 vtkActor 加入 rendererview prop 计数 +1。
TEST(SceneTest, AddActorIncrementsViewProps) {
Scene scene;
EXPECT_EQ(scene.renderer()->GetViewProps()->GetNumberOfItems(), 0);
auto a = vtkSmartPointer<vtkActor>::New();
scene.addActor(a);
EXPECT_EQ(scene.renderer()->GetViewProps()->GetNumberOfItems(), 1);
}
// addViewProp 接受 vtkVolumevtkProp3D非 vtkActor——体绘制必经此口。
TEST(SceneTest, AddViewPropAcceptsVolume) {
Scene scene;
auto vol = vtkSmartPointer<vtkVolume>::New();
scene.addViewProp(vol);
EXPECT_EQ(scene.renderer()->GetViewProps()->GetNumberOfItems(), 1);
}
// clear() 经 RemoveAllViewProps 清空 actor 与 volume覆盖体绘制 prop
TEST(SceneTest, ClearRemovesActorsAndVolumes) {
Scene scene;
scene.addActor(vtkSmartPointer<vtkActor>::New());
scene.addViewProp(vtkSmartPointer<vtkVolume>::New());
EXPECT_EQ(scene.renderer()->GetViewProps()->GetNumberOfItems(), 2);
scene.clear();
EXPECT_EQ(scene.renderer()->GetViewProps()->GetNumberOfItems(), 0);
}
// 空指针安全addActor/addViewProp(nullptr) 不崩、不增计数。
TEST(SceneTest, NullPropsAreIgnored) {
Scene scene;
scene.addActor(nullptr);
scene.addViewProp(nullptr);
EXPECT_EQ(scene.renderer()->GetViewProps()->GetNumberOfItems(), 0);
}