GCC Code Coverage Report


./
File: tests/test_IsotopicDataManualConfigHandler.cpp
Date: 2024-08-24 11:26:06
Lines:
56/56
100.0%
Functions:
3/3
100.0%
Branches:
179/384
46.6%

Line Branch Exec Source
1 // ./tests/catch2-tests [section] -s
2
3
4 /////////////////////// Qt includes
5 #include <QDebug>
6 #include <QString>
7 #include <QDir>
8
9 /////////////////////// IsoSpec
10 #include <IsoSpec++/isoSpec++.h>
11 #include <IsoSpec++/element_tables.h>
12
13
14 /////////////////////// Catch2 includes
15 #include <catch2/catch_test_macros.hpp>
16
17 /////////////////////// Local includes
18 #include "tests-config.h"
19 #include <libXpertMass/Isotope.hpp>
20 #include <libXpertMass/IsotopicDataManualConfigHandler.hpp>
21
22 namespace MsXpS
23 {
24
25 namespace libXpertMass
26 {
27
28 QString file_base_name = "one-C14-radioactive-on-glucose-manual-config.dat";
29
30 QString isotopic_data_input_file_name =
31 QString("%1/%2/%3").arg(TESTS_INPUT_DIR).arg("isotopes", file_base_name);
32
33 QDir dir;
34 QString isotopes_output_dir =
35 QString("%1/%2").arg(TESTS_OUTPUT_DIR, "isotopes");
36
37 QString isotopic_data_output_file_name =
38 QString("%1/%2").arg(isotopes_output_dir, file_base_name);
39 // qDebug() << "The output file name: " <<
40 // isotopic_data_output_file_name.toStdString() << std::endl;
41
42 8 SCENARIO("IsotopicDataManualConfigHandler loads data from file")
43 {
44
45 IsotopicDataManualConfigHandler iso_data_user_config_handler(
46
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
8 isotopic_data_input_file_name);
47
48
8/14
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✓ Branch 24 taken 4 times.
8 WHEN("Constructed, the data are empty")
49 {
50
51
7/14
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 4 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✗ Branch 24 not taken.
4 THEN("The isotopic data are empty but they are allocated")
52 {
53
6/16
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 22 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
4 REQUIRE(iso_data_user_config_handler.getIsotopicData() != nullptr);
54 4 }
55 8 }
56
57
8/14
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✓ Branch 24 taken 4 times.
8 AND_WHEN("Loading isotopic data from a user config file")
58 {
59 std::size_t loaded_isotope_count =
60
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 iso_data_user_config_handler.loadData(isotopic_data_input_file_name);
61
62
7/14
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 4 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✗ Branch 24 not taken.
4 THEN("The number of isotopes loaded is checked")
63 {
64
5/14
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 4 times.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
4 REQUIRE(loaded_isotope_count > 0);
65
7/18
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 4 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 4 times.
✗ Branch 21 not taken.
✓ Branch 25 taken 4 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
4 REQUIRE(iso_data_user_config_handler.getIsotopicData()->size() ==
66 loaded_isotope_count);
67 4 }
68 8 }
69 8 }
70
71 8 SCENARIO("IsotopicDataManualConfigHandler writes data to file")
72 {
73
74
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
8 bool result = dir.mkpath(isotopes_output_dir);
75
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 8 times.
8 assert(result);
76
77 IsotopicDataManualConfigHandler iso_data_user_config_handler(
78
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
8 isotopic_data_input_file_name);
79
80
7/14
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 8 times.
✗ Branch 24 not taken.
8 WHEN("Data have been loaded, the data are checked")
81 {
82 std::size_t loaded_isotope_count =
83
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
8 iso_data_user_config_handler.loadData(isotopic_data_input_file_name);
84
85
8/14
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✓ Branch 24 taken 4 times.
8 THEN("The number of isotopes loaded is checked")
86 {
87
7/18
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 4 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 4 times.
✗ Branch 21 not taken.
✓ Branch 25 taken 4 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
4 REQUIRE(iso_data_user_config_handler.getIsotopicData()->size() ==
88 loaded_isotope_count);
89 8 }
90
91
8/14
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✓ Branch 24 taken 4 times.
8 AND_WHEN("Isotopic data are written to file")
92 {
93
94 std::size_t written_isotope_count =
95
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 iso_data_user_config_handler.writeData(isotopic_data_output_file_name);
96
97
7/14
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 4 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✗ Branch 24 not taken.
4 THEN("The count of written isotopes is checked")
98 {
99
5/14
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 4 times.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
4 REQUIRE(written_isotope_count == loaded_isotope_count);
100 4 }
101 8 }
102 8 }
103 8 }
104
105 12 SCENARIO(
106 "IsotopicDataManualConfigHandler loads data from file previously "
107 "written by writeDate test")
108 {
109
110 IsotopicDataManualConfigHandler iso_data_user_config_handler(
111
1/2
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
12 isotopic_data_input_file_name);
112
113
8/14
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 12 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 12 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 12 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 12 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✓ Branch 24 taken 8 times.
12 WHEN("Constructed, the data are empty")
114 {
115
116
7/14
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 4 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✗ Branch 24 not taken.
4 THEN("The isotopic data are empty but they are allocated")
117 {
118
6/16
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 22 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
4 REQUIRE(iso_data_user_config_handler.getIsotopicData() != nullptr);
119 4 }
120 12 }
121
122
8/14
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 12 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 12 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 12 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 12 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✓ Branch 24 taken 8 times.
12 AND_WHEN("Loading isotopic data from a user config file")
123 {
124 std::size_t loaded_isotope_count =
125
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 iso_data_user_config_handler.loadData(isotopic_data_output_file_name);
126
127
7/14
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 4 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✗ Branch 24 not taken.
4 THEN("The number of isotopes loaded is checked")
128 {
129
5/14
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 4 times.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
4 REQUIRE(loaded_isotope_count > 0);
130
7/18
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 4 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 4 times.
✗ Branch 21 not taken.
✓ Branch 25 taken 4 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
4 REQUIRE(iso_data_user_config_handler.getIsotopicData()->size() ==
131 loaded_isotope_count);
132 4 }
133 12 }
134
135
8/14
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 12 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 12 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 12 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 12 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✓ Branch 24 taken 8 times.
12 AND_WHEN("A new IsotopicDataManualConfigHandler instance is copy constructed")
136 {
137 long use_count_before_copy =
138
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 iso_data_user_config_handler.getIsotopicData().use_count();
139
140 IsotopicDataManualConfigHandler iso_data_user_config_handler_1(
141
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 iso_data_user_config_handler);
142
143
7/14
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 15 taken 4 times.
✗ Branch 16 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✗ Branch 24 not taken.
4 THEN("The instances are checked and should be identical")
144 {
145
9/22
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 4 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 4 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 4 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 4 times.
✗ Branch 28 not taken.
✓ Branch 33 taken 4 times.
✗ Branch 34 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
4 REQUIRE(iso_data_user_config_handler.getIsotopicData()->size() ==
146 iso_data_user_config_handler_1.getIsotopicData()->size());
147
148 long use_count_after_copy =
149
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 iso_data_user_config_handler.getIsotopicData().use_count();
150
151
5/14
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 4 times.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
4 REQUIRE(use_count_after_copy == use_count_before_copy + 1);
152 4 }
153 16 }
154 12 }
155
156
157 } // namespace libXpertMass
158 } // namespace MsXpS
159