Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F120693561
QhullFacetList_test.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, Jul 6, 09:09
Size
5 KB
Mime Type
text/x-c
Expires
Tue, Jul 8, 09:09 (2 d)
Engine
blob
Format
Raw Data
Handle
27231444
Attached To
rCADDMESH CADD_mesher
QhullFacetList_test.cpp
View Options
/****************************************************************************
**
** Copyright (c) 2008-2015 C.B. Barber. All rights reserved.
** $Id: //main/2015/qhull/src/qhulltest/QhullFacetList_test.cpp#3 $$Change: 2062 $
** $DateTime: 2016/01/17 13:13:18 $$Author: bbarber $
**
****************************************************************************/
//pre-compiled headers
#include <iostream>
#include "qhulltest/RoadTest.h" // QT_VERSION
#include "libqhullcpp/QhullFacetList.h"
#include "libqhullcpp/QhullError.h"
#include "libqhullcpp/QhullFacet.h"
#include "libqhullcpp/QhullVertex.h"
#include "libqhullcpp/QhullVertexSet.h"
#include "libqhullcpp/Qhull.h"
#include "libqhullcpp/RboxPoints.h"
using std::cout;
using std::endl;
using std::ostringstream;
using std::ostream;
using std::string;
namespace orgQhull {
class QhullFacetList_test : public RoadTest
{
Q_OBJECT
#//!\name Test slots
private slots:
void cleanup();
void t_construct_qh();
void t_construct_q();
void t_convert();
void t_readonly();
void t_foreach();
void t_io();
};//QhullFacetList_test
void
add_QhullFacetList_test()
{
new QhullFacetList_test(); // RoadTest::s_testcases
}
//Executed after each testcase
void QhullFacetList_test::
cleanup()
{
RoadTest::cleanup();
}
void QhullFacetList_test::
t_construct_qh()
{
RboxPoints rcube("c");
Qhull q(rcube,"QR0"); // rotated unit cube
QhullFacetList fs2= q.facetList();
QVERIFY(!fs2.isEmpty());
QCOMPARE(fs2.count(),6);
QhullFacetList fs3(q.endFacet(), q.endFacet());
QVERIFY(fs3.isEmpty());
QhullFacetList fs4(q.endFacet().previous(), q.endFacet());
QCOMPARE(fs4.count(), 1);
QhullFacetList fs5(q.beginFacet(), q.endFacet());
QCOMPARE(fs2.count(), fs5.count());
QVERIFY(fs2==fs5);
QhullFacetList fs6= fs2; // copy constructor
QVERIFY(fs6==fs2);
std::vector<QhullFacet> fv= fs2.toStdVector();
QCOMPARE(fv.size(), 6u);
}//t_construct_qh
void QhullFacetList_test::
t_construct_q()
{
RboxPoints rcube("c");
Qhull q(rcube,"QR0"); // rotated unit cube
QhullFacetList fs2= q.facetList();
QVERIFY(!fs2.isEmpty());
QCOMPARE(fs2.count(),6);
QhullFacetList fs3(q.endFacet(), q.endFacet());
QVERIFY(fs3.isEmpty());
QhullFacetList fs4(q.endFacet().previous(), q.endFacet());
QCOMPARE(fs4.count(), 1);
QhullFacetList fs5(q.beginFacet(), q.endFacet());
QCOMPARE(fs2.count(), fs5.count());
QVERIFY(fs2==fs5);
QhullFacetList fs6= fs2; // copy constructor
QVERIFY(fs6==fs2);
std::vector<QhullFacet> fv= fs2.toStdVector();
QCOMPARE(fv.size(), 6u);
}//t_construct_q
void QhullFacetList_test::
t_convert()
{
RboxPoints rcube("c");
Qhull q(rcube,"QR0 QV2"); // rotated unit cube
QhullFacetList fs2= q.facetList();
QVERIFY(!fs2.isSelectAll());
QVERIFY(!fs2.isEmpty());
QCOMPARE(fs2.count(),3);
std::vector<QhullFacet> fv= fs2.toStdVector();
QCOMPARE(fv.size(), 3u);
QList<QhullFacet> fv2= fs2.toQList();
QCOMPARE(fv2.size(), 3);
std::vector<QhullVertex> fv5= fs2.vertices_toStdVector();
QCOMPARE(fv5.size(), 7u);
QList<QhullVertex> fv6= fs2.vertices_toQList();
QCOMPARE(fv6.size(), 7);
fs2.selectAll();
QVERIFY(fs2.isSelectAll());
std::vector<QhullFacet> fv3= fs2.toStdVector();
QCOMPARE(fv3.size(), 6u);
QList<QhullFacet> fv4= fs2.toQList();
QCOMPARE(fv4.size(), 6);
std::vector<QhullVertex> fv7= fs2.vertices_toStdVector();
QCOMPARE(fv7.size(), 8u);
QList<QhullVertex> fv8= fs2.vertices_toQList();
QCOMPARE(fv8.size(), 8);
}//t_convert
//! Spot check properties and read-only. See QhullLinkedList_test
void QhullFacetList_test::
t_readonly()
{
RboxPoints rcube("c");
Qhull q(rcube,"QV0"); // good facets are adjacent to point 0
QhullFacetList fs= q.facetList();
QVERIFY(!fs.isSelectAll());
QCOMPARE(fs.count(), 3);
QCOMPARE(fs.first(), q.firstFacet());
fs.selectAll();
QVERIFY(fs.isSelectAll());
QCOMPARE(fs.count(), 6);
fs.selectGood();
QVERIFY(!fs.isSelectAll());
QCOMPARE(fs.count(), 3);
fs.selectAll();
QVERIFY(fs.isSelectAll());
QCOMPARE(fs.count(), 6);
QhullFacet f= fs.first();
QhullFacet f2= fs.last();
fs.selectAll();
QVERIFY(fs.contains(f));
QVERIFY(fs.contains(f2));
QVERIFY(f.isGood());
QVERIFY(!f2.isGood());
fs.selectGood();
QVERIFY(fs.contains(f));
QVERIFY(!fs.contains(f2));
}//t_readonly
void QhullFacetList_test::
t_foreach()
{
RboxPoints rcube("c");
// Spot check predicates and accessors. See QhullLinkedList_test
Qhull q(rcube,"Qt QR0"); // triangulation of rotated unit cube
QhullFacetList fs= q.facetList();
QVERIFY(fs.contains(q.firstFacet()));
QhullFacet f= q.firstFacet().next();
QVERIFY(fs.contains(f));
QCOMPARE(fs.first(), *fs.begin());
QCOMPARE(*(fs.end()-1), fs.last());
QCOMPARE(fs.first(), q.firstFacet());
QCOMPARE(*fs.begin(), q.beginFacet());
QCOMPARE(*fs.end(), q.endFacet());
}//t_foreach
void QhullFacetList_test::
t_io()
{
RboxPoints rcube("c");
{
Qhull q(rcube,"QR0 QV0"); // good facets are adjacent to point 0
QhullFacetList fs= q.facetList();
ostringstream os;
os << fs.print("Show all of FacetList\n");
os << "\nFacets only\n" << fs;
os << "\nVertices only\n" << fs.printVertices();
cout << os.str();
QString facets= QString::fromStdString(os.str());
QCOMPARE(facets.count("(v"), 2*7+12*3*2);
QCOMPARE(facets.count(QRegExp("f\\d")), 2*3*7 + 13*3*2);
}
}//t_io
}//orgQhull
#include "moc/QhullFacetList_test.moc"
Event Timeline
Log In to Comment