Branch data Line data Source code
1 : : #include "iGeom.h"
2 : : #include "iMesh.h"
3 : : #include "iRel.h"
4 : :
5 : : #include "TestUtil.hpp"
6 : :
7 : : #include <cstdlib>
8 : :
9 : : using namespace moab;
10 : : iGeom_Instance geom;
11 : : iMesh_Instance mesh;
12 : : iRel_Instance rel;
13 : :
14 : : iBase_EntityHandle geom_ent;
15 : : iBase_EntityHandle mesh_ents[4];
16 : : iBase_EntitySetHandle mesh_set;
17 : :
18 : 1 : void test_both()
19 : : {
20 : : int err;
21 : : iRel_PairHandle pair;
22 : :
23 : : iRel_createPair( rel, geom, iRel_ENTITY, iRel_IGEOM_IFACE, iRel_ACTIVE, mesh, iRel_BOTH, iRel_IMESH_IFACE,
24 [ + - ][ + - ]: 1 : iRel_ACTIVE, &pair, &err );CHECK_ERR( err );
25 : :
26 [ + - ][ + - ]: 1 : iRel_setEntSetRelation( rel, pair, geom_ent, mesh_set, &err );CHECK_ERR( err );
27 : :
28 : 1 : iBase_EntityHandle* related_ents = NULL;
29 : 1 : int related_ents_alloc = 0, related_ents_size;
30 : : iRel_getEntArrEntArrRelation( rel, pair, mesh_ents, 4, 1, &related_ents, &related_ents_alloc, &related_ents_size,
31 [ + - ][ + - ]: 1 : &err );CHECK_ERR( err );
32 : :
33 [ + + ]: 5 : for( int i = 0; i < related_ents_size; i++ )
34 [ + - ]: 4 : CHECK_EQUAL( related_ents[i], geom_ent );
35 : :
36 : 1 : free( related_ents );
37 : 1 : }
38 : :
39 : 1 : void test_change_to_both()
40 : : {
41 : : int err;
42 : : iRel_PairHandle pair;
43 : :
44 : : iRel_createPair( rel, geom, iRel_ENTITY, iRel_IGEOM_IFACE, iRel_ACTIVE, mesh, iRel_SET, iRel_IMESH_IFACE,
45 [ + - ][ + - ]: 1 : iRel_ACTIVE, &pair, &err );CHECK_ERR( err );
46 : :
47 [ + - ][ + - ]: 1 : iRel_setEntSetRelation( rel, pair, geom_ent, mesh_set, &err );CHECK_ERR( err );
48 : :
49 [ + - ][ + - ]: 1 : iRel_changePairType( rel, pair, iRel_ENTITY, iRel_BOTH, &err );CHECK_ERR( err );
50 : :
51 : 1 : iBase_EntityHandle* related_ents = NULL;
52 : 1 : int related_ents_alloc = 0, related_ents_size;
53 : : iRel_getEntArrEntArrRelation( rel, pair, mesh_ents, 4, 1, &related_ents, &related_ents_alloc, &related_ents_size,
54 [ + - ][ + - ]: 1 : &err );CHECK_ERR( err );
55 : :
56 [ + + ]: 5 : for( int i = 0; i < related_ents_size; i++ )
57 [ + - ]: 4 : CHECK_EQUAL( related_ents[i], geom_ent );
58 : :
59 : 1 : free( related_ents );
60 : 1 : }
61 : :
62 : 1 : void test_change_to_set()
63 : : {
64 : : int err;
65 : : iRel_PairHandle pair;
66 : :
67 : : iRel_createPair( rel, geom, iRel_ENTITY, iRel_IGEOM_IFACE, iRel_ACTIVE, mesh, iRel_BOTH, iRel_IMESH_IFACE,
68 [ + - ][ + - ]: 1 : iRel_ACTIVE, &pair, &err );CHECK_ERR( err );
69 : :
70 [ + - ][ + - ]: 1 : iRel_setEntSetRelation( rel, pair, geom_ent, mesh_set, &err );CHECK_ERR( err );
71 : :
72 [ + - ][ + - ]: 1 : iRel_changePairType( rel, pair, iRel_ENTITY, iRel_SET, &err );CHECK_ERR( err );
73 : :
74 [ + + ]: 5 : for( int i = 0; i < 4; i++ )
75 : : {
76 : : iBase_EntityHandle related_ent;
77 [ + - ]: 4 : iRel_getEntEntRelation( rel, pair, mesh_ents[i], 1, &related_ent, &err );
78 [ + - ]: 4 : CHECK( err != iBase_SUCCESS );
79 : : }
80 : 1 : }
81 : :
82 : 1 : int main()
83 : : {
84 : : int err;
85 : 1 : int num_fail = 0;
86 : :
87 [ + - ]: 1 : iGeom_newGeom( 0, &geom, &err, 0 );
88 [ + - ]: 1 : iMesh_newMesh( 0, &mesh, &err, 0 );
89 [ + - ]: 1 : iRel_create( 0, &rel, &err, 0 );
90 : :
91 [ + - ]: 1 : iGeom_createBrick( geom, 2, 2, 2, &geom_ent, &err );
92 : :
93 : : double coords[] = {
94 : : 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0,
95 : 1 : };
96 : :
97 : 1 : iBase_EntityHandle* mesh_ents_ptr = mesh_ents;
98 : 1 : int mesh_ents_alloc = 4, mesh_ents_size;
99 : : iMesh_createVtxArr( mesh, 4, iBase_INTERLEAVED, coords, 12, &mesh_ents_ptr, &mesh_ents_alloc, &mesh_ents_size,
100 [ + - ]: 1 : &err );
101 : :
102 [ + - ]: 1 : iMesh_createEntSet( mesh, false, &mesh_set, &err );
103 [ + - ]: 1 : iMesh_addEntArrToSet( mesh, mesh_ents, mesh_ents_size, mesh_set, &err );
104 : :
105 [ + - ]: 1 : num_fail += RUN_TEST( test_both );
106 [ + - ]: 1 : num_fail += RUN_TEST( test_change_to_both );
107 [ + - ]: 1 : num_fail += RUN_TEST( test_change_to_set );
108 : :
109 [ + - ]: 1 : iRel_destroy( rel, &err );
110 [ + - ]: 1 : iMesh_dtor( mesh, &err );
111 [ + - ]: 1 : iGeom_dtor( geom, &err );
112 : :
113 : 1 : return num_fail;
114 [ + - ][ + - ]: 4 : }
|