preCICE v3.2.0
Loading...
Searching...
No Matches
UserInputTests.cpp
Go to the documentation of this file.
2#include "testing/Testing.hpp"
3
4#include <array>
5#include <limits>
6
7BOOST_AUTO_TEST_SUITE(PreciceTests)
9
10BOOST_AUTO_TEST_SUITE(Constructor)
11
14{
16
17 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
18 BOOST_CHECK_EXCEPTION(precice::Participant("", config, context.rank, context.size),
20 precice::testing::errorContains("name is an empty string"));
21}
22
24BOOST_AUTO_TEST_CASE(WrongSolverName)
25{
27
28 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
29 BOOST_CHECK_EXCEPTION(precice::Participant("IDontExist", config, context.rank, context.size),
31 precice::testing::errorContains("is not defined"));
32}
33
36{
38
39 BOOST_CHECK_EXCEPTION(precice::Participant("SolverOne", "", context.rank, context.size), ::precice::Error, ::precice::testing::errorContains("unable to open"));
40}
41
44{
46
47 BOOST_CHECK_EXCEPTION(precice::Participant("SolverOne", "this/file/is/missing.xml", context.rank, context.size), ::precice::Error, ::precice::testing::errorContains("unable to open"));
48}
49
51BOOST_AUTO_TEST_CASE(WrongConfigType)
52{
54
55 auto notaconfig = precice::testing::getPathToSources() + "/precice/tests/notaconfig.txt";
56 // The error depends on the libxml2 version
57 BOOST_CHECK_THROW(precice::Participant("SolverOne", notaconfig, context.rank, context.size), ::precice::Error);
58}
59
61BOOST_AUTO_TEST_CASE(EmptyConfigFile)
62{
64
65 auto notaconfig = precice::testing::getPathToSources() + "/precice/tests/emptyconfig.xml";
66 BOOST_CHECK_EXCEPTION(precice::Participant("SolverOne", notaconfig, context.rank, context.size), ::precice::Error, ::precice::testing::errorContains(" is empty."));
67}
68
70BOOST_AUTO_TEST_CASE(RankEqualsSize)
71{
73
74 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
75 BOOST_CHECK_EXCEPTION(precice::Participant("SolverOne", config, context.size, context.size), ::precice::Error, ::precice::testing::errorContains("needs to be smaller than"));
76}
77
79BOOST_AUTO_TEST_CASE(RankLargerThanSize)
80{
82
83 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
84 BOOST_CHECK_EXCEPTION(precice::Participant("SolverOne", config, context.size + 1, context.size), ::precice::Error, ::precice::testing::errorContains("needs to be smaller than"));
85}
86
89{
91
92 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
93 BOOST_CHECK_EXCEPTION(precice::Participant("SolverOne", config, -3, context.size), ::precice::Error, ::precice::testing::errorContains("non-negative number"));
94}
95
98{
100
101 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
102 BOOST_CHECK_EXCEPTION(precice::Participant("SolverOne", config, context.rank, -3), ::precice::Error, ::precice::testing::errorContains("positive number"));
103}
104
105PRECICE_TEST_SETUP(1_rank)
107{
108 PRECICE_TEST();
109
110 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
111 BOOST_CHECK_EXCEPTION(precice::Participant("SolverOne", config, 0, 0), ::precice::Error, ::precice::testing::errorContains("positive number"));
112}
113
114PRECICE_TEST_SETUP(1_rank)
115BOOST_AUTO_TEST_CASE(NullptrAsCommunicator)
116{
117 PRECICE_TEST();
118
119 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
120 BOOST_CHECK_EXCEPTION(precice::Participant("SolverOne", config, context.rank, context.size, nullptr), ::precice::Error, ::precice::testing::errorContains("nullptr"));
121}
122
124
125BOOST_AUTO_TEST_SUITE(MeshDimenstions)
126
127PRECICE_TEST_SETUP(1_rank)
129{
130 PRECICE_TEST();
131
132 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
133 precice::Participant p("SolverTwo", config, context.rank, context.size);
134 BOOST_CHECK_EXCEPTION(p.getMeshDimensions(""),
136 precice::testing::errorContains("Available meshes are"));
137}
138
139PRECICE_TEST_SETUP(1_rank)
141{
142 PRECICE_TEST();
143
144 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
145 precice::Participant p("SolverTwo", config, context.rank, context.size);
146 BOOST_CHECK_EXCEPTION(p.getMeshDimensions("FaceCenters"),
148 precice::testing::errorContains("Available meshes are"));
149}
150
151PRECICE_TEST_SETUP(1_rank)
152BOOST_AUTO_TEST_CASE(TypoNameChanged)
153{
154 PRECICE_TEST();
155
156 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
157 precice::Participant p("SolverTwo", config, context.rank, context.size);
158 BOOST_CHECK_EXCEPTION(p.getMeshDimensions("MeshOno"),
160 precice::testing::errorContains("Did you mean mesh"));
161}
162
163PRECICE_TEST_SETUP(1_rank)
164BOOST_AUTO_TEST_CASE(TypoNameMissing)
165{
166 PRECICE_TEST();
167
168 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
169 precice::Participant p("SolverTwo", config, context.rank, context.size);
170 BOOST_CHECK_EXCEPTION(p.getMeshDimensions("MeshOn"),
172 precice::testing::errorContains("Did you mean mesh"));
173}
174
175PRECICE_TEST_SETUP(1_rank)
177{
178 PRECICE_TEST();
179
180 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
181 precice::Participant p("SolverTwo", config, context.rank, context.size);
182 std::array<double, 3> pos{1, 2, 3};
183 BOOST_CHECK_EXCEPTION(p.setMeshVertex("MeshOnee", pos),
185 precice::testing::errorContains("Did you mean mesh"));
186}
187
189
190BOOST_AUTO_TEST_SUITE(DataDimensions)
191
192PRECICE_TEST_SETUP(1_rank)
194{
195 PRECICE_TEST();
196
197 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
198 precice::Participant p("SolverTwo", config, context.rank, context.size);
199 BOOST_CHECK_EXCEPTION(p.getDataDimensions("CellCenters", "DataTwo"),
201 precice::testing::errorContains("Available meshes are"));
202}
203
204PRECICE_TEST_SETUP(1_rank)
206{
207 PRECICE_TEST();
208
209 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
210 precice::Participant p("SolverTwo", config, context.rank, context.size);
211 BOOST_CHECK_EXCEPTION(p.getDataDimensions("MeshToo", "DataTwo"),
213 precice::testing::errorContains("Did you mean mesh"));
214}
215
216PRECICE_TEST_SETUP(1_rank)
218{
219 PRECICE_TEST();
220
221 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
222 precice::Participant p("SolverTwo", config, context.rank, context.size);
223 BOOST_CHECK_EXCEPTION(p.getDataDimensions("MeshTwo", "Temperature"),
225 precice::testing::errorContains("Available data are"));
226}
227
228PRECICE_TEST_SETUP(1_rank)
230{
231 PRECICE_TEST();
232
233 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
234 precice::Participant p("SolverTwo", config, context.rank, context.size);
235 BOOST_CHECK_EXCEPTION(p.getDataDimensions("MeshTwo", "DataTwi"),
237 precice::testing::errorContains("Did you mean data"));
238}
239
240PRECICE_TEST_SETUP(1_rank)
241BOOST_AUTO_TEST_CASE(WrongMeshAndData)
242{
243 PRECICE_TEST();
244
245 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
246 precice::Participant p("SolverTwo", config, context.rank, context.size);
247 BOOST_CHECK_EXCEPTION(p.getDataDimensions("CellCenters", "Temperature"),
249 precice::testing::errorContains("Available meshes are"));
250}
251
252PRECICE_TEST_SETUP(1_rank)
253BOOST_AUTO_TEST_CASE(TypoMeshAndData)
254{
255 PRECICE_TEST();
256
257 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
258 precice::Participant p("SolverTwo", config, context.rank, context.size);
259 BOOST_CHECK_EXCEPTION(p.getDataDimensions("MeshUne", "DataToo"),
261 precice::testing::errorContains("Did you mean mesh"));
262}
263
265
266BOOST_AUTO_TEST_SUITE(SetVertex)
267
268PRECICE_TEST_SETUP(1_rank)
270{
271 PRECICE_TEST();
272
273 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
274 precice::Participant p("SolverTwo", config, context.rank, context.size);
275 std::array<double, 3> pos{1, 2, 3};
276 BOOST_CHECK_EXCEPTION(p.setMeshVertex("", pos),
278 precice::testing::errorContains("Available meshes are"));
279}
280
281PRECICE_TEST_SETUP(1_rank)
282BOOST_AUTO_TEST_CASE(WrongName)
283{
284 PRECICE_TEST();
285
286 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
287 precice::Participant p("SolverTwo", config, context.rank, context.size);
288 std::array<double, 3> pos{1, 2, 3};
289 BOOST_CHECK_EXCEPTION(p.setMeshVertex("FaceCenters", pos),
291 precice::testing::errorContains("Available meshes are"));
292}
293
294PRECICE_TEST_SETUP(1_rank)
295BOOST_AUTO_TEST_CASE(TypoNameChanged)
296{
297 PRECICE_TEST();
298
299 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
300 precice::Participant p("SolverTwo", config, context.rank, context.size);
301 std::array<double, 3> pos{1, 2, 3};
302 BOOST_CHECK_EXCEPTION(p.setMeshVertex("MeshOno", pos),
304 precice::testing::errorContains("Did you mean mesh"));
305}
306
307PRECICE_TEST_SETUP(1_rank)
308BOOST_AUTO_TEST_CASE(TypoNameMissing)
309{
310 PRECICE_TEST();
311
312 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
313 precice::Participant p("SolverTwo", config, context.rank, context.size);
314 std::array<double, 3> pos{1, 2, 3};
315 BOOST_CHECK_EXCEPTION(p.setMeshVertex("MeshOn", pos),
317 precice::testing::errorContains("Did you mean mesh"));
318}
319
320PRECICE_TEST_SETUP(1_rank)
321BOOST_AUTO_TEST_CASE(TypoNameExtra)
322{
323 PRECICE_TEST();
324
325 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
326 precice::Participant p("SolverTwo", config, context.rank, context.size);
327 std::array<double, 3> pos{1, 2, 3};
328 BOOST_CHECK_EXCEPTION(p.setMeshVertex("MeshOnee", pos),
330 precice::testing::errorContains("Did you mean mesh"));
331}
332
333PRECICE_TEST_SETUP(1_rank)
334BOOST_AUTO_TEST_CASE(EmptyPositions)
335{
336 PRECICE_TEST();
337
338 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
339 precice::Participant p("SolverOne", config, context.rank, context.size);
341 BOOST_CHECK_EXCEPTION(p.setMeshVertex("MeshOne", pos),
343 precice::testing::errorContains("but found 0"));
344}
345
346PRECICE_TEST_SETUP(1_rank)
347BOOST_AUTO_TEST_CASE(WrongDimensionality)
348{
349 PRECICE_TEST();
350
351 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
352 precice::Participant p("SolverOne", config, context.rank, context.size);
353 std::array<double, 3> pos{1, 2, 3};
354 BOOST_CHECK_EXCEPTION(p.setMeshVertex("MeshOne", pos),
356 precice::testing::errorContains("but found 3"));
357}
358
360PRECICE_TEST_SETUP(1_rank)
362{
363 PRECICE_TEST();
364
365 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
366 precice::Participant p("SolverOne", config, context.rank, context.size);
368 // Currently allowed
369 BOOST_CHECK_NO_THROW(p.setMeshVertex("MeshOne", pos));
370}
371
372PRECICE_TEST_SETUP(1_rank)
374{
375 PRECICE_TEST();
376
377 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
378 precice::Participant p("SolverOne", config, context.rank, context.size);
380 // Currently allowed
381 BOOST_CHECK_NO_THROW(p.setMeshVertex("MeshOne", pos));
382}
383
385
386BOOST_AUTO_TEST_SUITE(SetVertices)
387
388PRECICE_TEST_SETUP(1_rank)
390{
391 PRECICE_TEST();
392
393 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
394 precice::Participant p("SolverTwo", config, context.rank, context.size);
395 std::array<double, 3> pos{1, 2, 3};
397 BOOST_CHECK_EXCEPTION(p.setMeshVertices("", pos, vids),
399 precice::testing::errorContains("Available meshes are"));
400}
401
402PRECICE_TEST_SETUP(1_rank)
403BOOST_AUTO_TEST_CASE(WrongName)
404{
405 PRECICE_TEST();
406
407 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
408 precice::Participant p("SolverTwo", config, context.rank, context.size);
409 std::array<double, 3> pos{1, 2, 3};
411 BOOST_CHECK_EXCEPTION(p.setMeshVertices("FaceCenters", pos, vids),
413 precice::testing::errorContains("Available meshes are"));
414}
415
416PRECICE_TEST_SETUP(1_rank)
417BOOST_AUTO_TEST_CASE(TypoNameChanged)
418{
419 PRECICE_TEST();
420
421 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
422 precice::Participant p("SolverTwo", config, context.rank, context.size);
423 std::array<double, 3> pos{1, 2, 3};
425 BOOST_CHECK_EXCEPTION(p.setMeshVertices("MeshOno", pos, vids),
427 precice::testing::errorContains("Did you mean mesh"));
428}
429
430PRECICE_TEST_SETUP(1_rank)
431BOOST_AUTO_TEST_CASE(TypoNameMissing)
432{
433 PRECICE_TEST();
434
435 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
436 precice::Participant p("SolverTwo", config, context.rank, context.size);
437 std::array<double, 3> pos{1, 2, 3};
439 BOOST_CHECK_EXCEPTION(p.setMeshVertices("MeshOn", pos, vids),
441 precice::testing::errorContains("Did you mean mesh"));
442}
443
444PRECICE_TEST_SETUP(1_rank)
445BOOST_AUTO_TEST_CASE(TypoNameExtra)
446{
447 PRECICE_TEST();
448
449 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
450 precice::Participant p("SolverTwo", config, context.rank, context.size);
451 std::array<double, 3> pos{1, 2, 3};
453 BOOST_CHECK_EXCEPTION(p.setMeshVertices("MeshOnee", pos, vids),
455 precice::testing::errorContains("Did you mean mesh"));
456}
457
458PRECICE_TEST_SETUP(1_rank)
459BOOST_AUTO_TEST_CASE(EmptyPositions)
460{
461 PRECICE_TEST();
462
463 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
464 precice::Participant p("SolverOne", config, context.rank, context.size);
467 BOOST_CHECK_EXCEPTION(p.setMeshVertices("MeshOne", pos, vids),
469 precice::testing::errorContains("1 vertex indices and 0 position components"));
470}
471
472PRECICE_TEST_SETUP(1_rank)
473BOOST_AUTO_TEST_CASE(NotEnoughPositions)
474{
475 PRECICE_TEST();
476
477 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
478 precice::Participant p("SolverOne", config, context.rank, context.size);
479 std::array<double, 3> pos{1, 2, 3};
481 BOOST_CHECK_EXCEPTION(p.setMeshVertices("MeshOne", pos, vids),
483 precice::testing::errorContains("2 vertex indices and 3 position components"));
484}
485
486PRECICE_TEST_SETUP(1_rank)
487BOOST_AUTO_TEST_CASE(TooManyPositions)
488{
489 PRECICE_TEST();
490
491 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
492 precice::Participant p("SolverOne", config, context.rank, context.size);
493 std::array<double, 7> pos{1, 2, 3, 4, 5, 6, 7};
495 BOOST_CHECK_EXCEPTION(p.setMeshVertices("MeshOne", pos, vids),
497 precice::testing::errorContains("3 vertex indices and 7 position components"));
498}
499
501PRECICE_TEST_SETUP(1_rank)
502BOOST_AUTO_TEST_CASE(InfInPosition)
503{
504 PRECICE_TEST();
505
506 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
507 precice::Participant p("SolverOne", config, context.rank, context.size);
510 // Currently allowed
511 BOOST_CHECK_NO_THROW(p.setMeshVertices("MeshOne", pos, vids));
512}
513
514PRECICE_TEST_SETUP(1_rank)
515BOOST_AUTO_TEST_CASE(NanInPosition)
516{
517 PRECICE_TEST();
518
519 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
520 precice::Participant p("SolverOne", config, context.rank, context.size);
523 // Currently allowed
524 BOOST_CHECK_NO_THROW(p.setMeshVertices("MeshOne", pos, vids));
525}
526
528
529BOOST_AUTO_TEST_SUITE(WriteData)
530
531PRECICE_TEST_SETUP(1_rank)
532BOOST_AUTO_TEST_CASE(WrongMesh)
533{
534 PRECICE_TEST();
535
536 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
537 precice::Participant p("SolverTwo", config, context.rank, context.size);
538 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
540 p.setMeshVertices("MeshTwo", pos, vids);
541
542 std::array<double, 3> data{1.0, 2.0, 3.0};
543 BOOST_CHECK_EXCEPTION(p.writeData("CellCenters", "DataTwo", vids, data),
545 precice::testing::errorContains("Available meshes are"));
546}
547
548PRECICE_TEST_SETUP(1_rank)
549BOOST_AUTO_TEST_CASE(TypoMesh)
550{
551 PRECICE_TEST();
552
553 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
554 precice::Participant p("SolverTwo", config, context.rank, context.size);
555 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
557 p.setMeshVertices("MeshTwo", pos, vids);
558
559 std::array<double, 3> data{1.0, 2.0, 3.0};
560 BOOST_CHECK_EXCEPTION(p.writeData("MeshToo", "DataTwo", vids, data),
562 precice::testing::errorContains("Did you mean mesh"));
563}
564
565PRECICE_TEST_SETUP(1_rank)
566BOOST_AUTO_TEST_CASE(WrongData)
567{
568 PRECICE_TEST();
569
570 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
571 precice::Participant p("SolverTwo", config, context.rank, context.size);
572 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
574 p.setMeshVertices("MeshTwo", pos, vids);
575
576 std::array<double, 3> data{1.0, 2.0, 3.0};
577 BOOST_CHECK_EXCEPTION(p.writeData("MeshTwo", "Temperature", vids, data),
579 precice::testing::errorContains("Available data are"));
580}
581
582PRECICE_TEST_SETUP(1_rank)
583BOOST_AUTO_TEST_CASE(TypoData)
584{
585 PRECICE_TEST();
586
587 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
588 precice::Participant p("SolverTwo", config, context.rank, context.size);
589 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
591 p.setMeshVertices("MeshTwo", pos, vids);
592
593 std::array<double, 3> data{1.0, 2.0, 3.0};
594 BOOST_CHECK_EXCEPTION(p.writeData("MeshTwo", "DataTwi", vids, data),
596 precice::testing::errorContains("Did you mean data"));
597}
598
599PRECICE_TEST_SETUP(1_rank)
600BOOST_AUTO_TEST_CASE(WrongMeshAndData)
601{
602 PRECICE_TEST();
603
604 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
605 precice::Participant p("SolverTwo", config, context.rank, context.size);
606 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
608 p.setMeshVertices("MeshTwo", pos, vids);
609
610 std::array<double, 3> data{1.0, 2.0, 3.0};
611 BOOST_CHECK_EXCEPTION(p.writeData("CellCenters", "Temperature", vids, data),
613 precice::testing::errorContains("Available meshes are"));
614}
615
616PRECICE_TEST_SETUP(1_rank)
617BOOST_AUTO_TEST_CASE(TypoMeshAndData)
618{
619 PRECICE_TEST();
620
621 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
622 precice::Participant p("SolverTwo", config, context.rank, context.size);
623 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
625 p.setMeshVertices("MeshTwo", pos, vids);
626
627 std::array<double, 3> data{1.0, 2.0, 3.0};
628 BOOST_CHECK_EXCEPTION(p.writeData("MeshUne", "DataToo", vids, data),
630 precice::testing::errorContains("Did you mean mesh"));
631}
632
633PRECICE_TEST_SETUP(1_rank)
635{
636 PRECICE_TEST();
637
638 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
639 precice::Participant p("SolverTwo", config, context.rank, context.size);
640 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
642 p.setMeshVertices("MeshTwo", pos, vids);
643
644 std::array<double, 3> data{1.0, 2.0, 3.0};
645 // Call is ignored
646 BOOST_CHECK_NO_THROW(p.writeData("MeshTwo", "DataTwo", vids, data));
647}
648
649PRECICE_TEST_SETUP(1_rank)
651{
652 PRECICE_TEST();
653
654 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
655 precice::Participant p("SolverTwo", config, context.rank, context.size);
656 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
658 p.setMeshVertices("MeshTwo", pos, vids);
659
660 std::array<double, 1> data{1.0};
661 BOOST_CHECK_EXCEPTION(p.writeData("MeshTwo", "DataTwo", vids, data),
663 precice::testing::errorContains("3 vertex indices and 1 data components"));
664}
665
666PRECICE_TEST_SETUP(1_rank)
668{
669 PRECICE_TEST();
670
671 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
672 precice::Participant p("SolverTwo", config, context.rank, context.size);
673 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
675 p.setMeshVertices("MeshTwo", pos, vids);
676
677 std::array<double, 4> data{1.0, 2.0, 3.0, 4.0};
678 BOOST_CHECK_EXCEPTION(p.writeData("MeshTwo", "DataTwo", vids, data),
680 precice::testing::errorContains("3 vertex indices and 4 data components"));
681}
682
683PRECICE_TEST_SETUP(1_rank)
685{
686 PRECICE_TEST();
687
688 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
689 precice::Participant p("SolverTwo", config, context.rank, context.size);
690 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
692 p.setMeshVertices("MeshTwo", pos, vids);
693 vids.back() = vids.front(); // last == first
694
695 std::array<double, 3> data{1.0, 2.0, 3.0};
696 // This is currently allowed but is in discussion of being forbidden
697 BOOST_CHECK_NO_THROW(p.writeData("MeshTwo", "DataTwo", vids, data));
698}
699
700PRECICE_TEST_SETUP(1_rank)
701BOOST_AUTO_TEST_CASE(WrongVertexIDSingle)
702{
703 PRECICE_TEST();
704
705 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
706 precice::Participant p("SolverTwo", config, context.rank, context.size);
707 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
709 p.setMeshVertices("MeshTwo", pos, vids);
710 vids[1] = 666;
711
712 std::array<double, 3> data{1.0, 2.0, 3.0};
713 // This is currently allowed but is in discussion of being forbidden
714 BOOST_CHECK_EXCEPTION(p.writeData("MeshTwo", "DataTwo", vids, data),
716 precice::testing::errorContains("invalid Vertex ID at"));
717}
718
719PRECICE_TEST_SETUP(1_rank)
720BOOST_AUTO_TEST_CASE(WrongVertexIDRange)
721{
722 PRECICE_TEST();
723
724 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
725 precice::Participant p("SolverTwo", config, context.rank, context.size);
726 std::array<double, 10> pos{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
728 p.setMeshVertices("MeshTwo", pos, vids);
729 std::fill_n(&vids[1], 3, 666);
730
731 std::array<double, 5> data{1.0, 2.0, 3.0, 4.0, 5.0};
732 // This is currently allowed but is in discussion of being forbidden
733 BOOST_CHECK_EXCEPTION(p.writeData("MeshTwo", "DataTwo", vids, data),
735 precice::testing::errorContains("invalid Vertex ID at"));
736}
737
738PRECICE_TEST_SETUP(1_rank)
740{
741 PRECICE_TEST();
742
743 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
744 precice::Participant p("SolverTwo", config, context.rank, context.size);
745 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
747 p.setMeshVertices("MeshTwo", pos, vids);
748
750#ifdef NDEBUG
751 BOOST_CHECK_NO_THROW(p.writeData("MeshTwo", "DataTwo", vids, data));
752#else
753 BOOST_CHECK_EXCEPTION(p.writeData("MeshTwo", "DataTwo", vids, data),
756#endif
757}
758
759PRECICE_TEST_SETUP(1_rank)
761{
762 PRECICE_TEST();
763
764 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
765 precice::Participant p("SolverTwo", config, context.rank, context.size);
766 std::array<double, 6> pos{1, 2, 3, 4, 5, 6};
768 p.setMeshVertices("MeshTwo", pos, vids);
769
771#ifdef NDEBUG
772 BOOST_CHECK_NO_THROW(p.writeData("MeshTwo", "DataTwo", vids, data));
773#else
774 BOOST_CHECK_EXCEPTION(p.writeData("MeshTwo", "DataTwo", vids, data),
777#endif
778}
779
781
782BOOST_AUTO_TEST_SUITE(NotBeforeInitialize)
783
784PRECICE_TEST_SETUP(1_rank)
786{
787 PRECICE_TEST();
788
789 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
790 precice::Participant p("SolverTwo", config, context.rank, context.size);
793 BOOST_CHECK_EXCEPTION(p.readData("MeshTwo", "DataTwo", vids, 0.0, data),
795 precice::testing::errorContains("cannot be called"));
796}
797
798PRECICE_TEST_SETUP(1_rank)
799BOOST_AUTO_TEST_CASE(GetMaxTimeStepSize)
800{
801 PRECICE_TEST();
802
803 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
804 precice::Participant p("SolverTwo", config, context.rank, context.size);
805 BOOST_CHECK_EXCEPTION(p.getMaxTimeStepSize(),
807 precice::testing::errorContains("has to be called before"));
808}
809
811
812BOOST_AUTO_TEST_SUITE(MeshConnectivity)
813
814PRECICE_TEST_SETUP(1_rank)
816{
817 PRECICE_TEST();
818
819 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
820 precice::Participant p("SolverTwo", config, context.rank, context.size);
821 BOOST_CHECK_EXCEPTION(p.requiresMeshConnectivityFor("CellCenters"),
823 precice::testing::errorContains("Available meshes are"));
824}
825
826PRECICE_TEST_SETUP(1_rank)
828{
829 PRECICE_TEST();
830
831 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
832 precice::Participant p("SolverTwo", config, context.rank, context.size);
833 BOOST_CHECK_EXCEPTION(p.requiresMeshConnectivityFor("MoshOne"),
835 precice::testing::errorContains("Did you mean mesh"));
836}
837
839
840BOOST_AUTO_TEST_SUITE(ResetMesh)
841
842PRECICE_TEST_SETUP(1_rank)
844{
845 PRECICE_TEST();
846
847 auto config = precice::testing::getPathToSources() + "/precice/tests/config-checker.xml";
848 precice::Participant p("SolverTwo", config, context.rank, context.size);
849 BOOST_CHECK_EXCEPTION(p.resetMesh("MeshOne"),
851 precice::testing::errorContains("unlock the full API"));
852}
853
855
BOOST_AUTO_TEST_SUITE(PreProcess)
BOOST_AUTO_TEST_SUITE_END()
#define PRECICE_TEST()
Definition Testing.hpp:39
#define PRECICE_TEST_SETUP(...)
Creates and attaches a TestSetup to a Boost test case.
Definition Testing.hpp:29
BOOST_AUTO_TEST_CASE(NoSolverName)
T back(T... args)
Main Application Programming Interface of preCICE. Include using #include <precice/precice....
int getDataDimensions(::precice::string_view meshName, ::precice::string_view dataName) const
Returns the spatial dimensionality of the given data on the given mesh.
VertexID setMeshVertex(::precice::string_view meshName, ::precice::span< const double > position)
Creates a mesh vertex.
void writeData(::precice::string_view meshName, ::precice::string_view dataName, ::precice::span< const VertexID > ids, ::precice::span< const double > values)
Writes data to a mesh.
void setMeshVertices(::precice::string_view meshName, ::precice::span< const double > coordinates, ::precice::span< VertexID > ids)
Creates multiple mesh vertices.
double getMaxTimeStepSize() const
Get the maximum allowed time step size of the current window.
bool requiresMeshConnectivityFor(::precice::string_view meshName) const
Checks if the given mesh requires connectivity.
int getMeshDimensions(::precice::string_view meshName) const
Returns the spatial dimensionality of the given mesh.
void readData(::precice::string_view meshName, ::precice::string_view dataName, ::precice::span< const VertexID > ids, double relativeReadTime, ::precice::span< double > values) const
Reads data values from a mesh. Values correspond to a given point in time relative to the beginning o...
void resetMesh(::precice::string_view meshName)
Removes all vertices and connectivity information from the mesh.
T data(T... args)
T fill_n(T... args)
T front(T... args)
T infinity(T... args)
std::string getPathToSources()
Returns the base path to the sources.
Definition Testing.cpp:33
ErrorPredicate errorContains(std::string_view substring)
Checks if the message of a given precice::Error contains a substring.
Definition Testing.cpp:142
T quiet_NaN(T... args)