Skip to content

Commit

Permalink
hydraulic structure test (creation, mesh and topography)
Browse files Browse the repository at this point in the history
  • Loading branch information
vcloarec committed Aug 31, 2022
1 parent 208b594 commit 4aaa6f2
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 2 deletions.
57 changes: 55 additions & 2 deletions Tests/src/core/reos_hydraulic_structure_2D_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ email : vcloarec at gmail dot com
#include "reospolygonstructure.h"
#include "reosgisengine.h"
#include "reosmapextent.h"
#include "reostopographycollection.h"
#include "reos_testutils.h"

class ReoHydraulicStructure2DTest: public QObject
{
Expand All @@ -28,16 +30,20 @@ class ReoHydraulicStructure2DTest: public QObject
void init();
void createAndEditPolylineStructure();
void createAndEditPolygonStructure();

void createHydraulicStructure();
private:
ReosHydraulicNetwork *mNetwork = nullptr;
ReosModule *mRootModule = nullptr;
ReosGisEngine engine;
ReosGisEngine mGisEngine;

std::unique_ptr<ReosHydraulicStructure2D> mHydraulicStructure;
};

void ReoHydraulicStructure2DTest::init()
{
mRootModule = new ReosModule( this );
mNetwork = new ReosHydraulicNetwork( nullptr, nullptr, nullptr );
mNetwork = new ReosHydraulicNetwork( mRootModule, &mGisEngine, nullptr );
}

void ReoHydraulicStructure2DTest::createAndEditPolylineStructure()
Expand Down Expand Up @@ -379,5 +385,52 @@ void ReoHydraulicStructure2DTest::createAndEditPolygonStructure()

}

void ReoHydraulicStructure2DTest::createHydraulicStructure()
{
QPolygonF domain;
domain << QPointF( 0, 0 )
<< QPointF( 10, 0 )
<< QPointF( 10, 10 )
<< QPointF( 20, 10 )
<< QPointF( 20, 0 )
<< QPointF( 30, 0 )
<< QPointF( 30, 20 )
<< QPointF( 0, 20 );

mHydraulicStructure = std::make_unique<ReosHydraulicStructure2D>( domain, QString(), mNetwork->context() );
mHydraulicStructure->meshResolutionController()->defaultSize()->setValue( 1 );

std::unique_ptr<ReosMeshGeneratorProcess> meshGenerator( mHydraulicStructure->getGenerateMeshProcess() );
meshGenerator->start();
Q_ASSERT( meshGenerator->isSuccessful() );
QCOMPARE( mHydraulicStructure->mesh()->vertexCount(), 714 );

QPolygonF hole;
hole << QPointF( 2.5, 2.5 )
<< QPointF( 7.5, 2.5 )
<< QPointF( 7.5, 7.5 )
<< QPointF( 2.5, 7.5 )
<< QPointF( 2.5, 2.5 );
mHydraulicStructure->geometryStructure()->addPolylines( hole );
mHydraulicStructure->geometryStructure()->addHolePoint( QPointF( 5, 5 ) );

meshGenerator.reset( mHydraulicStructure->getGenerateMeshProcess() );
meshGenerator->start();
QVERIFY( meshGenerator->isSuccessful() );
QCOMPARE( mHydraulicStructure->mesh()->vertexCount(), 687 );

QString demId = mGisEngine.addRasterLayer( test_file( "dem_for_mesh.tif" ).c_str() );
mGisEngine.registerLayerAsDigitalElevationModel( demId );
mHydraulicStructure->topographyCollecion()->insertTopography( 0, demId );

ModuleProcessControler controler( mHydraulicStructure->mesh()->applyTopographyOnVertices( mHydraulicStructure->topographyCollecion() ) );
controler.waitForFinished();

QVERIFY( equal( mHydraulicStructure->terrainElevationAt( QPointF( 15.0, 15.0 ) ), 1, 0.01 ) );
QVERIFY( equal( mHydraulicStructure->terrainElevationAt( QPointF( 10.0, 15.0 ) ), 0.666, 0.01 ) );
QVERIFY( equal( mHydraulicStructure->terrainElevationAt( QPointF( 20.0, 15.0 ) ), 1.333, 0.01 ) );
QVERIFY( std::isnan( mHydraulicStructure->terrainElevationAt( QPointF( 5.0, 5.0 ) ) ) );
QVERIFY( std::isnan( mHydraulicStructure->terrainElevationAt( QPointF( 15.0, 5.0 ) ) ) );
}
QTEST_MAIN( ReoHydraulicStructure2DTest )
#include "reos_hydraulic_structure_2D_test.moc"
Binary file added Tests/testData/dem_for_mesh.tif
Binary file not shown.

0 comments on commit 4aaa6f2

Please sign in to comment.