GCC Code Coverage Report


Directory: ../../../builds/dumux-repositories/
File: dumux/dumux/common/dumuxmessage.hh
Date: 2025-04-12 19:19:20
Exec Total Coverage
Lines: 225 225 100.0%
Functions: 1 1 100.0%
Branches: 97 100 97.0%

Line Branch Exec Source
1 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 // vi: set et ts=4 sw=4 sts=4:
3 //
4 // SPDX-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5 // SPDX-License-Identifier: GPL-3.0-or-later
6 //
7 /*!
8 * \file
9 * \ingroup Core
10 * \brief Provides the class creating the famous DuMu<sup>x</sup> start and end messages
11 */
12 #ifndef DUMUX_MESSAGE_HH
13 #define DUMUX_MESSAGE_HH
14
15 #include <iomanip>
16 #include <iostream>
17 #include <ctime>
18
19 #include <dumux/io/format.hh>
20
21 namespace Dumux {
22
23 /*!
24 * \ingroup Core
25 * \brief DuMu<sup>x</sup> start and end message.
26 */
27 class DumuxMessage
28 {
29 //! The current number of messages. Please adjust if you add one.
30 static const int nMessages_ = 34;
31
32 public:
33
34 /*!
35 * \brief Selects random messages to write out at the start and end of a simulation run.
36 * \param firstCall Indicates if it's the first call and we have to dice (simulation is starting).
37 */
38 893 static void print(bool firstCall = false)
39 {
40 // initialize in case someone forgets to set first call
41 893 static int dice = 8;
42
43
2/2
✓ Branch 0 taken 477 times.
✓ Branch 1 taken 416 times.
893 if(firstCall)
44 {
45 // roll the dice to decide which start message will be displayed
46 477 std::srand(std::time(0));
47 477 dice = std::rand() % (nMessages_ + 1);
48 }
49
50 893 std::cout << std::endl;
51
52
35/36
✓ Branch 0 taken 26 times.
✓ Branch 1 taken 15 times.
✓ Branch 2 taken 23 times.
✓ Branch 3 taken 21 times.
✓ Branch 4 taken 16 times.
✓ Branch 5 taken 33 times.
✓ Branch 6 taken 25 times.
✓ Branch 7 taken 27 times.
✓ Branch 8 taken 27 times.
✓ Branch 9 taken 19 times.
✓ Branch 10 taken 34 times.
✓ Branch 11 taken 11 times.
✓ Branch 12 taken 24 times.
✓ Branch 13 taken 38 times.
✓ Branch 14 taken 24 times.
✓ Branch 15 taken 25 times.
✓ Branch 16 taken 26 times.
✓ Branch 17 taken 30 times.
✓ Branch 18 taken 29 times.
✓ Branch 19 taken 27 times.
✓ Branch 20 taken 9 times.
✓ Branch 21 taken 46 times.
✓ Branch 22 taken 21 times.
✓ Branch 23 taken 29 times.
✓ Branch 24 taken 28 times.
✓ Branch 25 taken 36 times.
✓ Branch 26 taken 22 times.
✓ Branch 27 taken 17 times.
✓ Branch 28 taken 24 times.
✓ Branch 29 taken 30 times.
✓ Branch 30 taken 26 times.
✓ Branch 31 taken 26 times.
✓ Branch 32 taken 16 times.
✓ Branch 33 taken 29 times.
✓ Branch 34 taken 34 times.
✗ Branch 35 not taken.
893 switch (dice)
53 {
54 26 case 0:
55
2/2
✓ Branch 0 taken 13 times.
✓ Branch 1 taken 13 times.
26 if(firstCall)
56 13 std::cout << "Welcome aboard DuMuX airlines. Please fasten your seatbelts! "
57 13 << "Emergency exits are near the time integration." << std::endl;
58 else
59 13 std::cout << "We hope that you enjoyed simulating with us " << std::endl
60 13 << "and that you will choose us next time, too." << std::endl;
61 break;
62 15 case 1:
63
2/2
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 7 times.
15 if(firstCall)
64 8 std::cout << "Let's get the cow off the ice." << std::endl;
65 else
66 7 std::cout << "DuMuX got the cow off the ice." << std::endl;
67 break;
68 23 case 2:
69
2/2
✓ Branch 0 taken 13 times.
✓ Branch 1 taken 10 times.
23 if(firstCall)
70 13 std::cout << "Science, my lad, is made up of mistakes, but they are "
71 << "mistakes which it is useful to make, because they lead little "
72 13 << "by little to the truth." << std::endl
73 13 << " - Jules Verne, A journey to the center of the earth" << std::endl;
74 else
75 10 std::cout << "[We see that] science is eminently perfectible, and that each theory has "
76 10 << "constantly to give way to a fresh one." << std::endl
77 10 << " - Jules Verne, Journey to the Center of the Earth" << std::endl;
78
79 break;
80 21 case 3:
81
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 9 times.
21 if(firstCall)
82 12 std::cout << "Wherever he saw a hole he always wanted to know the depth of it. "
83 12 << "To him this was important." << std::endl
84 12 << " - Jules Verne, A journey to the center of the earth" << std::endl;
85 else
86 9 std::cout << "We may brave human laws, but we cannot resist natural ones." << std::endl
87 9 << " - Jules Verne, 20,000 Leagues Under the Sea" << std::endl;
88 break;
89 16 case 4:
90
2/2
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 8 times.
16 if(firstCall)
91 8 std::cout << "Silence - to delight Bernd." << std::endl;
92 else
93 8 std::cout << std::endl << std::endl;
94 break;
95 33 case 5:
96 33 std::cout << "Don't panic... !" << std::endl;
97 33 break;
98 25 case 6:
99
2/2
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 10 times.
25 if(firstCall)
100 15 std::cout << "You idiot! You signed the order to destroy Earth!" << std::endl
101 15 << " - Douglas Adams, HGttG" << std::endl;
102 else
103 10 std::cout << "Marvin: I've been talking to the main computer." << std::endl
104 10 << "Arthur: And?" << std::endl
105 10 << "Marvin: It hates me." << std::endl
106 10 << " - Douglas Adams, HGttG" << std::endl;
107 break;
108 27 case 7:
109
2/2
✓ Branch 0 taken 18 times.
✓ Branch 1 taken 9 times.
27 if(firstCall)
110 18 std::cout << "In the beginning the Universe was created. This has made a lot of "
111 18 << "people very angry and has been widely regarded as a bad move.!" << std::endl
112 18 << " - Douglas Adams, HGttG " << std::endl;
113 else
114 9 std::cout << "Forty-two. I checked it very thoroughly, and that quite definitely is the answer. I think "
115 9 << "the problem, to be quite honest with you, is that you\'ve never actually known what the question is." << std::endl
116 9 << " - Douglas Adams, HGttG " << std::endl;
117 break;
118 27 case 8:
119 27 std::cout << " ## @@@@ @ @ @ @" << std::endl;
120 27 std::cout << " ### # @ @ @@ @@ @ " << std::endl;
121 27 std::cout << " ## # @ @ @ @ @ @ @ @ @ @ @" << std::endl;
122 27 std::cout << " ## # @ @ @ @ @ @ @ @ " << std::endl;
123 27 std::cout << " # # @@@@ @@@ @ @ @@@ " << std::endl;
124 27 std::cout << " # # " << std::endl;
125 27 std::cout << " # # " << std::endl;
126 27 std::cout << " # ## %%% " << std::setw(8) << std::right << DUMUX_VERSION << std::endl;
127 27 std::cout << " # ### % % %% %% " << std::endl;
128 27 std::cout << "#### #%%% %% %%%%% %%%%%%%%%%%%%%%%%" << std::endl;
129 27 break;
130 19 case 9:
131 19 std::cout << "### # # # # " << std::endl;
132 19 std::cout << "# # # # ## ## # # # " << std::endl;
133 19 std::cout << "# # # # # # # # # # # " << std::endl;
134 19 std::cout << "### ## # # ## " << std::endl;
135 19 std::cout << " " << std::endl;
136 19 std::cout << "Dune for Multi-{ Phase, " << std::endl;
137 19 std::cout << " Component, " << std::endl;
138 19 std::cout << " Scale, " << std::endl;
139 19 std::cout << " Physics, " << std::endl;
140 19 std::cout << " ...} flow and transport in porous media" << std::endl;
141 19 break;
142 34 case 10:
143
2/2
✓ Branch 0 taken 17 times.
✓ Branch 1 taken 17 times.
34 if(firstCall)
144 17 std::cout << "Elliot Carver: Mr. Jones, are we ready to release our new software?" << std::endl
145 17 << "Jones: Yes, sir. As requested, it's full of bugs, which means people will be forced to upgrade for years." << std::endl
146 17 << " - James Bond, Tomorrow Never Dies" << std::endl;
147 else
148 {
149 17 std::cout << "Elliot Carver: Outstanding." << std::endl
150 17 << " - James Bond, Tomorrow Never Dies" << std::endl;
151 }
152 break;
153 11 case 11:
154
2/2
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 5 times.
11 if(firstCall)
155 6 std::cout << "Chuck Norris has successfully compiled DuMuX." << std::endl;
156 else
157 5 std::cout << "Chuck Norris has compiled DuMuX even two times in a row!" << std::endl;
158 break;
159 24 case 12:
160
2/2
✓ Branch 0 taken 13 times.
✓ Branch 1 taken 11 times.
24 if (firstCall)
161 {
162 13 std::cout << " ┌──────────────────┐" << std::endl;
163
2/4
✓ Branch 2 taken 13 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 13 times.
✗ Branch 6 not taken.
26 std::cout << Fmt::format(" │{:^20}│", Fmt::format("DuMuX {} \u2661", DUMUX_VERSION)) << std::endl;
164 13 std::cout << " └──────────────────┘" << std::endl;
165 }
166 else
167 11 std::cout << "\n" << std::endl;
168 break;
169 38 case 13:
170
2/2
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 18 times.
38 if(firstCall)
171 {
172 20 std::cout << "Everything starts somewhere, though many physicists disagree." << std::endl
173 20 << " - Terry Pratchett " << std::endl;
174 }
175 else
176 {
177 18 std::cout << "Opera happens because a large number of things amazingly fail to go wrong." << std::endl
178 18 << " - Terry Pratchett " << std::endl;
179 }
180 break;
181 24 case 14:
182 24 std::cout << "To infinity and beyond." << std::endl
183 24 << " - Buzz Lightyear, Toy Story" << std::endl;
184 24 break;
185 25 case 15:
186
2/2
✓ Branch 0 taken 13 times.
✓ Branch 1 taken 12 times.
25 if(firstCall)
187 {
188 13 std::cout << "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." << std::endl
189 13 << " - Bjarne Stroustrup " << std::endl;
190 }
191 else
192 {
193 12 std::cout << "There's an old story about the person who wished his computer were as easy to use as his telephone." << std::endl
194 12 << "That wish has come true, since I no longer know how to use my telephone." << std::endl
195 12 << " - Bjarne Stroustrup " << std::endl;
196 }
197 break;
198 26 case 16:
199
2/2
✓ Branch 0 taken 13 times.
✓ Branch 1 taken 13 times.
26 if(firstCall)
200 {
201 13 std::cout << "Now, all we need is a little Energon and a lot of luck!" << std::endl
202 13 << " - Optimus Prime, The Transformers: The Movie " << std::endl;
203 }
204 else
205 {
206 13 std::cout << "Sometimes even the wisest of men and machines can be in error." << std::endl
207 13 << " - Optimus Prime, The Transformers: The Movie " << std::endl;
208 }
209 break;
210 30 case 17:
211
2/2
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 15 times.
30 if(firstCall)
212 {
213 15 std::cout << "Let's go. In and out, 20 minutes adventure." << std::endl
214 15 << " - Rick Sanchez, Rick & Morty " << std::endl;
215 }
216 else
217 {
218 15 std::cout << "Losers look stuff up while the rest of us are carpin' all them diems." << std::endl
219 15 << " - Summer Smith, Rick & Morty" << std::endl;
220 }
221 break;
222 29 case 18:
223
2/2
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 14 times.
29 if(firstCall)
224 {
225 15 std::cout << "It's the job that's never started as takes longest to finish." << std::endl
226 15 << " - Sam Gamgee, LotR " << std::endl;
227 }
228 else
229 {
230 14 std::cout << "He that breaks a thing to find out what it is, has left the path of wisdom." << std::endl
231 14 << " - Gandalf, LotR " << std::endl;
232 }
233 break;
234 27 case 19:
235
2/2
✓ Branch 0 taken 14 times.
✓ Branch 1 taken 13 times.
27 if(firstCall)
236 {
237 14 std::cout << "The Ring has awoken, it's heard its master's call." << std::endl
238 14 << " - Gandalf, LotR " << std::endl;
239 }
240 else
241 {
242 13 std::cout << "It's a dangerous business, Frodo, going out your door. " << std::endl
243 13 << "You step onto the road, and if you don't keep your feet, there's no knowing where you might be swept off to." << std::endl
244 13 << " - Frodo Baggins, LotR " << std::endl;
245 }
246 break;
247 9 case 20:
248
2/2
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 4 times.
9 if(firstCall)
249 {
250 5 std::cout << "Who knows? Have patience. Go where you must go, and hope!" << std::endl
251 5 << " - Gandalf, LotR " << std::endl;
252 }
253 else
254 {
255 4 std::cout << "Don't adventures ever have an end? I suppose not. Someone else always has to carry on the story." << std::endl
256 4 << " - Bilbo Baggins, LotR " << std::endl;
257 }
258 break;
259 46 case 21:
260
2/2
✓ Branch 0 taken 25 times.
✓ Branch 1 taken 21 times.
46 if(firstCall)
261 {
262 25 std::cout << "As long as I'm better than everyone else I suppose it doesn't matter." << std::endl
263 25 << " - Jamie Lannister, GoT" << std::endl;
264 }
265 else
266 {
267 21 std::cout << "My watch has ended." << std::endl
268 21 << " - Jon Snow, GoT" << std::endl;
269 }
270 break;
271 21 case 22:
272
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 9 times.
21 if(firstCall)
273 {
274 12 std::cout << "You'll find I'm full of surprises." << std::endl
275 12 << " - Luke Skywalker, Star Wars: The Empire Strikes Back " << std::endl;
276 }
277 else
278 {
279 9 std::cout << "I find your lack of faith disturbing." << std::endl
280 9 << " - Darth Vader, Star Wars: A New Hope " << std::endl;
281 }
282 break;
283 29 case 23:
284
2/2
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 14 times.
29 if(firstCall)
285 {
286 15 std::cout << "Here goes nothing." << std::endl
287 15 << " - Lando Calrissian, Star Wars: Return of the Jedi" << std::endl;
288 }
289 else
290 {
291 14 std::cout << "Chewie, we're home." << std::endl
292 14 << " - Han Solo, Star Wars: The Force Awakens" << std::endl;
293 }
294 break;
295 28 case 24:
296
2/2
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 13 times.
28 if(firstCall)
297 {
298 15 std::cout << "The Force is strong with this one." << std::endl
299 15 << " - Darth Vader, Star Wars: A New Hope " << std::endl;
300 }
301 else
302 {
303 13 std::cout << "In my experience, there's no such thing as luck." << std::endl
304 13 << " - Obi-Wan Kenobi, Star Wars: A New Hope " << std::endl;
305 }
306 break;
307 36 case 25:
308
2/2
✓ Branch 0 taken 19 times.
✓ Branch 1 taken 17 times.
36 if(firstCall)
309 {
310 19 std::cout << "The city's central computer told you? R2D2, you know better than to trust a strange computer!" << std::endl
311 19 << " - C3PO, Star Wars: The Empire Strikes Back " << std::endl;
312 }
313 else
314 {
315 17 std::cout << "He's quite clever, you know...for a human being." << std::endl
316 17 << " - C3PO, Star Wars: The Empire Strikes Back " << std::endl;
317 }
318 break;
319 22 case 26:
320
2/2
✓ Branch 0 taken 11 times.
✓ Branch 1 taken 11 times.
22 if(firstCall)
321 {
322 11 std::cout << "I know some things. I can, you know, do math and stuff." << std::endl
323 11 << " - Harry Potter " << std::endl;
324 }
325 else
326 {
327 11 std::cout << "Harry then did something that was both very brave and very stupid." << std::endl
328 11 << " - Harry Potter and the Sorcerer's Stone " << std::endl;
329 }
330 break;
331 17 case 27:
332
2/2
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 8 times.
17 if(firstCall)
333 {
334 9 std::cout << "I'll be in my bedroom, making no noise and pretending I'm not there." << std::endl
335 9 << " - Harry Potter " << std::endl;
336 }
337 else
338 {
339 8 std::cout << "Honestly, if you were any slower, you'd be going backward." << std::endl
340 8 << " - Draco Malfoy " << std::endl;
341 }
342 break;
343 24 case 28:
344 24 std::cout << "I can do this all day." << std::endl
345 24 << " - Captain America " << std::endl;
346 24 break;
347 30 case 29:
348
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 14 times.
30 if(firstCall)
349 {
350 16 std::cout << "Your scientists were so preoccupied with whether or not they could, they didn't stop to think if they should." << std::endl
351 16 << " - Ian Malcolm, Jurassic Park " << std::endl;
352 }
353 else
354 {
355 14 std::cout << "Boy, do I hate being right all the time." << std::endl
356 14 << " - Ian Malcolm, Jurassic Park " << std::endl;
357 }
358 break;
359 26 case 30:
360
2/2
✓ Branch 0 taken 14 times.
✓ Branch 1 taken 12 times.
26 if(firstCall)
361 {
362 14 std::cout << "It's a UNIX System! I know this! "
363 14 << " - Lex Murphy, Jurassic Park " << std::endl;
364 }
365 else
366 {
367 12 std::cout << "When you gotta go, you gotta go." << std::endl
368 12 << " - Ian Malcolm, Jurassic Park " << std::endl;
369 }
370 break;
371 26 case 31:
372
2/2
✓ Branch 0 taken 13 times.
✓ Branch 1 taken 13 times.
26 if(firstCall)
373 {
374 13 std::cout << "Whatever happens, that's the plan. "
375 13 << " - Kayla Watts, Jurassic World Dominion " << std::endl;
376 }
377 else
378 {
379 13 std::cout << "Can we start over?" << std::endl
380 13 << " - Claire Dearing, Jurassic World Dominion " << std::endl;
381 }
382 break;
383 16 case 32:
384
2/2
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 8 times.
16 if(firstCall)
385 {
386 8 std::cout << "The code is more what you'd call 'guidelines' than actual rules. "
387 8 << " - Hector Barbossa, Pirates of the Caribbean " << std::endl;
388 }
389 else
390 {
391 8 std::cout << "Did everyone see that? Because I will not be doing it again." << std::endl
392 8 << " - Jack Sparrow, Pirates of the Caribbean " << std::endl;
393 }
394 break;
395 29 case 33:
396
2/2
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 13 times.
29 if(firstCall)
397 {
398 16 std::cout << "If you were waiting for the opportune moment, that was it. "
399 16 << " - Jack Sparrow, Pirates of the Caribbean " << std::endl;
400 }
401 else
402 {
403 13 std::cout << "I love those moments. I like to wave at them as they pass by." << std::endl
404 13 << " - Jack Sparrow, Pirates of the Caribbean " << std::endl;
405 }
406 break;
407 34 case 34:
408 34 std::cout << "And that was without even a single drop of rum." << std::endl
409 34 << " - Jack Sparrow, Pirates of the Caribbean " << std::endl;
410 34 break;
411
412 // Note: If you add a case, you have to increase the number of messages (nMessages_ variable).
413
414 default: // silence to delight Bernd
415 return;
416 }
417 893 std::cout << std::endl;
418 }
419 };
420
421 } // end namespace Dumux
422
423 #endif
424