GCC Code Coverage Report


Directory: ../../../builds/dumux-repositories/
File: /builds/dumux-repositories/dumux/dumux/common/dumuxmessage.hh
Date: 2024-09-21 20:52:54
Exec Total Coverage
Lines: 219 219 100.0%
Functions: 1 1 100.0%
Branches: 99 108 91.7%

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