Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'xs/src/qhull/src/qhulltest/QhullFacetList_test.cpp')
-rw-r--r--xs/src/qhull/src/qhulltest/QhullFacetList_test.cpp196
1 files changed, 196 insertions, 0 deletions
diff --git a/xs/src/qhull/src/qhulltest/QhullFacetList_test.cpp b/xs/src/qhull/src/qhulltest/QhullFacetList_test.cpp
new file mode 100644
index 000000000..5a09d01da
--- /dev/null
+++ b/xs/src/qhull/src/qhulltest/QhullFacetList_test.cpp
@@ -0,0 +1,196 @@
+/****************************************************************************
+**
+** 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"