mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-29 19:00:36 +05:00
229 lines
8.7 KiB
C++
229 lines
8.7 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
|
|
//
|
|
// Author : Frederic Pons (OpenCascade)
|
|
|
|
#include "TestUtils.hxx"
|
|
#include "ImportExportTest.hxx"
|
|
#include "../XAO_XaoUtils.hxx"
|
|
#include "../XAO_Geometry.hxx"
|
|
#include "../XAO_Group.hxx"
|
|
#include "../XAO_Field.hxx"
|
|
#include "../XAO_IntegerField.hxx"
|
|
#include "../XAO_IntegerStep.hxx"
|
|
|
|
using namespace XAO;
|
|
|
|
|
|
void ImportExportTest::setUp()
|
|
{
|
|
}
|
|
|
|
void ImportExportTest::tearDown()
|
|
{
|
|
}
|
|
|
|
void ImportExportTest::cleanUp()
|
|
{
|
|
}
|
|
|
|
void ImportExportTest::testExportNoGeometry()
|
|
{
|
|
Xao xao("me", "1.0");
|
|
|
|
bool res = xao.exportXAO("empty.xao");
|
|
CPPUNIT_ASSERT(res);
|
|
}
|
|
|
|
void ImportExportTest::testExportGeometry()
|
|
{
|
|
Xao xao("me", "1.0");
|
|
Geometry* geom = Geometry::createGeometry(XAO::BREP);
|
|
geom->setName("mygeom");
|
|
CPPUNIT_ASSERT_EQUAL(false, geom->isReadOnly());
|
|
|
|
// add elements
|
|
geom->setCountVertices(4);
|
|
geom->setVertex(0, "v1", "1");
|
|
geom->setVertex(1, "", "2");
|
|
geom->setVertex(2, "v3", "3");
|
|
geom->setVertex(3, "", "4");
|
|
|
|
geom->setCountEdges(3);
|
|
geom->setEdge(0, "e1", "5");
|
|
geom->setEdge(1, "", "6");
|
|
geom->setEdge(2, "e3", "7");
|
|
|
|
geom->setCountFaces(2);
|
|
geom->setFace(0, "f1", "8");
|
|
geom->setFace(1, "", "9");
|
|
|
|
geom->setCountSolids(1);
|
|
geom->setSolid(0, "s1", "10");
|
|
|
|
xao.setGeometry(geom);
|
|
CPPUNIT_ASSERT_EQUAL(true, geom->isReadOnly());
|
|
|
|
// groups
|
|
Group* group = xao.addGroup(XAO::SOLID);
|
|
group->setName("boite1");
|
|
group->add(0);
|
|
|
|
group = xao.addGroup(XAO::FACE);
|
|
group->setName("faces");
|
|
group->add(0);
|
|
group->add(1);
|
|
|
|
// fields
|
|
IntegerField* field = (IntegerField*)xao.addField(XAO::INTEGER, XAO::FACE, 2, "color");
|
|
for (int stepIndex = 0; stepIndex < 10; ++stepIndex)
|
|
{
|
|
IntegerStep* istep = field->addStep(stepIndex, 100*stepIndex);
|
|
for (int eltIndex = 0; eltIndex < istep->countElements(); ++eltIndex)
|
|
{
|
|
for (int compIndex = 0; compIndex < istep->countComponents(); ++compIndex)
|
|
{
|
|
istep->setValue(eltIndex, compIndex, istep->getStamp() + eltIndex*10 + compIndex);
|
|
}
|
|
}
|
|
}
|
|
|
|
bool res = xao.exportXAO("mygeom.xao");
|
|
CPPUNIT_ASSERT(res);
|
|
|
|
std::string xml = xao.getXML();
|
|
//CPPUNIT_ASSERT_EQUAL(strlen(xml) == 1007);
|
|
}
|
|
|
|
void ImportExportTest::testGeometryError()
|
|
{
|
|
Geometry* geom = Geometry::createGeometry(XAO::BREP);
|
|
geom->setName("mygeom");
|
|
geom->setCountVertices(2);
|
|
CPPUNIT_ASSERT_THROW(geom->setVertex(3, "v4", "4"), XAO_Exception);
|
|
delete geom;
|
|
}
|
|
|
|
void ImportExportTest::testImportXao()
|
|
{
|
|
Xao xao;
|
|
xao.importXAO(TestUtils::getTestFilePath("test.xao"));
|
|
checkImport(xao);
|
|
}
|
|
|
|
void ImportExportTest::testImportXaoFromText()
|
|
{
|
|
char* txt = TestUtils::readTextFile(TestUtils::getTestFilePath("test.xao"));
|
|
|
|
Xao xao;
|
|
xao.setXML(txt);
|
|
checkImport(xao);
|
|
}
|
|
|
|
void ImportExportTest::checkImport(Xao& xao)
|
|
{
|
|
CPPUNIT_ASSERT_EQUAL(std::string("me"), xao.getAuthor());
|
|
CPPUNIT_ASSERT_EQUAL(std::string("1.0"), xao.getVersion());
|
|
|
|
Geometry* geom = xao.getGeometry();
|
|
CPPUNIT_ASSERT(geom != NULL);
|
|
CPPUNIT_ASSERT_EQUAL(std::string("mygeom"), geom->getName());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(8, geom->countVertices());
|
|
CPPUNIT_ASSERT_EQUAL(std::string("v1"), geom->getVertexName(0));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("6"), geom->getVertexReference(0));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getVertexName(1));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("7"), geom->getVertexReference(1));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("v3"), geom->getVertexName(2));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("9"), geom->getVertexReference(2));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getVertexName(3));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("11"), geom->getVertexReference(3));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("v5"), geom->getVertexName(4));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("16"), geom->getVertexReference(4));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getVertexName(5));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("17"), geom->getVertexReference(5));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("v7"), geom->getVertexName(6));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("19"), geom->getVertexReference(6));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getVertexName(7));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("21"), geom->getVertexReference(7));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(12, geom->countEdges());
|
|
CPPUNIT_ASSERT_EQUAL(std::string("e1"), geom->getEdgeName(0));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("5"), geom->getEdgeReference(0));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getEdgeName(1));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("8"), geom->getEdgeReference(1));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("e3"), geom->getEdgeName(2));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("10"), geom->getEdgeReference(2));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getEdgeName(3));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("12"), geom->getEdgeReference(3));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("e5"), geom->getEdgeName(4));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("15"), geom->getEdgeReference(4));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getEdgeName(5));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("18"), geom->getEdgeReference(5));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("e7"), geom->getEdgeName(6));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("20"), geom->getEdgeReference(6));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getEdgeName(7));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("22"), geom->getEdgeReference(7));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("e9"), geom->getEdgeName(8));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("25"), geom->getEdgeReference(8));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getEdgeName(9));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("26"), geom->getEdgeReference(9));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("e11"), geom->getEdgeName(10));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("29"), geom->getEdgeReference(10));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getEdgeName(11));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("30"), geom->getEdgeReference(11));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(6, geom->countFaces());
|
|
CPPUNIT_ASSERT_EQUAL(std::string("f1"), geom->getFaceName(0));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("3"), geom->getFaceReference(0));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getFaceName(1));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("13"), geom->getFaceReference(1));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("f3"), geom->getFaceName(2));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("23"), geom->getFaceReference(2));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getFaceName(3));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("27"), geom->getFaceReference(3));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("f5"), geom->getFaceName(4));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("31"), geom->getFaceReference(4));
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), geom->getFaceName(5));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("33"), geom->getFaceReference(5));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, geom->countSolids());
|
|
CPPUNIT_ASSERT_EQUAL(std::string("s1"), geom->getSolidName(0));
|
|
CPPUNIT_ASSERT_EQUAL(std::string("1"), geom->getSolidReference(0));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(2, xao.countGroups());
|
|
Group* group = xao.getGroup(0);
|
|
CPPUNIT_ASSERT_EQUAL(1, group->count());
|
|
CPPUNIT_ASSERT_EQUAL(std::string("boite_1"), group->getName());
|
|
CPPUNIT_ASSERT_EQUAL(XAO::SOLID, group->getDimension());
|
|
CPPUNIT_ASSERT_EQUAL(0, group->get(0));
|
|
group = xao.getGroup(1);
|
|
CPPUNIT_ASSERT_EQUAL(2, group->count());
|
|
CPPUNIT_ASSERT_EQUAL(std::string(""), group->getName());
|
|
CPPUNIT_ASSERT_EQUAL(XAO::FACE, group->getDimension());
|
|
CPPUNIT_ASSERT_EQUAL(0, group->get(0));
|
|
CPPUNIT_ASSERT_EQUAL(1, group->get(1));
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, xao.countFields());
|
|
Field* field= xao.getField(0);
|
|
CPPUNIT_ASSERT_EQUAL(std::string("color"), field->getName());
|
|
CPPUNIT_ASSERT_EQUAL(XAO::INTEGER, field->getType());
|
|
CPPUNIT_ASSERT_EQUAL(XAO::SOLID, field->getDimension());
|
|
|
|
}
|