TerrainGen coverage


terraingen/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
26 / 26
100.0%
Branches:
10 / 10
100.0%
Functions:
9 / 9
100.0%

layers/craters/ages/age_model.cpp
Line Branch Exec Source
1 #include "terraingen/layers/craters/ages/age_model.h"
2
3 #include "terraingen/util/checks.h"
4
5 #include <algorithm>
6 #include <cmath>
7 #include <stdexcept>
8
9 namespace terraingen {
10
11 namespace {
12
13 3738684 void CheckDiameter(double diameter) {
14
2/2
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 3738681 times.
3738684 if (!IsPositive(diameter)) {
15
1/1
✓ Branch 2 taken 3 times.
3 throw std::domain_error("Diameter must be positive and finite");
16 }
17 3738681 }
18
19 } // namespace
20
21 3738684 double CraterAgeModel::LifetimeGyr(double diameter) const {
22 3738684 CheckDiameter(diameter);
23 3738681 return LifetimeAt(diameter);
24 }
25
26 3252669 double CraterAgeModel::SampleAgeGyr(RandomStream& random, double diameter) const {
27
1/1
✓ Branch 1 taken 3252668 times.
3252669 const double lifetime = LifetimeGyr(diameter);
28
2/2
✓ Branch 1 taken 3252668 times.
✓ Branch 4 taken 3252668 times.
3252668 return std::clamp(SampleAgeAt(random, diameter, lifetime), 0.0, lifetime);
29 }
30
31 485983 double CraterAgeModel::RemainingLifetime(double diameter, double ageGyr) const {
32 485983 const double lifetime = LifetimeGyr(diameter);
33
2/2
✓ Branch 0 taken 195082 times.
✓ Branch 1 taken 290900 times.
485982 if (lifetime == 0.0) {
34 195082 return 1.0;
35 }
36
1/1
✓ Branch 1 taken 290900 times.
290900 return std::clamp(1.0 - ageGyr / lifetime, 0.0, 1.0);
37 }
38
39 1639352 double FreshAges::LifetimeAt(double /*diameter*/) const {
40 1639352 return 0.0;
41 }
42
43 1444268 double FreshAges::SampleAgeAt(RandomStream& /*random*/, double /*diameter*/,
44 double /*lifetimeGyr*/) const {
45 1444268 return 0.0;
46 }
47
48 1611 UniformAges::UniformAges(double lifetimeGyr) : lifetimeGyr_(lifetimeGyr) {
49
1/1
✓ Branch 2 taken 1606 times.
1611 RequirePositive(lifetimeGyr_, "Lifetime");
50 1611 }
51
52 1075597 double UniformAges::LifetimeAt(double /*diameter*/) const {
53 1075597 return lifetimeGyr_;
54 }
55
56 1019842 double UniformAges::SampleAgeAt(RandomStream& random, double /*diameter*/,
57 double lifetimeGyr) const {
58 1019842 return random.NextDouble() * lifetimeGyr;
59 }
60
61 } // namespace terraingen
62