1 // Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 * Check all methods of SALOMEDS_SObject
25 * Use code of SALOMEDS_SObject.cxx
28 void SALOMEDSTest::testSObject()
30 //Create or find the Study manager
31 _PTR(StudyManager) sm ( new SALOMEDS_StudyManager(_sm) );
36 _PTR(Study) study = sm->NewStudy("TestSObject");
38 CPPUNIT_ASSERT(study);
40 //Create Study Builder
41 _PTR(StudyBuilder) studyBuilder = study->NewBuilder();
43 CPPUNIT_ASSERT(studyBuilder);
45 //Create a new SComponent
46 _PTR(SComponent) sco = studyBuilder->NewComponent("Test");
49 _PTR(SObject) so = studyBuilder->NewObjectToTag(sco, 2);
51 //Check the creation of the SObject
55 CPPUNIT_ASSERT(so->GetID() == "0:1:1:2");
58 CPPUNIT_ASSERT(so->Tag() == 2);
60 //Check method GetFatherComponent
61 _PTR(SComponent) father = so->GetFatherComponent();
62 CPPUNIT_ASSERT(father->GetID() == sco->GetID());
64 //Check method GetFather
65 _PTR(SObject) so1 = studyBuilder->NewObject(so);
66 CPPUNIT_ASSERT(so1->GetFather()->GetID() == so->GetID());
68 //Check method FindAttribute
70 _PTR(AttributeIOR) _attrIOR = studyBuilder->FindOrCreateAttribute(so, "AttributeIOR");
71 _PTR(AttributeName) _attrName = studyBuilder->FindOrCreateAttribute(so, "AttributeName");
72 _PTR(AttributeComment) _attrComment = studyBuilder->FindOrCreateAttribute(so, "AttributeComment");
74 std::string ior = _orb->object_to_string(_sm);
75 _attrIOR->SetValue(ior);
76 _attrName->SetValue("SO name");
77 _attrComment->SetValue("SO comment");
79 _PTR(GenericAttribute) ga;
80 CPPUNIT_ASSERT(so->FindAttribute(ga, "AttributeIOR"));
82 //Try to find attribute with empty type
83 CPPUNIT_ASSERT(!so->FindAttribute(ga, ""));
85 //Check method ReferencedObject
86 studyBuilder->Addreference(so1, so);
88 CPPUNIT_ASSERT(so1->ReferencedObject(so2));
89 CPPUNIT_ASSERT(so2->GetID() == so->GetID());
91 //Check method FindSubObject
92 CPPUNIT_ASSERT(so->FindSubObject(1, so2));
93 CPPUNIT_ASSERT(so2->GetID() == so1->GetID());
95 //Check method GetStudy
96 CPPUNIT_ASSERT(so->GetStudy()->StudyId() == study->StudyId());
100 CPPUNIT_ASSERT(so->Name() == "test");
102 //Check method GetAllAttributes
103 std::vector< _PTR(GenericAttribute) > v = so->GetAllAttributes();
105 CPPUNIT_ASSERT(v.size() == 5); //+AttributeTarget +AttributeTreeNode
107 //Check method GetName
108 CPPUNIT_ASSERT(so->GetName() == "SO name");
110 //Check method GetComment
111 CPPUNIT_ASSERT(so->GetComment() == "SO comment");
113 //Check method GetIOR
114 CPPUNIT_ASSERT(so->GetIOR() == ior);
117 CPPUNIT_ASSERT(so->Depth() == 3);
119 //Check method GetObject
120 CORBA::Object_var obj = dynamic_cast<SALOMEDS_SObject*>(so.get())->GetObject();
121 CPPUNIT_ASSERT(!CORBA::is_nil(obj));