Skip to content

Commit f459cce

Browse files
committed
more unit tests and patches
1 parent c45a67b commit f459cce

File tree

4 files changed

+34
-14
lines changed

4 files changed

+34
-14
lines changed

cpp/purify/h5reader.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#include "purify/config.h"
44
#include "purify/types.h"
55
#include "purify/logging.h"
6-
//#include "purify/uvw_utilities.h"
76

87
#include "highfive/H5File.hpp"
98

cpp/purify/uvw_utilities.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,9 @@ utilities::vis_params read_visibility_h5(const std::string &vis_name, const bool
248248
std::vector<t_real> wtemp = vis_file.read<t_real>("w");
249249
uv_vis.w = Eigen::Map<Vector<t_real>>(wtemp.data(), wtemp.size(), 1);
250250
}
251+
else {
252+
uv_vis.w = Vector<t_real>::Zero(utemp.size());
253+
}
251254

252255
std::vector<t_real> retemp = vis_file.read<t_real>("re");
253256
std::vector<t_real> imtemp = vis_file.read<t_real>("im");
@@ -270,11 +273,8 @@ utilities::vis_params read_visibility_h5(const std::string &vis_name, const bool
270273

271274
utilities::vis_params read_visibility(const std::string &vis_name, const bool w_term) {
272275

273-
if ( has_suffix(vis_name, ".csv") ) return read_visibility_csv(vis_name, w_term);
274-
else if ( has_suffix(vis_name, ".h5") ) return read_visibility_h5(vis_name, w_term);
275-
276-
throw std::runtime_error("File type not supported!");
277-
276+
if ( has_suffix(vis_name, ".h5") ) return read_visibility_h5(vis_name, w_term);
277+
return read_visibility_csv(vis_name, w_term);
278278
}
279279

280280
void write_visibility(const utilities::vis_params &uv_vis, const std::string &file_name,

cpp/tests/purify_h5.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ using namespace purify::notinstalled;
1515

1616
TEST_CASE("Purify H5", "[HDF5]") {
1717

18-
H5Handler f(atca_filename("0332-391") + ".h5");
18+
H5Handler f(atca_filename("0332-391.h5"));
1919

2020
const std::vector<double> u = f.read("u");
2121
const std::vector<double> v = f.read("v");

cpp/tests/utils.cc

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,26 @@ TEST_CASE("utilities [read_write_vis]", "[read_write_vis]") {
110110
CHECK(new_random_uv_data.weights.isApprox(random_uv_data.weights, 1e-8));
111111
}
112112
TEST_CASE("read_mutiple_vis") {
113-
std::string vis_file = vla_filename("at166B.3C129.c0.vis");
114-
SECTION("one file") {
115-
const std::vector<std::string> names = {vis_file};
116-
const auto uv_data = utilities::read_visibility(vis_file);
113+
std::string csv_file = vla_filename("at166B.3C129.c0.vis");
114+
std::string h5_file = atca_filename("0332-391.h5");
115+
SECTION("one csv file") {
116+
const std::vector<std::string> names = {csv_file};
117+
const auto uv_data = utilities::read_visibility(csv_file);
118+
const auto uv_multi = utilities::read_visibility(names);
119+
CAPTURE(names.size());
120+
CAPTURE(uv_data.size());
121+
CHECK(uv_data.size() * names.size() == uv_multi.size());
122+
for (int i = 0; i < names.size(); i++) {
123+
CHECK(uv_data.u.isApprox(uv_multi.u.segment(i * uv_data.size(), uv_data.size())));
124+
CHECK(uv_data.v.isApprox(uv_multi.v.segment(i * uv_data.size(), uv_data.size())));
125+
CHECK(uv_data.w.isApprox(uv_multi.w.segment(i * uv_data.size(), uv_data.size())));
126+
CHECK(uv_data.vis.isApprox(uv_multi.vis.segment(i * uv_data.size(), uv_data.size())));
127+
CHECK(uv_data.weights.isApprox(uv_multi.weights.segment(i * uv_data.size(), uv_data.size())));
128+
}
129+
}
130+
SECTION("many csv files") {
131+
const std::vector<std::string> names = {csv_file, csv_file, csv_file};
132+
const auto uv_data = utilities::read_visibility(csv_file);
117133
const auto uv_multi = utilities::read_visibility(names);
118134
CAPTURE(names.size());
119135
CAPTURE(uv_data.size());
@@ -126,12 +142,17 @@ TEST_CASE("read_mutiple_vis") {
126142
CHECK(uv_data.weights.isApprox(uv_multi.weights.segment(i * uv_data.size(), uv_data.size())));
127143
}
128144
}
129-
SECTION("many files") {
130-
const std::vector<std::string> names = {vis_file, vis_file, vis_file};
131-
const auto uv_data = utilities::read_visibility(vis_file);
145+
SECTION("one HDF5 file") {
146+
const std::vector<std::string> names = {h5_file};
147+
const auto uv_data = utilities::read_visibility(h5_file);
132148
const auto uv_multi = utilities::read_visibility(names);
133149
CAPTURE(names.size());
134150
CAPTURE(uv_data.size());
151+
CAPTURE(uv_data.u.size());
152+
CAPTURE(uv_data.v.size());
153+
CAPTURE(uv_data.w.size());
154+
CAPTURE(uv_data.vis.size());
155+
CAPTURE(uv_data.weights.size());
135156
CHECK(uv_data.size() * names.size() == uv_multi.size());
136157
for (int i = 0; i < names.size(); i++) {
137158
CHECK(uv_data.u.isApprox(uv_multi.u.segment(i * uv_data.size(), uv_data.size())));

0 commit comments

Comments
 (0)