Skip to content

Commit

Permalink
Making code a bit more readable
Browse files Browse the repository at this point in the history
  • Loading branch information
lwasylow committed Jun 19, 2020
1 parent e3fb2d7 commit 322e0a1
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 21 deletions.
43 changes: 28 additions & 15 deletions source/expectations/matchers/ut_be_within.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -75,26 +75,39 @@ create or replace type body ut_be_within as
l_result.expected := ut_data_value_date(a_expected);
return l_result;
end;

overriding member function run_matcher(self in out nocopy ut_be_within, a_actual ut_data_value) return boolean is
l_result boolean;
function l_result_from_number return boolean is
l_expected number := treat(self.expected as ut_data_value_number).data_value;
l_actual number := treat(a_actual as ut_data_value_number).data_value;
l_distance number := treat(self.distance_from_expected as ut_data_value_number).data_value;
begin
return abs(l_expected - l_actual) <= l_distance;
end;

function l_result_from_date(a_distance ut_data_value) return boolean is
l_expected date := treat(self.expected as ut_data_value_date).data_value;
l_actual date := treat(a_actual as ut_data_value_date).data_value;
l_distance_ym yminterval_unconstrained := case when self.distance_from_expected is of ( ut_data_value_yminterval)
then treat(self.distance_from_expected as ut_data_value_yminterval).data_value
end;
l_distance_ds dsinterval_unconstrained := case when self.distance_from_expected is of ( ut_data_value_dsinterval)
then treat(self.distance_from_expected as ut_data_value_dsinterval).data_value
end;
begin
return case when l_distance_ym is not null
then l_actual between l_expected - l_distance_ym and l_expected + l_distance_ym
else l_actual between l_expected - l_distance_ds and l_expected + l_distance_ds
end;
end;

begin
if self.expected.data_type = a_actual.data_type then
if self.expected is of (ut_data_value_number) then
l_result := abs((treat(self.expected as ut_data_value_number).data_value - treat(a_actual as ut_data_value_number).data_value)) <=
treat(self.distance_from_expected as ut_data_value_number).data_value;
elsif self.expected is of (ut_data_value_date) and self.distance_from_expected is of ( ut_data_value_yminterval) then
l_result := treat(a_actual as ut_data_value_date).data_value
between
(treat(self.expected as ut_data_value_date).data_value) - treat(self.distance_from_expected as ut_data_value_yminterval).data_value
and
(treat(self.expected as ut_data_value_date).data_value) + treat(self.distance_from_expected as ut_data_value_yminterval).data_value;
elsif self.expected is of (ut_data_value_date) and self.distance_from_expected is of ( ut_data_value_dsinterval) then
l_result := treat(a_actual as ut_data_value_date).data_value
between
(treat(self.expected as ut_data_value_date).data_value) - treat(self.distance_from_expected as ut_data_value_dsinterval).data_value
and
(treat(self.expected as ut_data_value_date).data_value) + treat(self.distance_from_expected as ut_data_value_dsinterval).data_value;
l_result := l_result_from_number;
elsif self.expected is of (ut_data_value_date)then
l_result := l_result_from_date(self.distance_from_expected);
end if;
else
l_result := (self as ut_matcher).run_matcher(a_actual);
Expand Down
12 changes: 6 additions & 6 deletions test/ut3_user/expectations/binary/test_to_be_within.pks
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,22 @@ create or replace package test_to_be_within is
--%test(gives failure when number is not within distance)
procedure failed_tests;

--%test(check failure message for number not within)
--%test(returns well formatted failure message when expectation fails)
procedure fail_for_number_not_within;

--%test(check failure message for inteval of 1 sec not within)
--%test(returns well formatted failure message for inteval of 1 sec not within)
procedure fail_for_ds_int_not_within;

--%test(check failure message for custom ds interval not within)
--%test(returns well formatted failure message for custom ds interval not within)
procedure fail_for_custom_ds_int;

--%test(check failure message for inteval of 1 month not within)
--%test(returns well formatted failure message for inteval of 1 month not within)
procedure fail_for_ym_int_not_within;

--%test(check failure message for custom ym interval not within)
--%test(returns well formatted failure message for custom ym interval not within)
procedure fail_for_custom_ym_int;

--%test(check failure message for simple within)
--%test(returns well formatted failure message for simple within)
procedure fail_msg_when_not_within;

end;
Expand Down

0 comments on commit 322e0a1

Please sign in to comment.