46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
#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 加入 renderer,view 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 接受 vtkVolume(vtkProp3D,非 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);
|
||
}
|