Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Analysis.AlgorithmBehavior/qhull-2012.1/src/qhulltest/QhullFacetSet_test.cpp @ 10207

Last change on this file since 10207 was 10207, checked in by ascheibe, 10 years ago

#1886 added a unit test for volume calculation and the qhull library

File size: 4.1 KB
Line 
1/****************************************************************************
2**
3** Copyright (c) 2008-2012 C.B. Barber. All rights reserved.
4** $Id: //main/2011/qhull/src/qhulltest/QhullFacetSet_test.cpp#4 $$Change: 1490 $
5** $DateTime: 2012/02/19 20:27:01 $$Author: bbarber $
6**
7****************************************************************************/
8
9//pre-compiled headers
10#include <iostream>
11#include "RoadTest.h"
12
13#include "QhullFacetSet.h"
14#include "QhullError.h"
15#include "QhullFacet.h"
16#include "Qhull.h"
17
18using std::cout;
19using std::endl;
20using std::ostringstream;
21using std::ostream;
22using std::string;
23
24namespace orgQhull {
25
26class QhullFacetSet_test : public RoadTest
27{
28    Q_OBJECT
29
30#//Test slots
31private slots:
32    void cleanup();
33    void t_construct();
34    void t_convert();
35    void t_readonly();
36    void t_foreach();
37    void t_io();
38};//QhullFacetSet_test
39
40void
41add_QhullFacetSet_test()
42{
43    new QhullFacetSet_test();
44}
45
46//Executed after each testcase
47void QhullFacetSet_test::
48cleanup()
49{
50    RoadTest::cleanup();
51    UsingLibQhull::checkQhullMemoryEmpty();
52}
53
54void QhullFacetSet_test::
55t_construct()
56{
57    RboxPoints rcube("c");
58    Qhull q(rcube,"QR0");  // rotated unit cube
59    QhullFacet f= q.firstFacet();
60    QhullFacetSet fs2= f.neighborFacets();
61    QVERIFY(!fs2.isEmpty());
62    QCOMPARE(fs2.count(),4);
63    QhullFacetSet fs4= fs2; // copy constructor
64    QVERIFY(fs4==fs2);
65    QhullFacetSet fs3(q.qhullQh()->facet_mergeset);
66    QVERIFY(fs3.isEmpty());
67}//t_construct
68
69void QhullFacetSet_test::
70t_convert()
71{
72    RboxPoints rcube("c");
73    Qhull q2(rcube,"QR0 QV2");  // rotated unit cube
74    QhullFacet f2= q2.firstFacet();
75    QhullFacetSet fs2= f2.neighborFacets();
76    QVERIFY(!fs2.isSelectAll());
77    QCOMPARE(fs2.count(),2);
78    std::vector<QhullFacet> fv= fs2.toStdVector();
79    QCOMPARE(fv.size(), 2u);
80    QList<QhullFacet> fv2= fs2.toQList();
81    QCOMPARE(fv2.size(), 2);
82    fs2.selectAll();
83    QVERIFY(fs2.isSelectAll());
84    std::vector<QhullFacet> fv3= fs2.toStdVector();
85    QCOMPARE(fv3.size(), 4u);
86    QList<QhullFacet> fv4= fs2.toQList();
87    QCOMPARE(fv4.size(), 4);
88}//t_convert
89
90//! Spot check properties and read-only.  See QhullSet_test
91void QhullFacetSet_test::
92t_readonly()
93{
94    RboxPoints rcube("c");
95    Qhull q(rcube,"QV0");  // good facets are adjacent to point 0
96    QhullFacetSet fs= q.firstFacet().neighborFacets();
97    QVERIFY(!fs.isSelectAll());
98    QCOMPARE(fs.count(), 2);
99    fs.selectAll();
100    QVERIFY(fs.isSelectAll());
101    QCOMPARE(fs.count(), 4);
102    fs.selectGood();
103    QVERIFY(!fs.isSelectAll());
104    QCOMPARE(fs.count(), 2);
105    QhullFacet f= fs.first();
106    QhullFacet f2= fs.last();
107    fs.selectAll();
108    QVERIFY(fs.contains(f));
109    QVERIFY(fs.contains(f2));
110    QVERIFY(f.isGood());
111    QVERIFY(!f2.isGood());
112    fs.selectGood();
113    QVERIFY(fs.contains(f));
114    QVERIFY(!fs.contains(f2));
115}//t_readonly
116
117void QhullFacetSet_test::
118t_foreach()
119{
120    RboxPoints rcube("c");
121    // Spot check predicates and accessors.  See QhullLinkedList_test
122    Qhull q(rcube,"QR0");  // rotated unit cube
123    QhullFacetSet fs= q.firstFacet().neighborFacets();
124    QVERIFY(!fs.contains(q.firstFacet()));
125    QVERIFY(fs.contains(fs.first()));
126    QhullFacet f= q.firstFacet().next();
127    if(!fs.contains(f)){
128        f= f.next();
129    }
130    QVERIFY(fs.contains(f));
131    QCOMPARE(fs.first(), *fs.begin());
132    QCOMPARE(*(fs.end()-1), fs.last());
133}//t_foreach
134
135void QhullFacetSet_test::
136t_io()
137{
138    RboxPoints rcube("c");
139    {
140        Qhull q(rcube,"QR0 QV0");   // good facets are adjacent to point 0
141        QhullFacetSet fs= q.firstFacet().neighborFacets();
142        ostringstream os;
143        os << fs.print(q.runId(), "Neighbors of first facet with point 0");
144        os << fs.printIdentifiers("\nFacet identifiers: ");
145        cout << os.str();
146        QString facets= QString::fromStdString(os.str());
147        QCOMPARE(facets.count(QRegExp(" f[0-9]")), 2+13*2);
148    }
149}//t_io
150
151}//orgQhull
152
153#include "moc/QhullFacetSet_test.moc"
Note: See TracBrowser for help on using the repository browser.