geom/src/XAO/tests/GeometryTest.cxx
2014-02-18 10:44:41 +04:00

162 lines
5.4 KiB
C++

// Copyright (C) 2013-2014 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
#include <vector>
#include "TestUtils.hxx"
#include "GeometryTest.hxx"
#include "../XAO_XaoUtils.hxx"
#include "../XAO_Geometry.hxx"
#include "../XAO_GeometricElement.hxx"
using namespace XAO;
void GeometryTest::setUp()
{
}
void GeometryTest::tearDown()
{
}
void GeometryTest::cleanUp()
{
}
void GeometryTest::testGeometryElement()
{
GeometricElement elt;
CPPUNIT_ASSERT_EQUAL(false, elt.hasName());
CPPUNIT_ASSERT_EQUAL(std::string(""), elt.getName());
CPPUNIT_ASSERT_EQUAL(std::string(""), elt.getReference());
elt.setName("test");
CPPUNIT_ASSERT_EQUAL(true, elt.hasName());
CPPUNIT_ASSERT_EQUAL(std::string("test"), elt.getName());
elt.setReference("abc");
CPPUNIT_ASSERT_EQUAL(std::string("abc"), elt.getReference());
GeometricElement elt2("aa", "bb");
CPPUNIT_ASSERT_EQUAL(std::string("aa"), elt2.getName());
CPPUNIT_ASSERT_EQUAL(std::string("bb"), elt2.getReference());
}
void GeometryTest::testGeometryElementList()
{
GeometricElementList lst;
CPPUNIT_ASSERT_EQUAL(0, lst.getSize());
lst.setSize(10);
CPPUNIT_ASSERT_EQUAL(10, lst.getSize());
GeometricElementList otherLst(15);
CPPUNIT_ASSERT_EQUAL(15, otherLst.getSize());
CPPUNIT_ASSERT_EQUAL(std::string(""), otherLst.getName(0));
CPPUNIT_ASSERT_EQUAL(std::string(""), otherLst.getReference(0));
CPPUNIT_ASSERT_THROW(otherLst.getName(20), XAO_Exception);
CPPUNIT_ASSERT_THROW(otherLst.getReference(20), XAO_Exception);
CPPUNIT_ASSERT_THROW(otherLst.hasName(20), XAO_Exception);
otherLst.setName(0, "aa");
CPPUNIT_ASSERT_EQUAL(std::string("aa"), otherLst.getName(0));
CPPUNIT_ASSERT_THROW(otherLst.setName(20, "aa"), XAO_Exception);
otherLst.setReference(0, "bb");
CPPUNIT_ASSERT_EQUAL(std::string("bb"), otherLst.getReference(0));
CPPUNIT_ASSERT_THROW(otherLst.setReference(20, "aa"), XAO_Exception);
otherLst.setSize(10);
CPPUNIT_ASSERT_EQUAL(std::string(""), otherLst.getName(0));
CPPUNIT_ASSERT_EQUAL(std::string(""), otherLst.getReference(0));
CPPUNIT_ASSERT_EQUAL(false, otherLst.hasName(0));
otherLst.setElement(3, "name", "ref");
CPPUNIT_ASSERT_EQUAL(std::string("name"), otherLst.getName(3));
CPPUNIT_ASSERT_EQUAL(std::string("ref"), otherLst.getReference(3));
CPPUNIT_ASSERT_EQUAL(true, otherLst.hasName(3));
CPPUNIT_ASSERT_THROW(otherLst.setElement(30, "name", "ref"), XAO_Exception);
// ---- create elements "name i", "Ri"
for (int i = 0; i < otherLst.getSize(); ++i)
{
std::ostringstream name;
name << "name " << i;
std::ostringstream ref;
ref << "R" << i;
otherLst.setElement(i, name.str(), ref.str());
}
CPPUNIT_ASSERT_EQUAL(8, otherLst.getIndexByReference("R8"));
CPPUNIT_ASSERT_THROW(otherLst.getIndexByReference("ZZ"), XAO_Exception);
GeometricElementList::iterator first = otherLst.begin();
GeometricElement firstElt = first->second;
CPPUNIT_ASSERT_EQUAL(std::string("R0"), firstElt.getReference());
}
void GeometryTest::testGeometry()
{
Geometry* geom = Geometry::createGeometry(XAO::BREP, "cube");
CPPUNIT_ASSERT_EQUAL(std::string("cube"), geom->getName());
CPPUNIT_ASSERT_EQUAL(XAO::BREP, geom->getFormat());
geom->setName("sphere");
CPPUNIT_ASSERT_EQUAL(std::string("sphere"), geom->getName());
delete geom;
}
void GeometryTest::testGeometryErrors()
{
CPPUNIT_ASSERT_THROW(Geometry::createGeometry(XAO::STEP), XAO_Exception);
}
void GeometryTest::testSetElement()
{
Geometry* geom = Geometry::createGeometry(XAO::BREP, "cube");
CPPUNIT_ASSERT_THROW(geom->setVertexName(0, "aa"), XAO_Exception);
char* txt = TestUtils::readTextFile(TestUtils::getTestFilePath("Box_1.brep"));
geom->setShapeString(txt);
CPPUNIT_ASSERT_EQUAL(false, geom->hasVertexName(0));
geom->setVertexName(0, "va");
CPPUNIT_ASSERT_EQUAL(true, geom->hasVertexName(0));
CPPUNIT_ASSERT_EQUAL(std::string("va"), geom->getVertexName(0));
CPPUNIT_ASSERT_THROW(geom->getVertexName(100), XAO_Exception);
CPPUNIT_ASSERT_THROW(geom->hasVertexName(100), XAO_Exception);
geom->setEdgeName(0, "ea");
CPPUNIT_ASSERT_EQUAL(std::string("ea"), geom->getEdgeName(0));
CPPUNIT_ASSERT_THROW(geom->getEdgeName(100), XAO_Exception);
geom->setFaceName(0, "fa");
CPPUNIT_ASSERT_EQUAL(std::string("fa"), geom->getFaceName(0));
CPPUNIT_ASSERT_THROW(geom->getFaceName(100), XAO_Exception);
geom->setSolidName(0, "sa");
CPPUNIT_ASSERT_EQUAL(std::string("sa"), geom->getSolidName(0));
CPPUNIT_ASSERT_THROW(geom->getSolidName(100), XAO_Exception);
delete geom;
}