Skip to content

Commit f2b1750

Browse files
authored
Improve test coverage
2 parents 92e3233 + fd175a0 commit f2b1750

File tree

13 files changed

+611
-188
lines changed

13 files changed

+611
-188
lines changed

Viewer/ecflowUI/src/VRepeatAttr.cpp

+10-7
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include "VAttributeType.hpp"
1616
#include "VNode.hpp"
1717
#include "ecflow/attribute/RepeatRange.hpp"
18-
#include "ecflow/core/Cal.hpp"
18+
#include "ecflow/core/Calendar.hpp"
1919

2020
std::string VRepeatDateAttr::subType_("date");
2121
std::string VRepeatDateTimeAttr::subType_("datetime");
@@ -195,8 +195,8 @@ int VRepeatDateAttr::endIndex() const {
195195
if (node_ptr node = parent_->node()) {
196196
const Repeat& r = node->repeat();
197197
if (r.step() > 0) {
198-
long jStart = Cal::date_to_julian(r.start());
199-
long jEnd = Cal::date_to_julian(r.end());
198+
long jStart = ecf::CalendarDate(r.start()).as_julian_day().value();
199+
long jEnd = ecf::CalendarDate(r.end()).as_julian_day().value();
200200

201201
int index = (jEnd - jStart) / r.step();
202202
long val = jStart + index * r.step();
@@ -213,7 +213,9 @@ int VRepeatDateAttr::endIndex() const {
213213
int VRepeatDateAttr::currentIndex() const {
214214
if (node_ptr node = parent_->node()) {
215215
const Repeat& r = node->repeat();
216-
int cur = (Cal::date_to_julian(r.index_or_value()) - Cal::date_to_julian(r.start())) / r.step();
216+
int cur = (ecf::CalendarDate(r.index_or_value()).as_julian_day().value() -
217+
ecf::CalendarDate(r.start()).as_julian_day().value()) /
218+
r.step();
217219
return cur;
218220
}
219221
return 0;
@@ -239,7 +241,8 @@ std::string VRepeatDateAttr::value(int index) const {
239241
std::stringstream ss;
240242
if (node_ptr node = parent_->node()) {
241243
const Repeat& r = node->repeat();
242-
ss << (Cal::julian_to_date(Cal::date_to_julian(r.start()) + index * r.step()));
244+
auto date = ecf::CalendarDate(r.start()) + (index * r.step());
245+
ss << date.value();
243246
}
244247

245248
return ss.str();
@@ -252,7 +255,7 @@ int VRepeatDateAttr::currentPosition() const {
252255
return -1;
253256
else if (r.value() == r.start())
254257
return 0;
255-
else if (r.value() == r.end() || Cal::date_to_julian(r.value()) + r.step() > Cal::date_to_julian(r.end()))
258+
else if (r.value() == r.end() || ecf::CalendarDate(r.value()) + r.step() > ecf::CalendarDate(r.end()))
256259
return 2;
257260
else
258261
return 1;
@@ -272,7 +275,7 @@ int VRepeatDateTimeAttr::endIndex() const {
272275
auto& r = node->repeat();
273276
auto rng = ecf::make_range<RepeatDateTime>(r);
274277
auto idx = rng.end();
275-
idx = std::min(idx, rng.size() - 1); // ensure idx is within range [0, size-1]
278+
idx = std::min(idx, rng.size() - 1); // ensure idx is within range [0, size-1]
276279
return idx;
277280
}
278281
return 0;

libs/CMakeLists.txt

-2
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,6 @@ set(srcs
230230
${CMAKE_BINARY_DIR}/generated/src/ecflow/core/ecflow_version.h
231231
${CMAKE_BINARY_DIR}/generated/src/ecflow/core/ecflow_source_build_dir.h
232232
core/src/ecflow/core/AssertTimer.hpp
233-
core/src/ecflow/core/Cal.hpp
234233
core/src/ecflow/core/Calendar.hpp
235234
core/src/ecflow/core/CalendarUpdateParams.hpp
236235
core/src/ecflow/core/CheckPt.hpp
@@ -279,7 +278,6 @@ set(srcs
279278
core/src/ecflow/core/exceptions/Exceptions.hpp
280279
# Core -- Sources
281280
core/src/ecflow/core/AssertTimer.cpp
282-
core/src/ecflow/core/Cal.cpp
283281
core/src/ecflow/core/Calendar.cpp
284282
core/src/ecflow/core/Child.cpp
285283
core/src/ecflow/core/Chrono.cpp

libs/attribute/src/ecflow/attribute/RepeatAttr.cpp

+17-34
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include <boost/date_time.hpp>
1717
#include <boost/date_time/posix_time/time_parsers.hpp>
1818

19-
#include "ecflow/core/Cal.hpp"
19+
#include "ecflow/core/Calendar.hpp"
2020
#include "ecflow/core/Converter.hpp"
2121
#include "ecflow/core/Ecf.hpp"
2222
#include "ecflow/core/Indentor.hpp"
@@ -260,8 +260,7 @@ void RepeatDate::update_repeat_genvar_value() const {
260260
dow_.set_value(ecf::convert_to<std::string>(day_of_week));
261261

262262
long last_value = last_valid_value();
263-
long julian = Cal::date_to_julian(last_value);
264-
julian_.set_value(ecf::convert_to<std::string>(julian));
263+
julian_.set_value(ecf::convert_to<std::string>(ecf::CalendarDate(last_value).as_julian_day().value()));
265264
}
266265
catch (std::exception& e) {
267266
std::stringstream ss;
@@ -304,17 +303,13 @@ long RepeatDate::valid_value(long value) const {
304303
}
305304

306305
long RepeatDate::last_valid_value_minus(int val) const {
307-
long last_value = last_valid_value();
308-
long julian = Cal::date_to_julian(last_value);
309-
julian -= val;
310-
return Cal::julian_to_date(julian);
306+
auto result = ecf::CalendarDate(last_valid_value()) - val;
307+
return result.value();
311308
}
312309

313310
long RepeatDate::last_valid_value_plus(int val) const {
314-
long last_value = last_valid_value();
315-
long julian = Cal::date_to_julian(last_value);
316-
julian += val;
317-
return Cal::julian_to_date(julian);
311+
auto result = ecf::CalendarDate(last_valid_value()) + val;
312+
return result.value();
318313
}
319314

320315
void RepeatDate::reset() {
@@ -384,11 +379,8 @@ std::string RepeatDate::value_as_string(int index) const {
384379
}
385380

386381
std::string RepeatDate::next_value_as_string() const {
387-
long val = last_valid_value();
388-
389-
long julian = Cal::date_to_julian(val);
390-
julian += delta_;
391-
val = Cal::julian_to_date(julian);
382+
auto result = ecf::CalendarDate(last_valid_value()) + delta_;
383+
long val = result.value();
392384

393385
try {
394386
return ecf::convert_to<std::string>(valid_value(val));
@@ -399,11 +391,8 @@ std::string RepeatDate::next_value_as_string() const {
399391
}
400392

401393
std::string RepeatDate::prev_value_as_string() const {
402-
long val = last_valid_value();
403-
404-
long julian = Cal::date_to_julian(val);
405-
julian -= delta_;
406-
val = Cal::julian_to_date(julian);
394+
auto result = ecf::CalendarDate(last_valid_value()) - delta_;
395+
long val = result.value();
407396

408397
try {
409398
return ecf::convert_to<std::string>(valid_value(val));
@@ -414,9 +403,8 @@ std::string RepeatDate::prev_value_as_string() const {
414403
}
415404

416405
void RepeatDate::increment() {
417-
long julian = Cal::date_to_julian(value_);
418-
julian += delta_;
419-
set_value(Cal::julian_to_date(julian));
406+
auto result = ecf::CalendarDate(last_valid_value()) + delta_;
407+
set_value(result.value());
420408
}
421409

422410
void RepeatDate::change(const std::string& newdate) {
@@ -469,8 +457,8 @@ void RepeatDate::changeValue(long the_new_date) {
469457
}
470458

471459
// Check new value is in step. ECFLOW-325 repeat date 7
472-
long julian_new_date = Cal::date_to_julian(the_new_date);
473-
long julian_start = Cal::date_to_julian(start_);
460+
long julian_new_date = ecf::CalendarDate(the_new_date).as_julian_day().value();
461+
long julian_start = ecf::CalendarDate(start_).as_julian_day().value();
474462
long diff = julian_new_date - julian_start;
475463
if (diff % delta_ != 0) {
476464
std::stringstream ss;
@@ -913,8 +901,7 @@ void RepeatDateList::update_repeat_genvar_value() const {
913901
dom_.set_value(ecf::convert_to<std::string>(day_of_month));
914902
dow_.set_value(ecf::convert_to<std::string>(day_of_week));
915903

916-
long last_value = last_valid_value();
917-
long julian = Cal::date_to_julian(last_value);
904+
long julian = CalendarDate(last_valid_value()).as_julian_day().value();
918905
julian_.set_value(ecf::convert_to<std::string>(julian));
919906
}
920907
catch (std::exception& e) {
@@ -1001,19 +988,15 @@ long RepeatDateList::last_valid_value_minus(int val) const {
1001988
if (last_value == 0)
1002989
return 0;
1003990

1004-
long julian = Cal::date_to_julian(last_value);
1005-
julian -= val;
1006-
return Cal::julian_to_date(julian);
991+
return (CalendarDate(last_value) - val).value();
1007992
}
1008993

1009994
long RepeatDateList::last_valid_value_plus(int val) const {
1010995
long last_value = last_valid_value();
1011996
if (last_value == 0)
1012997
return 0;
1013998

1014-
long julian = Cal::date_to_julian(last_value);
1015-
julian += val;
1016-
return Cal::julian_to_date(julian);
999+
return (CalendarDate(last_value) + val).value();
10171000
}
10181001

10191002
void RepeatDateList::setToLastValue() {

libs/attribute/src/ecflow/attribute/RepeatAttr.hpp

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
#include <vector>
3030

3131
#include "ecflow/attribute/Variable.hpp"
32-
#include "ecflow/core/Cal.hpp"
3332
#include "ecflow/core/Chrono.hpp"
3433

3534
/////////////////////////////////////////////////////////////////////////

libs/attribute/src/ecflow/attribute/RepeatRange.hpp

+7-6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#define ecflow_attribute_RepeatRange_HPP
1313

1414
#include "ecflow/attribute/RepeatAttr.hpp"
15+
#include "ecflow/core/Calendar.hpp"
1516

1617
namespace ecf {
1718

@@ -54,25 +55,25 @@ struct Range<RepeatDate>
5455

5556
iterator begin() const { return 0; }
5657
iterator end() const {
57-
int i = Cal::date_to_julian(r_.start());
58-
int j = Cal::date_to_julian(r_.end());
58+
int i = ecf::CalendarDate(r_.start()).as_julian_day().value();
59+
int j = ecf::CalendarDate(r_.end()).as_julian_day().value();
5960
int s = r_.step();
6061
int d = (j - i) + 1;
6162
return (d / s) + ((d % s == 0) ? 0 : 1);
6263
}
6364
iterator current_index() const {
64-
auto i = Cal::date_to_julian(r_.start());
65+
auto i = ecf::CalendarDate(r_.start()).as_julian_day().value();
6566
auto s = r_.step();
66-
auto v = Cal::date_to_julian(r_.value());
67+
auto v = ecf::CalendarDate(r_.value()).as_julian_day().value();
6768
auto idx = (v - i) / s;
6869
return idx;
6970
}
7071

7172
value_type current_value() const { return r_.value(); }
7273

7374
value_type at(iterator i) const {
74-
int j = Cal::date_to_julian(r_.start());
75-
return Cal::julian_to_date(j + i * r_.step());
75+
int j = ecf::CalendarDate(r_.start()).as_julian_day().value();
76+
return ecf::JulianDay(j + i * r_.step()).as_calendar_date().value();
7677
}
7778

7879
size_type size() const { return end() - begin(); }

libs/attribute/test/TestRepeat.cpp

+9-9
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include <boost/test/unit_test.hpp>
1515

1616
#include "ecflow/attribute/RepeatAttr.hpp"
17-
#include "ecflow/core/Cal.hpp"
17+
#include "ecflow/core/Calendar.hpp"
1818
#include "ecflow/core/Converter.hpp"
1919
#include "ecflow/test/scaffold/Naming.hpp"
2020

@@ -530,7 +530,7 @@ BOOST_AUTO_TEST_CASE(generated_variables) {
530530
{
531531
const Variable& var = rep.find_gen_variable("YMD_JULIAN");
532532
BOOST_CHECK_MESSAGE(!var.empty(), "Did not find generated variable YMD_JULIAN");
533-
std::string expected = ecf::convert_to<std::string>(Cal::date_to_julian(20090916));
533+
std::string expected = ecf::convert_to<std::string>(ecf::CalendarDate(20090916).as_julian_day().value());
534534
BOOST_CHECK_MESSAGE(var.theValue() == expected, "expected " << expected << " but found " << var.theValue());
535535
}
536536
}
@@ -597,13 +597,13 @@ BOOST_AUTO_TEST_CASE(more_generated_variables) {
597597
expected_day_of_week.emplace_back("5");
598598

599599
std::vector<std::string> expected_julian;
600-
expected_julian.push_back(ecf::convert_to<std::string>(Cal::date_to_julian(20161231)));
601-
expected_julian.push_back(ecf::convert_to<std::string>(Cal::date_to_julian(20170101)));
602-
expected_julian.push_back(ecf::convert_to<std::string>(Cal::date_to_julian(20170102)));
603-
expected_julian.push_back(ecf::convert_to<std::string>(Cal::date_to_julian(20170103)));
604-
expected_julian.push_back(ecf::convert_to<std::string>(Cal::date_to_julian(20170104)));
605-
expected_julian.push_back(ecf::convert_to<std::string>(Cal::date_to_julian(20170105)));
606-
expected_julian.push_back(ecf::convert_to<std::string>(Cal::date_to_julian(20170106)));
600+
expected_julian.push_back(ecf::convert_to<std::string>(ecf::CalendarDate(20161231).as_julian_day().value()));
601+
expected_julian.push_back(ecf::convert_to<std::string>(ecf::CalendarDate(20170101).as_julian_day().value()));
602+
expected_julian.push_back(ecf::convert_to<std::string>(ecf::CalendarDate(20170102).as_julian_day().value()));
603+
expected_julian.push_back(ecf::convert_to<std::string>(ecf::CalendarDate(20170103).as_julian_day().value()));
604+
expected_julian.push_back(ecf::convert_to<std::string>(ecf::CalendarDate(20170104).as_julian_day().value()));
605+
expected_julian.push_back(ecf::convert_to<std::string>(ecf::CalendarDate(20170105).as_julian_day().value()));
606+
expected_julian.push_back(ecf::convert_to<std::string>(ecf::CalendarDate(20170106).as_julian_day().value()));
607607

608608
for (int i = 0; i < 7; i++) {
609609

libs/core/src/ecflow/core/Cal.cpp

-71
This file was deleted.

libs/core/src/ecflow/core/Cal.hpp

-26
This file was deleted.

0 commit comments

Comments
 (0)