-
Notifications
You must be signed in to change notification settings - Fork 48
/
test_gdal_grib.cpp
107 lines (78 loc) · 2.67 KB
/
test_gdal_grib.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
MDAL - Mesh Data Abstraction Library (MIT License)
Copyright (C) 2018 Peter Petrik (zilolv at gmail dot com)
*/
#include "gtest/gtest.h"
#include <string>
//mdal
#include "mdal.h"
#include "mdal_testutils.hpp"
TEST( MeshGdalGribTest, ScalarFile )
{
std::string path = test_file( "/grib/Madagascar.wave.7days.grb" );
MeshH m = MDAL_LoadMesh( path.c_str() );
ASSERT_NE( m, nullptr );
MDAL_Status s = MDAL_LastStatus();
EXPECT_EQ( MDAL_Status::None, s );
ASSERT_EQ( 3, MDAL_M_datasetGroupCount( m ) );
DatasetGroupH g = MDAL_M_datasetGroup( m, 1 );
ASSERT_NE( g, nullptr );
int meta_count = MDAL_G_metadataCount( g );
ASSERT_EQ( 1, meta_count );
const char *name = MDAL_G_name( g );
EXPECT_EQ( std::string( "Primary wave mean period [s]" ), std::string( name ) );
bool scalar = MDAL_G_hasScalarData( g );
EXPECT_EQ( true, scalar );
bool onVertices = MDAL_G_isOnVertices( g );
EXPECT_EQ( true, onVertices );
ASSERT_EQ( 27, MDAL_G_datasetCount( g ) );
DatasetH ds = MDAL_G_dataset( g, 0 );
ASSERT_NE( ds, nullptr );
bool valid = MDAL_D_isValid( ds );
EXPECT_EQ( true, valid );
bool active = MDAL_D_active( ds, 0 );
EXPECT_EQ( false, active );
int count = MDAL_D_valueCount( ds );
ASSERT_EQ( 1683, count );
double value = MDAL_D_value( ds, 1600 );
EXPECT_DOUBLE_EQ( 15.34, value );
MDAL_CloseMesh( m );
}
TEST( MeshGdalGribTest, VectorFile )
{
std::string path = test_file( "/grib/Madagascar.wind.7days.grb" );
MeshH m = MDAL_LoadMesh( path.c_str() );
ASSERT_NE( m, nullptr );
MDAL_Status s = MDAL_LastStatus();
EXPECT_EQ( MDAL_Status::None, s );
ASSERT_EQ( 1, MDAL_M_datasetGroupCount( m ) );
DatasetGroupH g = MDAL_M_datasetGroup( m, 0 );
ASSERT_NE( g, nullptr );
int meta_count = MDAL_G_metadataCount( g );
ASSERT_EQ( 1, meta_count );
const char *name = MDAL_G_name( g );
EXPECT_EQ( std::string( "wind [m/s]" ), std::string( name ) );
bool scalar = MDAL_G_hasScalarData( g );
EXPECT_EQ( false, scalar );
bool onVertices = MDAL_G_isOnVertices( g );
EXPECT_EQ( true, onVertices );
ASSERT_EQ( 27, MDAL_G_datasetCount( g ) );
DatasetH ds = MDAL_G_dataset( g, 15 );
ASSERT_NE( ds, nullptr );
bool valid = MDAL_D_isValid( ds );
EXPECT_EQ( true, valid );
bool active = MDAL_D_active( ds, 0 );
EXPECT_EQ( false, active );
int count = MDAL_D_valueCount( ds );
ASSERT_EQ( 1683, count );
double valueX = MDAL_D_valueX( ds, 1600 );
EXPECT_DOUBLE_EQ( -5.9000000000000004, valueX );
double valueY = MDAL_D_valueY( ds, 1600 );
EXPECT_DOUBLE_EQ( 2.8200097656250001, valueY );
MDAL_CloseMesh( m );
}
int main( int argc, char **argv )
{
testing::InitGoogleTest( &argc, argv );
return RUN_ALL_TESTS();
}