diff --git a/source/core/ut_utils.pkb b/source/core/ut_utils.pkb index bcf5bca6d..2a282caad 100644 --- a/source/core/ut_utils.pkb +++ b/source/core/ut_utils.pkb @@ -114,6 +114,16 @@ create or replace package body ut_utils is begin return coalesce(to_char(a_value,gc_timestamp_format), gc_null_string); end; + + function to_string(a_value yminterval_unconstrained) return varchar2 IS + begin + return coalesce(to_char(a_value), gc_null_string); + end; + + function to_string(a_value dsinterval_unconstrained) return varchar2 IS + begin + return coalesce(to_char(a_value), gc_null_string); + end; function boolean_to_int(a_value boolean) return integer is diff --git a/source/core/ut_utils.pks b/source/core/ut_utils.pks index 714b98e77..c69e56536 100644 --- a/source/core/ut_utils.pks +++ b/source/core/ut_utils.pks @@ -28,7 +28,7 @@ create or replace package ut_utils authid definer is ex_unsupported_rollback_type exception; gc_unsupported_rollback_type constant pls_integer := -20200; pragma exception_init(ex_unsupported_rollback_type, -20200); - + ex_path_list_is_empty exception; gc_path_list_is_empty constant pls_integer := -20201; pragma exception_init(ex_path_list_is_empty, -20201); @@ -36,7 +36,7 @@ create or replace package ut_utils authid definer is ex_invalid_path_format exception; gc_invalid_path_format constant pls_integer := -20202; pragma exception_init(ex_invalid_path_format, -20202); - + gc_max_output_string_length constant integer := 4000; gc_max_input_string_length constant integer := gc_max_output_string_length - 2; --we need to remove 2 chars for quotes around string @@ -84,6 +84,10 @@ create or replace package ut_utils authid definer is function to_string(a_value timestamp_ltz_unconstrained) return varchar2; + function to_string(a_value yminterval_unconstrained) return varchar2; + + function to_string(a_value dsinterval_unconstrained) return varchar2; + function boolean_to_int(a_value boolean) return integer; function int_to_boolean(a_value integer) return boolean; diff --git a/source/expectations/data_values/ut_data_value_dsinterval.tpb b/source/expectations/data_values/ut_data_value_dsinterval.tpb new file mode 100644 index 000000000..0f7b7b030 --- /dev/null +++ b/source/expectations/data_values/ut_data_value_dsinterval.tpb @@ -0,0 +1,21 @@ +create or replace type body ut_data_value_dsinterval as + + constructor function ut_data_value_dsinterval(self in out nocopy ut_data_value_dsinterval, a_value dsinterval_unconstrained) return self as result is + begin + self.datavalue := a_value; + self.datatype := 'day to second interval'; + return; + end; + + overriding member function is_null return boolean is + begin + return (self.datavalue is null); + end; + + overriding member function to_string return varchar2 is + begin + return ut_utils.to_string(self.datavalue); + end; + +end; +/ diff --git a/source/expectations/data_values/ut_data_value_dsinterval.tps b/source/expectations/data_values/ut_data_value_dsinterval.tps new file mode 100644 index 000000000..3a2119468 --- /dev/null +++ b/source/expectations/data_values/ut_data_value_dsinterval.tps @@ -0,0 +1,7 @@ +create or replace type ut_data_value_dsinterval under ut_data_value( + datavalue dsinterval_unconstrained, + constructor function ut_data_value_dsinterval(self in out nocopy ut_data_value_dsinterval, a_value dsinterval_unconstrained) return self as result, + overriding member function is_null return boolean, + overriding member function to_string return varchar2 +) +/ diff --git a/source/expectations/data_values/ut_data_value_yminterval.tpb b/source/expectations/data_values/ut_data_value_yminterval.tpb new file mode 100644 index 000000000..1744100bd --- /dev/null +++ b/source/expectations/data_values/ut_data_value_yminterval.tpb @@ -0,0 +1,21 @@ +create or replace type body ut_data_value_yminterval as + + constructor function ut_data_value_yminterval(self in out nocopy ut_data_value_yminterval, a_value yminterval_unconstrained) return self as result is + begin + self.datavalue := a_value; + self.datatype := 'year to month interval'; + return; + end; + + overriding member function is_null return boolean is + begin + return (self.datavalue is null); + end; + + overriding member function to_string return varchar2 is + begin + return ut_utils.to_string(self.datavalue); + end; + +end; +/ diff --git a/source/expectations/data_values/ut_data_value_yminterval.tps b/source/expectations/data_values/ut_data_value_yminterval.tps new file mode 100644 index 000000000..c58c029fe --- /dev/null +++ b/source/expectations/data_values/ut_data_value_yminterval.tps @@ -0,0 +1,7 @@ +create or replace type ut_data_value_yminterval under ut_data_value( + datavalue yminterval_unconstrained, + constructor function ut_data_value_yminterval(self in out nocopy ut_data_value_yminterval, a_value yminterval_unconstrained) return self as result, + overriding member function is_null return boolean, + overriding member function to_string return varchar2 +) +/ diff --git a/source/expectations/matchers/be_between.tpb b/source/expectations/matchers/be_between.tpb index 3b733cb88..651f4bbe9 100644 --- a/source/expectations/matchers/be_between.tpb +++ b/source/expectations/matchers/be_between.tpb @@ -44,6 +44,20 @@ create or replace type body be_between is init(ut_data_value_timestamp_ltz(a_lower_bound), ut_data_value_timestamp_ltz(a_upper_bound)); return; end; + + constructor function be_between(self in out nocopy be_between, a_lower_bound yminterval_unconstrained, a_upper_bound yminterval_unconstrained) + return self as result is + begin + init(ut_data_value_yminterval(a_lower_bound), ut_data_value_yminterval(a_upper_bound)); + return; + end; + + constructor function be_between(self in out nocopy be_between, a_lower_bound dsinterval_unconstrained, a_upper_bound dsinterval_unconstrained) + return self as result is + begin + init(ut_data_value_dsinterval(a_lower_bound), ut_data_value_dsinterval(a_upper_bound)); + return; + end; overriding member function run_matcher(self in out nocopy be_between, a_actual ut_data_value) return boolean is l_result boolean; @@ -96,6 +110,22 @@ create or replace type body be_between is begin l_result := l_actual.datavalue between l_lower.datavalue and l_upper.datavalue; end; + elsif self.lower_bound is of(ut_data_value_yminterval) and self.upper_bound is of(ut_data_value_yminterval) and a_actual is of(ut_data_value_yminterval) then + declare + l_lower ut_data_value_yminterval := treat(self.lower_bound as ut_data_value_yminterval); + l_upper ut_data_value_yminterval := treat(self.upper_bound as ut_data_value_yminterval); + l_actual ut_data_value_yminterval := treat(a_actual as ut_data_value_yminterval); + begin + l_result := l_actual.datavalue between l_lower.datavalue and l_upper.datavalue; + end; + elsif self.lower_bound is of(ut_data_value_dsinterval) and self.upper_bound is of(ut_data_value_dsinterval) and a_actual is of(ut_data_value_dsinterval) then + declare + l_lower ut_data_value_dsinterval := treat(self.lower_bound as ut_data_value_dsinterval); + l_upper ut_data_value_dsinterval := treat(self.upper_bound as ut_data_value_dsinterval); + l_actual ut_data_value_dsinterval := treat(a_actual as ut_data_value_dsinterval); + begin + l_result := l_actual.datavalue between l_lower.datavalue and l_upper.datavalue; + end; else l_result := (self as ut_matcher).run_matcher(a_actual); end if; diff --git a/source/expectations/matchers/be_between.tps b/source/expectations/matchers/be_between.tps index 1cfdef430..02fb27f70 100644 --- a/source/expectations/matchers/be_between.tps +++ b/source/expectations/matchers/be_between.tps @@ -17,6 +17,10 @@ create or replace type be_between under ut_matcher return self as result, constructor function be_between(self in out nocopy be_between, a_lower_bound timestamp_ltz_unconstrained, a_upper_bound timestamp_ltz_unconstrained) return self as result, + constructor function be_between(self in out nocopy be_between, a_lower_bound yminterval_unconstrained, a_upper_bound yminterval_unconstrained) + return self as result, + constructor function be_between(self in out nocopy be_between, a_lower_bound dsinterval_unconstrained, a_upper_bound dsinterval_unconstrained) + return self as result, overriding member function run_matcher(self in out nocopy be_between, a_actual ut_data_value) return boolean ) diff --git a/source/expectations/matchers/be_greater_or_equal.tpb b/source/expectations/matchers/be_greater_or_equal.tpb new file mode 100644 index 000000000..501b72972 --- /dev/null +++ b/source/expectations/matchers/be_greater_or_equal.tpb @@ -0,0 +1,110 @@ +create or replace type body be_greater_or_equal AS + + member procedure init(self in out nocopy be_greater_or_equal, a_expected ut_data_value) is + begin + self.name := lower($$plsql_unit); + self.expected := a_expected; + end; + + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected date) return self as result is + begin + init(ut_data_value_date(a_expected)); + return; + end; + + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected NUMBER) return self as result is + begin + init(ut_data_value_number(a_expected)); + return; + end; + + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_unconstrained) return self as result is + begin + init(ut_data_value_timestamp(a_expected)); + return; + end; + + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_tz_unconstrained) return self as result is + begin + init(ut_data_value_timestamp_tz(a_expected)); + return; + end; + + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_ltz_unconstrained) return self as result is + begin + init(ut_data_value_timestamp_ltz(a_expected)); + return; + end; + + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected yminterval_unconstrained) return self as RESULT IS + begin + init(ut_data_value_yminterval(a_expected)); + return; + end; + + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected dsinterval_unconstrained) return self as RESULT IS + begin + init(ut_data_value_dsinterval(a_expected)); + return; + end; + + overriding member function run_matcher(self in out nocopy be_greater_or_equal, a_actual ut_data_value) return boolean is + l_result boolean; + begin + if self.expected is of (ut_data_value_date) and a_actual is of (ut_data_value_date) then + declare + l_expected ut_data_value_date := treat(self.expected as ut_data_value_date); + l_actual ut_data_value_date := treat(a_actual as ut_data_value_date); + begin + l_result := l_actual.datavalue >= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_number) and a_actual is of (ut_data_value_number) then + declare + l_expected ut_data_value_number := treat(self.expected as ut_data_value_number); + l_actual ut_data_value_number := treat(a_actual as ut_data_value_number); + begin + l_result := l_actual.datavalue >= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_timestamp) and a_actual is of (ut_data_value_timestamp) then + declare + l_expected ut_data_value_timestamp := treat(self.expected as ut_data_value_timestamp); + l_actual ut_data_value_timestamp := treat(a_actual as ut_data_value_timestamp); + begin + l_result := l_actual.datavalue >= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_timestamp_ltz) and a_actual is of (ut_data_value_timestamp_ltz) then + declare + l_expected ut_data_value_timestamp_ltz := treat(self.expected as ut_data_value_timestamp_ltz); + l_actual ut_data_value_timestamp_ltz := treat(a_actual as ut_data_value_timestamp_ltz); + begin + l_result := l_actual.datavalue >= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_timestamp_tz) and a_actual is of (ut_data_value_timestamp_tz) then + declare + l_expected ut_data_value_timestamp_tz := treat(self.expected as ut_data_value_timestamp_tz); + l_actual ut_data_value_timestamp_tz := treat(a_actual as ut_data_value_timestamp_tz); + begin + l_result := l_actual.datavalue >= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_yminterval) and a_actual is of (ut_data_value_yminterval) then + declare + l_expected ut_data_value_yminterval := treat(self.expected as ut_data_value_yminterval); + l_actual ut_data_value_yminterval := treat(a_actual as ut_data_value_yminterval); + begin + l_result := l_actual.datavalue >= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_dsinterval) and a_actual is of (ut_data_value_dsinterval) then + declare + l_expected ut_data_value_dsinterval := treat(self.expected as ut_data_value_dsinterval); + l_actual ut_data_value_dsinterval := treat(a_actual as ut_data_value_dsinterval); + begin + l_result := l_actual.datavalue >= l_expected.datavalue; + end; + else + l_result := (self as ut_matcher).run_matcher(a_actual); + end if; + return l_result; + end; + +END; +/ diff --git a/source/expectations/matchers/be_greater_or_equal.tps b/source/expectations/matchers/be_greater_or_equal.tps new file mode 100644 index 000000000..8f53144b6 --- /dev/null +++ b/source/expectations/matchers/be_greater_or_equal.tps @@ -0,0 +1,12 @@ +create or replace type be_greater_or_equal under ut_matcher( + member procedure init(self in out nocopy be_greater_or_equal, a_expected ut_data_value), + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected date) return self as result, + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected number) return self as result, + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_unconstrained) return self as result, + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_tz_unconstrained) return self as result, + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_ltz_unconstrained) return self as result, + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected yminterval_unconstrained) return self as result, + constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected dsinterval_unconstrained) return self as result, + overriding member function run_matcher(self in out nocopy be_greater_or_equal, a_actual ut_data_value) return boolean +) +/ diff --git a/source/expectations/matchers/be_greater_than.tpb b/source/expectations/matchers/be_greater_than.tpb new file mode 100644 index 000000000..8b97b9102 --- /dev/null +++ b/source/expectations/matchers/be_greater_than.tpb @@ -0,0 +1,110 @@ +create or replace type body be_greater_than AS + + member procedure init(self in out nocopy be_greater_than, a_expected ut_data_value) is + begin + self.name := lower($$plsql_unit); + self.expected := a_expected; + end; + + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected date) return self as result is + begin + init(ut_data_value_date(a_expected)); + return; + end; + + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected NUMBER) return self as result is + begin + init(ut_data_value_number(a_expected)); + return; + end; + + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected timestamp_unconstrained) return self as result is + begin + init(ut_data_value_timestamp(a_expected)); + return; + end; + + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected timestamp_tz_unconstrained) return self as result is + begin + init(ut_data_value_timestamp_tz(a_expected)); + return; + end; + + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected timestamp_ltz_unconstrained) return self as result is + begin + init(ut_data_value_timestamp_ltz(a_expected)); + return; + end; + + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected yminterval_unconstrained) return self as RESULT IS + begin + init(ut_data_value_yminterval(a_expected)); + return; + end; + + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected dsinterval_unconstrained) return self as RESULT IS + begin + init(ut_data_value_dsinterval(a_expected)); + return; + end; + + overriding member function run_matcher(self in out nocopy be_greater_than, a_actual ut_data_value) return boolean is + l_result boolean; + begin + if self.expected is of (ut_data_value_date) and a_actual is of (ut_data_value_date) then + declare + l_expected ut_data_value_date := treat(self.expected as ut_data_value_date); + l_actual ut_data_value_date := treat(a_actual as ut_data_value_date); + begin + l_result := l_actual.datavalue > l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_number) and a_actual is of (ut_data_value_number) then + declare + l_expected ut_data_value_number := treat(self.expected as ut_data_value_number); + l_actual ut_data_value_number := treat(a_actual as ut_data_value_number); + begin + l_result := l_actual.datavalue > l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_timestamp) and a_actual is of (ut_data_value_timestamp) then + declare + l_expected ut_data_value_timestamp := treat(self.expected as ut_data_value_timestamp); + l_actual ut_data_value_timestamp := treat(a_actual as ut_data_value_timestamp); + begin + l_result := l_actual.datavalue > l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_timestamp_ltz) and a_actual is of (ut_data_value_timestamp_ltz) then + declare + l_expected ut_data_value_timestamp_ltz := treat(self.expected as ut_data_value_timestamp_ltz); + l_actual ut_data_value_timestamp_ltz := treat(a_actual as ut_data_value_timestamp_ltz); + begin + l_result := l_actual.datavalue > l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_timestamp_tz) and a_actual is of (ut_data_value_timestamp_tz) then + declare + l_expected ut_data_value_timestamp_tz := treat(self.expected as ut_data_value_timestamp_tz); + l_actual ut_data_value_timestamp_tz := treat(a_actual as ut_data_value_timestamp_tz); + begin + l_result := l_actual.datavalue > l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_yminterval) and a_actual is of (ut_data_value_yminterval) then + declare + l_expected ut_data_value_yminterval := treat(self.expected as ut_data_value_yminterval); + l_actual ut_data_value_yminterval := treat(a_actual as ut_data_value_yminterval); + begin + l_result := l_actual.datavalue > l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_dsinterval) and a_actual is of (ut_data_value_dsinterval) then + declare + l_expected ut_data_value_dsinterval := treat(self.expected as ut_data_value_dsinterval); + l_actual ut_data_value_dsinterval := treat(a_actual as ut_data_value_dsinterval); + begin + l_result := l_actual.datavalue > l_expected.datavalue; + end; + else + l_result := (self as ut_matcher).run_matcher(a_actual); + end if; + return l_result; + end; + +END; +/ diff --git a/source/expectations/matchers/be_greater_than.tps b/source/expectations/matchers/be_greater_than.tps new file mode 100644 index 000000000..f7fa3fa64 --- /dev/null +++ b/source/expectations/matchers/be_greater_than.tps @@ -0,0 +1,12 @@ +create or replace type be_greater_than under ut_matcher( + member procedure init(self in out nocopy be_greater_than, a_expected ut_data_value), + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected date) return self as result, + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected number) return self as result, + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected timestamp_unconstrained) return self as result, + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected timestamp_tz_unconstrained) return self as result, + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected timestamp_ltz_unconstrained) return self as result, + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected yminterval_unconstrained) return self as result, + constructor function be_greater_than(self in out nocopy be_greater_than, a_expected dsinterval_unconstrained) return self as result, + overriding member function run_matcher(self in out nocopy be_greater_than, a_actual ut_data_value) return boolean +) +/ diff --git a/source/expectations/matchers/be_less_or_equal.tpb b/source/expectations/matchers/be_less_or_equal.tpb new file mode 100644 index 000000000..72875bc5a --- /dev/null +++ b/source/expectations/matchers/be_less_or_equal.tpb @@ -0,0 +1,110 @@ +create or replace type body be_less_or_equal AS + + member procedure init(self in out nocopy be_less_or_equal, a_expected ut_data_value) is + begin + self.name := lower($$plsql_unit); + self.expected := a_expected; + end; + + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected date) return self as result is + begin + init(ut_data_value_date(a_expected)); + return; + end; + + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected NUMBER) return self as result is + begin + init(ut_data_value_number(a_expected)); + return; + end; + + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected timestamp_unconstrained) return self as result is + begin + init(ut_data_value_timestamp(a_expected)); + return; + end; + + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected timestamp_tz_unconstrained) return self as result is + begin + init(ut_data_value_timestamp_tz(a_expected)); + return; + end; + + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected timestamp_ltz_unconstrained) return self as result is + begin + init(ut_data_value_timestamp_ltz(a_expected)); + return; + end; + + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected yminterval_unconstrained) return self as RESULT IS + begin + init(ut_data_value_yminterval(a_expected)); + return; + end; + + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected dsinterval_unconstrained) return self as RESULT IS + begin + init(ut_data_value_dsinterval(a_expected)); + return; + end; + + overriding member function run_matcher(self in out nocopy be_less_or_equal, a_actual ut_data_value) return boolean is + l_result boolean; + begin + if self.expected is of (ut_data_value_date) and a_actual is of (ut_data_value_date) then + declare + l_expected ut_data_value_date := treat(self.expected as ut_data_value_date); + l_actual ut_data_value_date := treat(a_actual as ut_data_value_date); + begin + l_result := l_actual.datavalue <= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_number) and a_actual is of (ut_data_value_number) then + declare + l_expected ut_data_value_number := treat(self.expected as ut_data_value_number); + l_actual ut_data_value_number := treat(a_actual as ut_data_value_number); + begin + l_result := l_actual.datavalue <= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_timestamp) and a_actual is of (ut_data_value_timestamp) then + declare + l_expected ut_data_value_timestamp := treat(self.expected as ut_data_value_timestamp); + l_actual ut_data_value_timestamp := treat(a_actual as ut_data_value_timestamp); + begin + l_result := l_actual.datavalue <= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_timestamp_ltz) and a_actual is of (ut_data_value_timestamp_ltz) then + declare + l_expected ut_data_value_timestamp_ltz := treat(self.expected as ut_data_value_timestamp_ltz); + l_actual ut_data_value_timestamp_ltz := treat(a_actual as ut_data_value_timestamp_ltz); + begin + l_result := l_actual.datavalue <= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_timestamp_tz) and a_actual is of (ut_data_value_timestamp_tz) then + declare + l_expected ut_data_value_timestamp_tz := treat(self.expected as ut_data_value_timestamp_tz); + l_actual ut_data_value_timestamp_tz := treat(a_actual as ut_data_value_timestamp_tz); + begin + l_result := l_actual.datavalue <= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_yminterval) and a_actual is of (ut_data_value_yminterval) then + declare + l_expected ut_data_value_yminterval := treat(self.expected as ut_data_value_yminterval); + l_actual ut_data_value_yminterval := treat(a_actual as ut_data_value_yminterval); + begin + l_result := l_actual.datavalue <= l_expected.datavalue; + end; + elsif self.expected is of (ut_data_value_dsinterval) and a_actual is of (ut_data_value_dsinterval) then + declare + l_expected ut_data_value_dsinterval := treat(self.expected as ut_data_value_dsinterval); + l_actual ut_data_value_dsinterval := treat(a_actual as ut_data_value_dsinterval); + begin + l_result := l_actual.datavalue <= l_expected.datavalue; + end; + else + l_result := (self as ut_matcher).run_matcher(a_actual); + end if; + return l_result; + end; + +END; +/ diff --git a/source/expectations/matchers/be_less_or_equal.tps b/source/expectations/matchers/be_less_or_equal.tps new file mode 100644 index 000000000..f636e0596 --- /dev/null +++ b/source/expectations/matchers/be_less_or_equal.tps @@ -0,0 +1,12 @@ +create or replace type be_less_or_equal under ut_matcher( + member procedure init(self in out nocopy be_less_or_equal, a_expected ut_data_value), + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected date) return self as result, + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected number) return self as result, + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected timestamp_unconstrained) return self as result, + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected timestamp_tz_unconstrained) return self as result, + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected timestamp_ltz_unconstrained) return self as result, + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected yminterval_unconstrained) return self as result, + constructor function be_less_or_equal(self in out nocopy be_less_or_equal, a_expected dsinterval_unconstrained) return self as result, + overriding member function run_matcher(self in out nocopy be_less_or_equal, a_actual ut_data_value) return boolean +) +/ diff --git a/source/expectations/matchers/be_less_than.tpb b/source/expectations/matchers/be_less_than.tpb new file mode 100644 index 000000000..8228dba4f --- /dev/null +++ b/source/expectations/matchers/be_less_than.tpb @@ -0,0 +1,115 @@ +create or replace type body be_less_than as + + member procedure init(self in out nocopy be_less_than, a_expected ut_data_value) is + begin + self.name := lower($$plsql_unit); + self.expected := a_expected; + end; + + constructor function be_less_than(self in out nocopy be_less_than, a_expected date) return self as result is + begin + init(ut_data_value_date(a_expected)); + return; + end; + + constructor function be_less_than(self in out nocopy be_less_than, a_expected number) return self as result is + begin + init(ut_data_value_number(a_expected)); + return; + end; + + constructor function be_less_than(self in out nocopy be_less_than, a_expected timestamp_unconstrained) + return self as result is + begin + init(ut_data_value_timestamp(a_expected)); + return; + end; + + constructor function be_less_than(self in out nocopy be_less_than, a_expected timestamp_tz_unconstrained) + return self as result is + begin + init(ut_data_value_timestamp_tz(a_expected)); + return; + end; + + constructor function be_less_than(self in out nocopy be_less_than, a_expected timestamp_ltz_unconstrained) + return self as result is + begin + init(ut_data_value_timestamp_ltz(a_expected)); + return; + end; + + constructor function be_less_than(self in out nocopy be_less_than, a_expected yminterval_unconstrained) + return self as result is + begin + init(ut_data_value_yminterval(a_expected)); + return; + end; + + constructor function be_less_than(self in out nocopy be_less_than, a_expected dsinterval_unconstrained) + return self as result is + begin + init(ut_data_value_dsinterval(a_expected)); + return; + end; + + overriding member function run_matcher(self in out nocopy be_less_than, a_actual ut_data_value) return boolean is + l_result boolean; + begin + if self.expected is of(ut_data_value_date) and a_actual is of(ut_data_value_date) then + declare + l_expected ut_data_value_date := treat(self.expected as ut_data_value_date); + l_actual ut_data_value_date := treat(a_actual as ut_data_value_date); + begin + l_result := l_actual.datavalue < l_expected.datavalue; + end; + elsif self.expected is of(ut_data_value_number) and a_actual is of(ut_data_value_number) then + declare + l_expected ut_data_value_number := treat(self.expected as ut_data_value_number); + l_actual ut_data_value_number := treat(a_actual as ut_data_value_number); + begin + l_result := l_actual.datavalue < l_expected.datavalue; + end; + elsif self.expected is of(ut_data_value_timestamp) and a_actual is of(ut_data_value_timestamp) then + declare + l_expected ut_data_value_timestamp := treat(self.expected as ut_data_value_timestamp); + l_actual ut_data_value_timestamp := treat(a_actual as ut_data_value_timestamp); + begin + l_result := l_actual.datavalue < l_expected.datavalue; + end; + elsif self.expected is of(ut_data_value_timestamp_ltz) and a_actual is of(ut_data_value_timestamp_ltz) then + declare + l_expected ut_data_value_timestamp_ltz := treat(self.expected as ut_data_value_timestamp_ltz); + l_actual ut_data_value_timestamp_ltz := treat(a_actual as ut_data_value_timestamp_ltz); + begin + l_result := l_actual.datavalue < l_expected.datavalue; + end; + elsif self.expected is of(ut_data_value_timestamp_tz) and a_actual is of(ut_data_value_timestamp_tz) then + declare + l_expected ut_data_value_timestamp_tz := treat(self.expected as ut_data_value_timestamp_tz); + l_actual ut_data_value_timestamp_tz := treat(a_actual as ut_data_value_timestamp_tz); + begin + l_result := l_actual.datavalue < l_expected.datavalue; + end; + elsif self.expected is of(ut_data_value_yminterval) and a_actual is of(ut_data_value_yminterval) then + declare + l_expected ut_data_value_yminterval := treat(self.expected as ut_data_value_yminterval); + l_actual ut_data_value_yminterval := treat(a_actual as ut_data_value_yminterval); + begin + l_result := l_actual.datavalue < l_expected.datavalue; + end; + elsif self.expected is of(ut_data_value_dsinterval) and a_actual is of(ut_data_value_dsinterval) then + declare + l_expected ut_data_value_dsinterval := treat(self.expected as ut_data_value_dsinterval); + l_actual ut_data_value_dsinterval := treat(a_actual as ut_data_value_dsinterval); + begin + l_result := l_actual.datavalue < l_expected.datavalue; + end; + else + l_result := (self as ut_matcher).run_matcher(a_actual); + end if; + return l_result; + end; + +end; +/ diff --git a/source/expectations/matchers/be_less_than.tps b/source/expectations/matchers/be_less_than.tps new file mode 100644 index 000000000..6d8e2996c --- /dev/null +++ b/source/expectations/matchers/be_less_than.tps @@ -0,0 +1,12 @@ +create or replace type be_less_than under ut_matcher( + member procedure init(self in out nocopy be_less_than, a_expected ut_data_value), + constructor function be_less_than(self in out nocopy be_less_than, a_expected date) return self as result, + constructor function be_less_than(self in out nocopy be_less_than, a_expected number) return self as result, + constructor function be_less_than(self in out nocopy be_less_than, a_expected timestamp_unconstrained) return self as result, + constructor function be_less_than(self in out nocopy be_less_than, a_expected timestamp_tz_unconstrained) return self as result, + constructor function be_less_than(self in out nocopy be_less_than, a_expected timestamp_ltz_unconstrained) return self as result, + constructor function be_less_than(self in out nocopy be_less_than, a_expected yminterval_unconstrained) return self as result, + constructor function be_less_than(self in out nocopy be_less_than, a_expected dsinterval_unconstrained) return self as result, + overriding member function run_matcher(self in out nocopy be_less_than, a_actual ut_data_value) return boolean +) +/ diff --git a/source/expectations/matchers/equal.tpb b/source/expectations/matchers/equal.tpb index eba82a36f..c9e5be6d1 100644 --- a/source/expectations/matchers/equal.tpb +++ b/source/expectations/matchers/equal.tpb @@ -78,7 +78,19 @@ create or replace type body equal as init(ut_data_value_varchar2(a_expected), a_nulls_are_equal); return; end; - + + constructor function equal(self in out nocopy equal, a_expected yminterval_unconstrained, a_nulls_are_equal boolean := null) return self as result is + begin + init(ut_data_value_yminterval(a_expected), a_nulls_are_equal); + return; + end; + + constructor function equal(self in out nocopy equal, a_expected dsinterval_unconstrained, a_nulls_are_equal boolean := null) return self as result is + begin + init(ut_data_value_dsinterval(a_expected), a_nulls_are_equal); + return; + end; + overriding member function run_matcher(self in out nocopy equal, a_actual ut_data_value) return boolean is l_result boolean; begin @@ -170,6 +182,20 @@ create or replace type body equal as begin l_result := equal_with_nulls((l_expected.datavalue = l_actual.datavalue), a_actual); end; + elsif self.expected is of (ut_data_value_yminterval) and a_actual is of (ut_data_value_yminterval) then + declare + l_expected ut_data_value_yminterval := treat(self.expected as ut_data_value_yminterval); + l_actual ut_data_value_yminterval := treat(a_actual as ut_data_value_yminterval); + begin + l_result := equal_with_nulls((l_expected.datavalue = l_actual.datavalue), a_actual); + end; + elsif self.expected is of (ut_data_value_dsinterval) and a_actual is of (ut_data_value_dsinterval) then + declare + l_expected ut_data_value_dsinterval := treat(self.expected as ut_data_value_dsinterval); + l_actual ut_data_value_dsinterval := treat(a_actual as ut_data_value_dsinterval); + begin + l_result := equal_with_nulls((l_expected.datavalue = l_actual.datavalue), a_actual); + end; else l_result := (self as ut_matcher).run_matcher(a_actual); end if; diff --git a/source/expectations/matchers/equal.tps b/source/expectations/matchers/equal.tps index 01956f52c..6b6a2d8cb 100644 --- a/source/expectations/matchers/equal.tps +++ b/source/expectations/matchers/equal.tps @@ -13,6 +13,8 @@ create or replace type equal under ut_matcher( constructor function equal(self in out nocopy equal, a_expected timestamp_tz_unconstrained, a_nulls_are_equal boolean := null) return self as result, constructor function equal(self in out nocopy equal, a_expected timestamp_ltz_unconstrained, a_nulls_are_equal boolean := null) return self as result, constructor function equal(self in out nocopy equal, a_expected varchar2, a_nulls_are_equal boolean := null) return self as result, + constructor function equal(self in out nocopy equal, a_expected yminterval_unconstrained, a_nulls_are_equal boolean := null) return self as result, + constructor function equal(self in out nocopy equal, a_expected dsinterval_unconstrained, a_nulls_are_equal boolean := null) return self as result, overriding member function run_matcher(self in out nocopy equal, a_actual ut_data_value) return boolean ) / diff --git a/source/expectations/ut.pkb b/source/expectations/ut.pkb index 86f0377db..f7691b793 100644 --- a/source/expectations/ut.pkb +++ b/source/expectations/ut.pkb @@ -59,6 +59,16 @@ create or replace package body ut is begin return ut_expectation_refcursor(ut_data_value_refcursor(a_actual), a_message); end; - + + function expect(a_actual in yminterval_unconstrained, a_message varchar2 := null) return ut_expectation_yminterval is + begin + return ut_expectation_yminterval(ut_data_value_yminterval(a_actual), a_message); + end; + + function expect(a_actual in dsinterval_unconstrained, a_message varchar2 := null) return ut_expectation_dsinterval is + begin + return ut_expectation_dsinterval(ut_data_value_dsinterval(a_actual), a_message); + end; + end ut; / diff --git a/source/expectations/ut.pks b/source/expectations/ut.pks index 5e28e97c1..b22cd41cc 100644 --- a/source/expectations/ut.pks +++ b/source/expectations/ut.pks @@ -37,5 +37,9 @@ create or replace package ut authid current_user as function expect(a_actual in varchar2, a_message varchar2 := null) return ut_expectation_varchar2; + function expect(a_actual in yminterval_unconstrained, a_message varchar2 := null) return ut_expectation_yminterval; + + function expect(a_actual in dsinterval_unconstrained, a_message varchar2 := null) return ut_expectation_dsinterval; + end ut; / diff --git a/source/expectations/ut_expectation.tpb b/source/expectations/ut_expectation.tpb index b93f5e59c..01875f36b 100644 --- a/source/expectations/ut_expectation.tpb +++ b/source/expectations/ut_expectation.tpb @@ -80,6 +80,18 @@ create or replace type body ut_expectation as ut_utils.debug_log('ut_expectation.to_equal(self in ut_expectation, a_expected varchar2, a_nulls_are_equal boolean := null)'); self.to_( equal(a_expected) ); end; + + member procedure to_equal(self in ut_expectation, a_expected yminterval_unconstrained, a_nulls_are_equal boolean := null) is + begin + ut_utils.debug_log('ut_expectation.to_equal(self in ut_expectation, a_expected yminterval_unconstrained, a_nulls_are_equal boolean := null)'); + self.to_( equal(a_expected) ); + end; + + member procedure to_equal(self in ut_expectation, a_expected dsinterval_unconstrained, a_nulls_are_equal boolean := null) is + begin + ut_utils.debug_log('ut_expectation.to_equal(self in ut_expectation, a_expected dsinterval_unconstrained, a_nulls_are_equal boolean := null)'); + self.to_( equal(a_expected) ); + end; final member procedure to_(self in ut_expectation, a_matcher ut_matcher) is l_assert_result boolean; diff --git a/source/expectations/ut_expectation.tps b/source/expectations/ut_expectation.tps index 048b2073a..31968474a 100644 --- a/source/expectations/ut_expectation.tps +++ b/source/expectations/ut_expectation.tps @@ -3,12 +3,12 @@ create or replace type ut_expectation as object actual_data ut_data_value, message varchar2(4000 char), final member procedure add_assert_result( self in ut_expectation, a_assert_result boolean, a_assert_name varchar2, - a_assert_info varchar2, a_error_message varchar2, a_expected_value_string in varchar2 := null, a_expected_data_type varchar2 := null), + a_assert_info varchar2, a_error_message varchar2, a_expected_value_string in varchar2 := null, a_expected_data_type varchar2 := null), final member procedure to_(self in ut_expectation, a_matcher ut_matcher), final member procedure not_to(self in ut_expectation, a_matcher ut_matcher), final member procedure to_be_null(self in ut_expectation), final member procedure to_be_not_null(self in ut_expectation), - + -- this is done to provide strong type comparison. other comporators should be implemented in the type-specific classes member procedure to_equal(self in ut_expectation, a_expected anydata, a_nulls_are_equal boolean := null), member procedure to_equal(self in ut_expectation, a_expected blob, a_nulls_are_equal boolean := null), @@ -20,7 +20,9 @@ create or replace type ut_expectation as object member procedure to_equal(self in ut_expectation, a_expected timestamp_unconstrained, a_nulls_are_equal boolean := null), member procedure to_equal(self in ut_expectation, a_expected timestamp_ltz_unconstrained, a_nulls_are_equal boolean := null), member procedure to_equal(self in ut_expectation, a_expected timestamp_tz_unconstrained, a_nulls_are_equal boolean := null), - member procedure to_equal(self in ut_expectation, a_expected varchar2, a_nulls_are_equal boolean := null) + member procedure to_equal(self in ut_expectation, a_expected varchar2, a_nulls_are_equal boolean := null), + member procedure to_equal(self in ut_expectation, a_expected yminterval_unconstrained, a_nulls_are_equal boolean := null), + member procedure to_equal(self in ut_expectation, a_expected dsinterval_unconstrained, a_nulls_are_equal boolean := null) ) not final not instantiable / diff --git a/source/expectations/ut_expectation_dsinterval.tpb b/source/expectations/ut_expectation_dsinterval.tpb new file mode 100644 index 000000000..e644bf066 --- /dev/null +++ b/source/expectations/ut_expectation_dsinterval.tpb @@ -0,0 +1,9 @@ +create or replace type body ut_expectation_dsinterval as + + overriding member procedure to_equal(self in ut_expectation_dsinterval, a_expected dsinterval_unconstrained, a_nulls_are_equal boolean := null) is + begin + ut_utils.debug_log('ut_expectation_dsinterval.to_equal(self in ut_expectation, a_expected dsinterval_unconstrained)'); + self.to_( equal(a_expected, a_nulls_are_equal) ); + end; +end; +/ diff --git a/source/expectations/ut_expectation_dsinterval.tps b/source/expectations/ut_expectation_dsinterval.tps new file mode 100644 index 000000000..c7f852c0e --- /dev/null +++ b/source/expectations/ut_expectation_dsinterval.tps @@ -0,0 +1,5 @@ +create or replace type ut_expectation_dsinterval under ut_expectation +( + overriding member procedure to_equal(self in ut_expectation_dsinterval, a_expected dsinterval_unconstrained, a_nulls_are_equal boolean := null) +) +/ diff --git a/source/expectations/ut_expectation_yminterval.tpb b/source/expectations/ut_expectation_yminterval.tpb new file mode 100644 index 000000000..80d43558a --- /dev/null +++ b/source/expectations/ut_expectation_yminterval.tpb @@ -0,0 +1,9 @@ +create or replace type body ut_expectation_yminterval as + + overriding member procedure to_equal(self in ut_expectation_yminterval, a_expected yminterval_unconstrained, a_nulls_are_equal boolean := null) is + begin + ut_utils.debug_log('ut_expectation_yminterval.to_equal(self in ut_expectation, a_expected yminterval_unconstrained)'); + self.to_( equal(a_expected, a_nulls_are_equal) ); + end; +end; +/ diff --git a/source/expectations/ut_expectation_yminterval.tps b/source/expectations/ut_expectation_yminterval.tps new file mode 100644 index 000000000..fe304a02d --- /dev/null +++ b/source/expectations/ut_expectation_yminterval.tps @@ -0,0 +1,5 @@ +create or replace type ut_expectation_yminterval under ut_expectation +( + overriding member procedure to_equal(self in ut_expectation_yminterval, a_expected yminterval_unconstrained, a_nulls_are_equal boolean := null) +) +/ diff --git a/source/install.sql b/source/install.sql index 6583d958c..e00ff66ff 100644 --- a/source/install.sql +++ b/source/install.sql @@ -71,14 +71,20 @@ whenever oserror exit failure rollback @@expectations/data_values/ut_data_value_boolean.tps @@expectations/data_values/ut_data_value_clob.tps @@expectations/data_values/ut_data_value_date.tps +@@expectations/data_values/ut_data_value_dsinterval.tps @@expectations/data_values/ut_data_value_number.tps @@expectations/data_values/ut_data_value_refcursor.tps @@expectations/data_values/ut_data_value_timestamp.tps @@expectations/data_values/ut_data_value_timestamp_tz.tps @@expectations/data_values/ut_data_value_timestamp_ltz.tps @@expectations/data_values/ut_data_value_varchar2.tps +@@expectations/data_values/ut_data_value_yminterval.tps @@expectations/matchers/ut_matcher.tps @@expectations/matchers/be_false.tps +@@expectations/matchers/be_greater_or_equal.tps +@@expectations/matchers/be_greater_than.tps +@@expectations/matchers/be_less_or_equal.tps +@@expectations/matchers/be_less_than.tps @@expectations/matchers/be_like.tps @@expectations/matchers/be_not_null.tps @@expectations/matchers/be_null.tps @@ -92,25 +98,33 @@ whenever oserror exit failure rollback @@expectations/ut_expectation_boolean.tps @@expectations/ut_expectation_clob.tps @@expectations/ut_expectation_date.tps +@@expectations/ut_expectation_dsinterval.tps @@expectations/ut_expectation_number.tps @@expectations/ut_expectation_refcursor.tps @@expectations/ut_expectation_timestamp.tps @@expectations/ut_expectation_timestamp_ltz.tps @@expectations/ut_expectation_timestamp_tz.tps @@expectations/ut_expectation_varchar2.tps +@@expectations/ut_expectation_yminterval.tps @@expectations/data_values/ut_data_value_anydata.tpb @@expectations/data_values/ut_data_value_blob.tpb @@expectations/data_values/ut_data_value_boolean.tpb @@expectations/data_values/ut_data_value_clob.tpb @@expectations/data_values/ut_data_value_date.tpb +@@expectations/data_values/ut_data_value_dsinterval.tpb @@expectations/data_values/ut_data_value_number.tpb @@expectations/data_values/ut_data_value_refcursor.tpb @@expectations/data_values/ut_data_value_timestamp.tpb @@expectations/data_values/ut_data_value_timestamp_tz.tpb @@expectations/data_values/ut_data_value_timestamp_ltz.tpb @@expectations/data_values/ut_data_value_varchar2.tpb +@@expectations/data_values/ut_data_value_yminterval.tpb @@expectations/matchers/ut_matcher.tpb @@expectations/matchers/be_false.tpb +@@expectations/matchers/be_greater_or_equal.tpb +@@expectations/matchers/be_greater_than.tpb +@@expectations/matchers/be_less_or_equal.tpb +@@expectations/matchers/be_less_than.tpb @@expectations/matchers/be_like.tpb @@expectations/matchers/be_not_null.tpb @@expectations/matchers/be_null.tpb @@ -124,14 +138,16 @@ whenever oserror exit failure rollback @@expectations/ut_expectation_boolean.tpb @@expectations/ut_expectation_clob.tpb @@expectations/ut_expectation_date.tpb +@@expectations/ut_expectation_dsinterval.tpb @@expectations/ut_expectation_number.tpb @@expectations/ut_expectation_refcursor.tpb @@expectations/ut_expectation_timestamp.tpb @@expectations/ut_expectation_timestamp_ltz.tpb @@expectations/ut_expectation_timestamp_tz.tpb @@expectations/ut_expectation_varchar2.tpb +@@expectations/ut_expectation_yminterval.tpb ---expecatations interface +--expectations interface @@expectations/ut.pks @@expectations/ut.pkb diff --git a/source/uninstall.sql b/source/uninstall.sql index 3aa1d1271..520f18f6a 100644 --- a/source/uninstall.sql +++ b/source/uninstall.sql @@ -8,6 +8,8 @@ drop package ut_assert; drop package ut; +drop type ut_expectation_yminterval; + drop type ut_expectation_varchar2; drop type ut_expectation_timestamp_tz; @@ -20,6 +22,8 @@ drop type ut_expectation_refcursor; drop type ut_expectation_number; +drop type ut_expectation_dsinterval; + drop type ut_expectation_date; drop type ut_expectation_clob; @@ -48,10 +52,20 @@ drop type be_not_null; drop type be_like; +drop type be_greater_or_equal; + +drop type be_greater_than; + +drop type be_less_or_equal; + +drop type be_less_than; + drop type be_false; drop type ut_matcher; +drop type ut_data_value_yminterval; + drop type ut_data_value_varchar2; drop type ut_data_value_timestamp_tz; @@ -64,6 +78,8 @@ drop type ut_data_value_number; drop type ut_data_value_refcursor; +drop type ut_data_value_dsinterval; + drop type ut_data_value_date; drop type ut_data_value_clob; diff --git a/tests/RunAll.sql b/tests/RunAll.sql index 82591fb6b..a7a8932a2 100644 --- a/tests/RunAll.sql +++ b/tests/RunAll.sql @@ -186,6 +186,18 @@ create table ut$test_table (val varchar2(1)); @@lib/RunTest.sql ut_output_dbms_output/ut_output_dbms_output.get_lines.ReturnsSentLines.sql @@lib/RunTest.sql ut_output_dbms_output/ut_output_dbms_output.send_clob.SendsAClobIntoPipe.sql +@@lib/RunTest.sql ut_expectations/greater_or_equal.sql +@@lib/RunTest.sql ut_expectations/greater_than.sql +@@lib/RunTest.sql ut_expectations/less_or_equal.sql +@@lib/RunTest.sql ut_expectations/less_than.sql +@@lib/RunTest.sql ut_expectations/be_between.sql +@@lib/RunTest.sql ut_expectations/timestamp_between.sql +@@lib/RunTest.sql ut_expectations/timestamp_ltz_between.sql +@@lib/RunTest.sql ut_expectations/timestamp_ltz_not_between.sql +@@lib/RunTest.sql ut_expectations/timestamp_not_between.sql +@@lib/RunTest.sql ut_expectations/timestamp_tz_between.sql +@@lib/RunTest.sql ut_expectations/timestamp_tz_not_between.sql + --Global cleanup drop package ut_example_tests; drop procedure check_annotation_parsing; diff --git a/tests/ut_expectations/be_between.sql b/tests/ut_expectations/be_between.sql new file mode 100644 index 000000000..cdd4fb8fd --- /dev/null +++ b/tests/ut_expectations/be_between.sql @@ -0,0 +1,15 @@ +PROMPT Be between + +@@ut_expectations/common/ut.expect.common.be_between.sql 'date' 'sysdate' 'sysdate-2' 'sysdate-1' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_between.sql 'number' '2.0' '1.99' '1.999' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_between.sql 'varchar2(1)' '''c''' '''a''' '''b''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_between.sql 'interval year to month' '''2-2''' '''2-0''' '''2-1''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_between.sql 'interval day to second' '''2 01:00:00''' '''2 00:59:58''' '''2 00:59:59''' 'ut_utils.tr_failure' + +@@ut_expectations/common/ut.expect.common.be_between.sql 'date' 'sysdate' 'sysdate-1' 'sysdate+1' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_between.sql 'number' '2.0' '1.99' '2.01' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_between.sql 'varchar2(1)' '''b''' '''a''' '''c''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_between.sql 'interval year to month' '''2-1''' '''2-0''' '''2-2''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_between.sql 'interval day to second' '''2 01:00:00''' '''2 00:59:58''' '''2 01:00:01''' 'ut_utils.tr_success' + + diff --git a/tests/ut_expectations/common/ut.expect.common.be_between.sql b/tests/ut_expectations/common/ut.expect.common.be_between.sql new file mode 100644 index 000000000..9a94dec20 --- /dev/null +++ b/tests/ut_expectations/common/ut.expect.common.be_between.sql @@ -0,0 +1,21 @@ +--Arrange +declare + l_value1 &&1 := &&2; + l_value_lower &&1 := &&3; + l_value_upper &&1 := &&4; + l_result integer; + l_asserts_results ut_objects_list; +begin +--Act + ut.expect(l_value1).to_(be_between(l_value_lower,l_value_upper)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; +--Assert + if l_result = &&5 then + :test_result := ut_utils.tr_success; + else + :test_result := ut_utils.tr_failure; + dbms_output.put_line('expected: '''||&&5||''', got: '''||l_result||'''' ); + end if; +end; +/ diff --git a/tests/ut_expectations/common/ut.expect.common.be_greater_or_equal.sql b/tests/ut_expectations/common/ut.expect.common.be_greater_or_equal.sql new file mode 100644 index 000000000..fa2892b1c --- /dev/null +++ b/tests/ut_expectations/common/ut.expect.common.be_greater_or_equal.sql @@ -0,0 +1,19 @@ +--Arrange +declare + l_value1 &&1 := &&2; + l_value2 &&1 := &&3; + l_result integer; + l_asserts_results ut_objects_list; +begin +--Act + ut.expect(l_value1).to_(be_greater_or_equal(l_value2)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; +--Assert + if l_result = &&4 then + :test_result := ut_utils.tr_success; + else + dbms_output.put_line('expected: '''||&&4||''', got: '''||l_result||'''' ); + end if; +end; +/ diff --git a/tests/ut_expectations/common/ut.expect.common.be_greater_than.sql b/tests/ut_expectations/common/ut.expect.common.be_greater_than.sql new file mode 100644 index 000000000..f7736a3bf --- /dev/null +++ b/tests/ut_expectations/common/ut.expect.common.be_greater_than.sql @@ -0,0 +1,19 @@ +--Arrange +declare + l_value1 &&1 := &&2; + l_value2 &&1 := &&3; + l_result integer; + l_asserts_results ut_objects_list; +begin +--Act + ut.expect(l_value1).to_(be_greater_than(l_value2)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; +--Assert + if l_result = &&4 then + :test_result := ut_utils.tr_success; + else + dbms_output.put_line('expected: '''||&&4||''', got: '''||l_result||'''' ); + end if; +end; +/ diff --git a/tests/ut_expectations/common/ut.expect.common.be_less_or_equal.sql b/tests/ut_expectations/common/ut.expect.common.be_less_or_equal.sql new file mode 100644 index 000000000..910a3693c --- /dev/null +++ b/tests/ut_expectations/common/ut.expect.common.be_less_or_equal.sql @@ -0,0 +1,19 @@ +--Arrange +declare + l_value1 &&1 := &&2; + l_value2 &&1 := &&3; + l_result integer; + l_asserts_results ut_objects_list; +begin +--Act + ut.expect(l_value1).to_(be_less_or_equal(l_value2)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; +--Assert + if l_result = &&4 then + :test_result := ut_utils.tr_success; + else + dbms_output.put_line('expected: '''||&&4||''', got: '''||l_result||'''' ); + end if; +end; +/ diff --git a/tests/ut_expectations/common/ut.expect.common.be_less_than.sql b/tests/ut_expectations/common/ut.expect.common.be_less_than.sql new file mode 100644 index 000000000..000d38425 --- /dev/null +++ b/tests/ut_expectations/common/ut.expect.common.be_less_than.sql @@ -0,0 +1,20 @@ +--Arrange +declare + l_value1 &&1 := &&2; + l_value2 &&1 := &&3; + l_result integer; + l_asserts_results ut_objects_list; +begin +--Act + ut.expect(l_value1).to_(be_less_than(l_value2)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; +--Assert + if l_result = &&4 then + :test_result := ut_utils.tr_success; + else + :test_result := ut_utils.tr_failure; + dbms_output.put_line('expected: '''||&&4||''', got: '''||l_result||'''' ); + end if; +end; +/ diff --git a/tests/ut_expectations/greater_or_equal.sql b/tests/ut_expectations/greater_or_equal.sql new file mode 100644 index 000000000..e117c0593 --- /dev/null +++ b/tests/ut_expectations/greater_or_equal.sql @@ -0,0 +1,25 @@ +PROMPT Greater or equal + +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'date' 'sysdate' 'sysdate-1' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'number' '2.0' '1.99' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'interval year to month' '''2-1''' '''2-0''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'interval day to second' '''2 01:00:00''' '''2 00:59:59''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.13'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' + +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'date' 'sysdate' 'sysdate' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'number' '1.99' '1.99' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'interval year to month' '''2-0''' '''2-0''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'INTERVAL DAY TO SECOND' '''2 00:59:01''' '''2 00:59:01''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' + +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'date' 'sysdate-1' 'sysdate' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'number' '1.0' '1.01' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'interval year to month' '''2-1''' '''2-2''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'interval day to second' '''2 00:59:58''' '''2 00:59:59''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.13'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +03:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_or_equal.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +03:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_failure' diff --git a/tests/ut_expectations/greater_than.sql b/tests/ut_expectations/greater_than.sql new file mode 100644 index 000000000..0a8d277ac --- /dev/null +++ b/tests/ut_expectations/greater_than.sql @@ -0,0 +1,17 @@ +PROMPT Greater than + +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'date' 'sysdate' 'sysdate-1' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'number' '2.0' '1.99' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'interval year to month' '''2-1''' '''2-0''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'interval day to second' '''2 01:00:00''' '''2 00:59:59''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.13'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' + +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'date' 'sysdate-1' 'sysdate' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'number' '1.0' '1.01' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'interval year to month' '''2-1''' '''2-2''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'interval day to second' '''2 00:59:58''' '''2 00:59:59''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.13'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +03:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_greater_than.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +03:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_failure' diff --git a/tests/ut_expectations/less_or_equal.sql b/tests/ut_expectations/less_or_equal.sql new file mode 100644 index 000000000..7aea3fcc0 --- /dev/null +++ b/tests/ut_expectations/less_or_equal.sql @@ -0,0 +1,25 @@ +PROMPT Less or equal + +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'date' 'sysdate' 'sysdate-1' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'number' '2.0' '1.99' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'interval year to month' '''2-1''' '''2-0''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'interval day to second' '''2 01:00:00''' '''2 00:59:59''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.13'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_failure' + +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'date' 'sysdate' 'sysdate' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'number' '1.99' '1.99' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'interval year to month' '''2-0''' '''2-0''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'interval day to second' '''2 00:59:01''' '''2 00:59:01''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' + +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'date' 'sysdate-1' 'sysdate' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'number' '1.0' '1.01' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'interval year to month' '''2-1''' '''2-2''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'interval day to second' '''2 00:59:58''' '''2 00:59:59''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.13'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +03:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_or_equal.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +03:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' diff --git a/tests/ut_expectations/less_than.sql b/tests/ut_expectations/less_than.sql new file mode 100644 index 000000000..1f8b77a64 --- /dev/null +++ b/tests/ut_expectations/less_than.sql @@ -0,0 +1,18 @@ +PROMPT Less than + +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'date' 'sysdate' 'sysdate-1' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'number' '2.0' '1.99' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'interval year to month' '''2-1''' '''2-0''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'interval day to second' '''2 01:00:00''' '''2 00:59:59''' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.13'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_failure' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +01:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_failure' + + +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'date' 'sysdate-1' 'sysdate' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'number' '1.0' '1.01' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'interval year to month' '''2-1''' '''2-2''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'interval day to second' '''2 00:59:58''' '''2 00:59:59''' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'timestamp' 'to_timestamp(''1997-01-31 09:26:50.12'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'to_timestamp(''1997-01-31 09:26:50.13'',''YYYY-MM-DD HH24.MI.SSXFF'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'timestamp with time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +03:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' +@@ut_expectations/common/ut.expect.common.be_less_than.sql 'timestamp with local time zone' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +03:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'to_timestamp_tz(''1997-01-31 09:26:50.12 +02:00'',''YYYY-MM-DD HH24.MI.SSXFF TZR'')' 'ut_utils.tr_success' diff --git a/tests/ut_expectations/timestamp_between.sql b/tests/ut_expectations/timestamp_between.sql new file mode 100644 index 000000000..76087afe5 --- /dev/null +++ b/tests/ut_expectations/timestamp_between.sql @@ -0,0 +1,23 @@ +--Arrange +declare + l_value timestamp := to_timestamp('1997-01-31 09:26:50.13','YYYY-MM-DD HH24.MI.SSXFF'); + l_value_lower timestamp := to_timestamp('1997-01-31 09:26:50.11','YYYY-MM-DD HH24.MI.SSXFF'); + l_value_upper timestamp := to_timestamp('1997-01-31 09:26:50.14','YYYY-MM-DD HH24.MI.SSXFF'); + + l_result integer; + l_asserts_results ut_objects_list; +begin + --Act + ut.expect(l_value).to_(be_between(l_value_lower,l_value_upper)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; + --Assert + if l_result = ut_utils.tr_success then + :test_result := ut_utils.tr_success; + else + :test_result := ut_utils.tr_failure; + dbms_output.put_line('expected: '''||ut_utils.tr_success||''', got: '''||l_result||'''' ); + end if; +end; +/ + diff --git a/tests/ut_expectations/timestamp_ltz_between.sql b/tests/ut_expectations/timestamp_ltz_between.sql new file mode 100644 index 000000000..e8cae2624 --- /dev/null +++ b/tests/ut_expectations/timestamp_ltz_between.sql @@ -0,0 +1,22 @@ +--Arrange +declare + l_value timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +02:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + l_value_lower timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +03:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + l_value_upper timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +01:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + + l_result integer; + l_asserts_results ut_objects_list; +begin + --Act + ut.expect(l_value).to_(be_between(l_value_lower,l_value_upper)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; + --Assert + if l_result = ut_utils.tr_success then + :test_result := ut_utils.tr_success; + else + :test_result := ut_utils.tr_failure; + dbms_output.put_line('expected: '''||ut_utils.tr_success||''', got: '''||l_result||'''' ); + end if; +end; +/ diff --git a/tests/ut_expectations/timestamp_ltz_not_between.sql b/tests/ut_expectations/timestamp_ltz_not_between.sql new file mode 100644 index 000000000..94c7acb87 --- /dev/null +++ b/tests/ut_expectations/timestamp_ltz_not_between.sql @@ -0,0 +1,23 @@ +--Arrange +declare + l_value_tlz timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +01:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + l_value_lower_tlz timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +02:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + l_value_upper_tlz timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +03:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + + l_result integer; + l_asserts_results ut_objects_list; +begin + --Act + ut.expect(l_value_tlz).to_(be_between(l_value_lower_tlz,l_value_upper_tlz)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; + --Assert + if l_result = ut_utils.tr_failure then + :test_result := ut_utils.tr_success; + else + :test_result := ut_utils.tr_failure; + dbms_output.put_line('expected: '''||ut_utils.tr_failure||''', got: '''||l_result||'''' ); + end if; +end; +/ + diff --git a/tests/ut_expectations/timestamp_not_between.sql b/tests/ut_expectations/timestamp_not_between.sql new file mode 100644 index 000000000..d99780a2c --- /dev/null +++ b/tests/ut_expectations/timestamp_not_between.sql @@ -0,0 +1,23 @@ +--Arrange +declare + l_value timestamp := to_timestamp('1997-01-31 09:26:50.13','YYYY-MM-DD HH24.MI.SSXFF'); + l_value_lower timestamp := to_timestamp('1997-01-31 09:26:50.11','YYYY-MM-DD HH24.MI.SSXFF'); + l_value_upper timestamp := to_timestamp('1997-01-31 09:26:50.12','YYYY-MM-DD HH24.MI.SSXFF'); + + l_result integer; + l_asserts_results ut_objects_list; +begin + --Act + ut.expect(l_value).to_(be_between(l_value_lower,l_value_upper)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; + --Assert + if l_result = ut_utils.tr_failure then + :test_result := ut_utils.tr_success; + else + :test_result := ut_utils.tr_failure; + dbms_output.put_line('expected: '''||ut_utils.tr_failure||''', got: '''||l_result||'''' ); + end if; +end; +/ + diff --git a/tests/ut_expectations/timestamp_tz_between.sql b/tests/ut_expectations/timestamp_tz_between.sql new file mode 100644 index 000000000..c596d74ce --- /dev/null +++ b/tests/ut_expectations/timestamp_tz_between.sql @@ -0,0 +1,23 @@ +--Arrange +declare + l_value timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +02:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + l_value_lower timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +03:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + l_value_upper timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +01:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + + l_result integer; + l_asserts_results ut_objects_list; +begin + --Act + ut.expect(l_value).to_(be_between(l_value_lower,l_value_upper)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; + --Assert + if l_result = ut_utils.tr_success then + :test_result := ut_utils.tr_success; + else + :test_result := ut_utils.tr_failure; + dbms_output.put_line('expected: '''||ut_utils.tr_success||''', got: '''||l_result||'''' ); + end if; +end; +/ + diff --git a/tests/ut_expectations/timestamp_tz_not_between.sql b/tests/ut_expectations/timestamp_tz_not_between.sql new file mode 100644 index 000000000..bcde17679 --- /dev/null +++ b/tests/ut_expectations/timestamp_tz_not_between.sql @@ -0,0 +1,23 @@ +--Arrange +declare + l_value_tz timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +01:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + l_value_lower_tz timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +02:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + l_value_upper_tz timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +03:00','YYYY-MM-DD HH24.MI.SSXFF TZR'); + + l_result integer; + l_asserts_results ut_objects_list; +begin + --Act + ut.expect(l_value_tz).to_(be_between(l_value_lower_tz,l_value_upper_tz)); + l_asserts_results := ut_assert_processor.get_asserts_results(); + l_result := l_asserts_results(l_asserts_results.last).result; + --Assert + if l_result = ut_utils.tr_failure then + :test_result := ut_utils.tr_success; + else + :test_result := ut_utils.tr_failure; + dbms_output.put_line('expected: '''||ut_utils.tr_failure||''', got: '''||l_result||'''' ); + end if; +end; +/ +