Skip to content

Commit 9d2bf0b

Browse files
committed
add one unit test on warning with no model and update other tests
1 parent f1ef116 commit 9d2bf0b

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

Sofa/Component/Collision/Detection/Algorithm/tests/CollisionPipeline_test.cpp

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,14 @@ class TestCollisionPipeline : public BaseSimulationTest {
7272
void checkCollisionPipelineWithMissingBroadPhase();
7373
void checkCollisionPipelineWithMissingNarrowPhase();
7474
void checkCollisionPipelineWithMissingContactManager();
75+
void checkCollisionPipelineWithMissingCollisionModel();
7576
int checkCollisionPipelineWithMonkeyValueForDepth(int value);
7677

7778
void doSetUp() override
7879
{
7980
this->loadPlugins({
8081
Sofa.Component.StateContainer,
82+
Sofa.Component.Collision.Geometry,
8183
Sofa.Component.Collision.Detection.Algorithm,
8284
Sofa.Component.Collision.Detection.Intersection,
8385
Sofa.Component.Collision.Response.Contact
@@ -104,6 +106,10 @@ void TestCollisionPipeline::checkCollisionPipelineWithNoAttributes()
104106
" <BVHNarrowPhase/> \n"
105107
" <CollisionResponse response='PenalityContactForceField'/> \n"
106108
" <DiscreteIntersection name='interaction'/> \n"
109+
" <Node name='Model'/> \n"
110+
" <MechanicalObject template='Vec3' name='Container' position='0 0 0'/> \n"
111+
" <SphereCollisionModel name='SphereModel'/> \n"
112+
" </Node> \n"
107113
"</Node> \n" ;
108114

109115
root = SceneLoaderXML::loadFromMemory ("testscene", scene.str().c_str());
@@ -127,6 +133,10 @@ void TestCollisionPipeline::checkCollisionPipelineWithMissingIntersection()
127133
" <BruteForceBroadPhase/> \n"
128134
" <BVHNarrowPhase/> \n"
129135
" <CollisionResponse response='PenalityContactForceField'/> \n"
136+
" <Node name='Model'/> \n"
137+
" <MechanicalObject template='Vec3' name='Container' position='0 0 0'/> \n"
138+
" <SphereCollisionModel name='SphereModel'/> \n"
139+
" </Node> \n"
130140
"</Node> \n" ;
131141

132142
root = SceneLoaderXML::loadFromMemory ("testscene", scene.str().c_str());
@@ -149,6 +159,10 @@ void TestCollisionPipeline::checkCollisionPipelineWithMissingBroadPhase()
149159
" <BVHNarrowPhase/> \n"
150160
" <CollisionResponse response='PenalityContactForceField'/> \n"
151161
" <DiscreteIntersection name='interaction'/> \n"
162+
" <Node name='Model'/> \n"
163+
" <MechanicalObject template='Vec3' name='Container' position='0 0 0'/> \n"
164+
" <SphereCollisionModel name='SphereModel'/> \n"
165+
" </Node> \n"
152166
"</Node> \n" ;
153167

154168
root = SceneLoaderXML::loadFromMemory ("testscene", scene.str().c_str());
@@ -170,8 +184,12 @@ void TestCollisionPipeline::checkCollisionPipelineWithMissingNarrowPhase()
170184
" <BruteForceBroadPhase/> \n"
171185
" <CollisionResponse response='PenalityContactForceField'/> \n"
172186
" <DiscreteIntersection name='interaction'/> \n"
187+
" <Node name='Model'/> \n"
188+
" <MechanicalObject template='Vec3' name='Container' position='0 0 0'/> \n"
189+
" <SphereCollisionModel name='SphereModel'/> \n"
190+
" </Node> \n"
173191
"</Node> \n" ;
174-
192+
175193
root = SceneLoaderXML::loadFromMemory ("testscene", scene.str().c_str());
176194
ASSERT_NE(root.get(), nullptr) ;
177195
root->init(sofa::core::execparams::defaultInstance()) ;
@@ -191,6 +209,34 @@ void TestCollisionPipeline::checkCollisionPipelineWithMissingContactManager()
191209
" <BruteForceBroadPhase/> \n"
192210
" <BVHNarrowPhase/> \n"
193211
" <DiscreteIntersection name='interaction'/> \n"
212+
" <Node name='Model'/> \n"
213+
" <MechanicalObject template='Vec3' name='Container' position='0 0 0'/> \n"
214+
" <SphereCollisionModel name='SphereModel'/> \n"
215+
" </Node> \n"
216+
"</Node> \n" ;
217+
218+
root = SceneLoaderXML::loadFromMemory ("testscene", scene.str().c_str());
219+
ASSERT_NE(root.get(), nullptr) ;
220+
root->init(sofa::core::execparams::defaultInstance()) ;
221+
222+
BaseObject* clp = root->getObject("pipeline") ;
223+
ASSERT_NE(clp, nullptr) ;
224+
225+
}
226+
227+
void TestCollisionPipeline::checkCollisionPipelineWithMissingCollisionModel()
228+
{
229+
EXPECT_MSG_EMIT(Warning) ;
230+
EXPECT_MSG_NOEMIT(Error) ;
231+
232+
std::stringstream scene ;
233+
scene << "<?xml version='1.0'?> \n"
234+
"<Node name='Root' gravity='0 -9.81 0' time='0' animate='0' > \n"
235+
" <CollisionPipeline name='pipeline'/> \n"
236+
" <BruteForceBroadPhase/> \n"
237+
" <BVHNarrowPhase/> \n"
238+
" <CollisionResponse response='PenalityContactForceField'/> \n"
239+
" <DiscreteIntersection name='interaction'/> \n"
194240
"</Node> \n" ;
195241

196242
root = SceneLoaderXML::loadFromMemory ("testscene", scene.str().c_str());
@@ -212,6 +258,10 @@ int TestCollisionPipeline::checkCollisionPipelineWithMonkeyValueForDepth(int dva
212258
" <BVHNarrowPhase/> \n"
213259
" <CollisionResponse response='PenalityContactForceField'/> \n"
214260
" <DiscreteIntersection name='interaction'/> \n"
261+
" <Node name='Model'/> \n"
262+
" <MechanicalObject template='Vec3' name='Container' position='0 0 0'/> \n"
263+
" <SphereCollisionModel name='SphereModel'/> \n"
264+
" </Node> \n"
215265
"</Node> \n" ;
216266

217267
root = SceneLoaderXML::loadFromMemory ("testscene", scene.str().c_str());
@@ -252,6 +302,12 @@ TEST_F(TestCollisionPipeline, checkCollisionPipelineWithMissingContactManager)
252302
this->checkCollisionPipelineWithMissingContactManager();
253303
}
254304

305+
TEST_F(TestCollisionPipeline, checkCollisionPipelineWithMissingCollisionModel)
306+
{
307+
this->checkCollisionPipelineWithMissingCollisionModel();
308+
}
309+
310+
255311
TEST_F(TestCollisionPipeline, checkCollisionPipelineWithMonkeyValueForDepth_OpenIssue)
256312
{
257313
const std::vector<std::pair<int, bool>> testvalues = {

0 commit comments

Comments
 (0)