Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a9c0a0d

Browse files
committed
Merge branch 'version3' into feature/running_with_many_reporters
2 parents 196657e + 8c3d7cb commit a9c0a0d

45 files changed

Lines changed: 1068 additions & 8 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

source/core/ut_utils.pkb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,16 @@ create or replace package body ut_utils is
114114
begin
115115
return coalesce(to_char(a_value,gc_timestamp_format), gc_null_string);
116116
end;
117+
118+
function to_string(a_value yminterval_unconstrained) return varchar2 IS
119+
begin
120+
return coalesce(to_char(a_value), gc_null_string);
121+
end;
122+
123+
function to_string(a_value dsinterval_unconstrained) return varchar2 IS
124+
begin
125+
return coalesce(to_char(a_value), gc_null_string);
126+
end;
117127

118128

119129
function boolean_to_int(a_value boolean) return integer is

source/core/ut_utils.pks

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ create or replace package ut_utils authid definer is
2828
ex_unsupported_rollback_type exception;
2929
gc_unsupported_rollback_type constant pls_integer := -20200;
3030
pragma exception_init(ex_unsupported_rollback_type, -20200);
31-
31+
3232
ex_path_list_is_empty exception;
3333
gc_path_list_is_empty constant pls_integer := -20201;
3434
pragma exception_init(ex_path_list_is_empty, -20201);
3535

3636
ex_invalid_path_format exception;
3737
gc_invalid_path_format constant pls_integer := -20202;
3838
pragma exception_init(ex_invalid_path_format, -20202);
39-
39+
4040

4141
gc_max_output_string_length constant integer := 4000;
4242
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
8484

8585
function to_string(a_value timestamp_ltz_unconstrained) return varchar2;
8686

87+
function to_string(a_value yminterval_unconstrained) return varchar2;
88+
89+
function to_string(a_value dsinterval_unconstrained) return varchar2;
90+
8791
function boolean_to_int(a_value boolean) return integer;
8892

8993
function int_to_boolean(a_value integer) return boolean;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
create or replace type body ut_data_value_dsinterval as
2+
3+
constructor function ut_data_value_dsinterval(self in out nocopy ut_data_value_dsinterval, a_value dsinterval_unconstrained) return self as result is
4+
begin
5+
self.datavalue := a_value;
6+
self.datatype := 'day to second interval';
7+
return;
8+
end;
9+
10+
overriding member function is_null return boolean is
11+
begin
12+
return (self.datavalue is null);
13+
end;
14+
15+
overriding member function to_string return varchar2 is
16+
begin
17+
return ut_utils.to_string(self.datavalue);
18+
end;
19+
20+
end;
21+
/
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
create or replace type ut_data_value_dsinterval under ut_data_value(
2+
datavalue dsinterval_unconstrained,
3+
constructor function ut_data_value_dsinterval(self in out nocopy ut_data_value_dsinterval, a_value dsinterval_unconstrained) return self as result,
4+
overriding member function is_null return boolean,
5+
overriding member function to_string return varchar2
6+
)
7+
/
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
create or replace type body ut_data_value_yminterval as
2+
3+
constructor function ut_data_value_yminterval(self in out nocopy ut_data_value_yminterval, a_value yminterval_unconstrained) return self as result is
4+
begin
5+
self.datavalue := a_value;
6+
self.datatype := 'year to month interval';
7+
return;
8+
end;
9+
10+
overriding member function is_null return boolean is
11+
begin
12+
return (self.datavalue is null);
13+
end;
14+
15+
overriding member function to_string return varchar2 is
16+
begin
17+
return ut_utils.to_string(self.datavalue);
18+
end;
19+
20+
end;
21+
/
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
create or replace type ut_data_value_yminterval under ut_data_value(
2+
datavalue yminterval_unconstrained,
3+
constructor function ut_data_value_yminterval(self in out nocopy ut_data_value_yminterval, a_value yminterval_unconstrained) return self as result,
4+
overriding member function is_null return boolean,
5+
overriding member function to_string return varchar2
6+
)
7+
/

source/expectations/matchers/be_between.tpb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,20 @@ create or replace type body be_between is
4444
init(ut_data_value_timestamp_ltz(a_lower_bound), ut_data_value_timestamp_ltz(a_upper_bound));
4545
return;
4646
end;
47+
48+
constructor function be_between(self in out nocopy be_between, a_lower_bound yminterval_unconstrained, a_upper_bound yminterval_unconstrained)
49+
return self as result is
50+
begin
51+
init(ut_data_value_yminterval(a_lower_bound), ut_data_value_yminterval(a_upper_bound));
52+
return;
53+
end;
54+
55+
constructor function be_between(self in out nocopy be_between, a_lower_bound dsinterval_unconstrained, a_upper_bound dsinterval_unconstrained)
56+
return self as result is
57+
begin
58+
init(ut_data_value_dsinterval(a_lower_bound), ut_data_value_dsinterval(a_upper_bound));
59+
return;
60+
end;
4761

4862
overriding member function run_matcher(self in out nocopy be_between, a_actual ut_data_value) return boolean is
4963
l_result boolean;
@@ -96,6 +110,22 @@ create or replace type body be_between is
96110
begin
97111
l_result := l_actual.datavalue between l_lower.datavalue and l_upper.datavalue;
98112
end;
113+
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
114+
declare
115+
l_lower ut_data_value_yminterval := treat(self.lower_bound as ut_data_value_yminterval);
116+
l_upper ut_data_value_yminterval := treat(self.upper_bound as ut_data_value_yminterval);
117+
l_actual ut_data_value_yminterval := treat(a_actual as ut_data_value_yminterval);
118+
begin
119+
l_result := l_actual.datavalue between l_lower.datavalue and l_upper.datavalue;
120+
end;
121+
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
122+
declare
123+
l_lower ut_data_value_dsinterval := treat(self.lower_bound as ut_data_value_dsinterval);
124+
l_upper ut_data_value_dsinterval := treat(self.upper_bound as ut_data_value_dsinterval);
125+
l_actual ut_data_value_dsinterval := treat(a_actual as ut_data_value_dsinterval);
126+
begin
127+
l_result := l_actual.datavalue between l_lower.datavalue and l_upper.datavalue;
128+
end;
99129
else
100130
l_result := (self as ut_matcher).run_matcher(a_actual);
101131
end if;

source/expectations/matchers/be_between.tps

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ create or replace type be_between under ut_matcher
1717
return self as result,
1818
constructor function be_between(self in out nocopy be_between, a_lower_bound timestamp_ltz_unconstrained, a_upper_bound timestamp_ltz_unconstrained)
1919
return self as result,
20+
constructor function be_between(self in out nocopy be_between, a_lower_bound yminterval_unconstrained, a_upper_bound yminterval_unconstrained)
21+
return self as result,
22+
constructor function be_between(self in out nocopy be_between, a_lower_bound dsinterval_unconstrained, a_upper_bound dsinterval_unconstrained)
23+
return self as result,
2024

2125
overriding member function run_matcher(self in out nocopy be_between, a_actual ut_data_value) return boolean
2226
)
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
create or replace type body be_greater_or_equal AS
2+
3+
member procedure init(self in out nocopy be_greater_or_equal, a_expected ut_data_value) is
4+
begin
5+
self.name := lower($$plsql_unit);
6+
self.expected := a_expected;
7+
end;
8+
9+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected date) return self as result is
10+
begin
11+
init(ut_data_value_date(a_expected));
12+
return;
13+
end;
14+
15+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected NUMBER) return self as result is
16+
begin
17+
init(ut_data_value_number(a_expected));
18+
return;
19+
end;
20+
21+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_unconstrained) return self as result is
22+
begin
23+
init(ut_data_value_timestamp(a_expected));
24+
return;
25+
end;
26+
27+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_tz_unconstrained) return self as result is
28+
begin
29+
init(ut_data_value_timestamp_tz(a_expected));
30+
return;
31+
end;
32+
33+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_ltz_unconstrained) return self as result is
34+
begin
35+
init(ut_data_value_timestamp_ltz(a_expected));
36+
return;
37+
end;
38+
39+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected yminterval_unconstrained) return self as RESULT IS
40+
begin
41+
init(ut_data_value_yminterval(a_expected));
42+
return;
43+
end;
44+
45+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected dsinterval_unconstrained) return self as RESULT IS
46+
begin
47+
init(ut_data_value_dsinterval(a_expected));
48+
return;
49+
end;
50+
51+
overriding member function run_matcher(self in out nocopy be_greater_or_equal, a_actual ut_data_value) return boolean is
52+
l_result boolean;
53+
begin
54+
if self.expected is of (ut_data_value_date) and a_actual is of (ut_data_value_date) then
55+
declare
56+
l_expected ut_data_value_date := treat(self.expected as ut_data_value_date);
57+
l_actual ut_data_value_date := treat(a_actual as ut_data_value_date);
58+
begin
59+
l_result := l_actual.datavalue >= l_expected.datavalue;
60+
end;
61+
elsif self.expected is of (ut_data_value_number) and a_actual is of (ut_data_value_number) then
62+
declare
63+
l_expected ut_data_value_number := treat(self.expected as ut_data_value_number);
64+
l_actual ut_data_value_number := treat(a_actual as ut_data_value_number);
65+
begin
66+
l_result := l_actual.datavalue >= l_expected.datavalue;
67+
end;
68+
elsif self.expected is of (ut_data_value_timestamp) and a_actual is of (ut_data_value_timestamp) then
69+
declare
70+
l_expected ut_data_value_timestamp := treat(self.expected as ut_data_value_timestamp);
71+
l_actual ut_data_value_timestamp := treat(a_actual as ut_data_value_timestamp);
72+
begin
73+
l_result := l_actual.datavalue >= l_expected.datavalue;
74+
end;
75+
elsif self.expected is of (ut_data_value_timestamp_ltz) and a_actual is of (ut_data_value_timestamp_ltz) then
76+
declare
77+
l_expected ut_data_value_timestamp_ltz := treat(self.expected as ut_data_value_timestamp_ltz);
78+
l_actual ut_data_value_timestamp_ltz := treat(a_actual as ut_data_value_timestamp_ltz);
79+
begin
80+
l_result := l_actual.datavalue >= l_expected.datavalue;
81+
end;
82+
elsif self.expected is of (ut_data_value_timestamp_tz) and a_actual is of (ut_data_value_timestamp_tz) then
83+
declare
84+
l_expected ut_data_value_timestamp_tz := treat(self.expected as ut_data_value_timestamp_tz);
85+
l_actual ut_data_value_timestamp_tz := treat(a_actual as ut_data_value_timestamp_tz);
86+
begin
87+
l_result := l_actual.datavalue >= l_expected.datavalue;
88+
end;
89+
elsif self.expected is of (ut_data_value_yminterval) and a_actual is of (ut_data_value_yminterval) then
90+
declare
91+
l_expected ut_data_value_yminterval := treat(self.expected as ut_data_value_yminterval);
92+
l_actual ut_data_value_yminterval := treat(a_actual as ut_data_value_yminterval);
93+
begin
94+
l_result := l_actual.datavalue >= l_expected.datavalue;
95+
end;
96+
elsif self.expected is of (ut_data_value_dsinterval) and a_actual is of (ut_data_value_dsinterval) then
97+
declare
98+
l_expected ut_data_value_dsinterval := treat(self.expected as ut_data_value_dsinterval);
99+
l_actual ut_data_value_dsinterval := treat(a_actual as ut_data_value_dsinterval);
100+
begin
101+
l_result := l_actual.datavalue >= l_expected.datavalue;
102+
end;
103+
else
104+
l_result := (self as ut_matcher).run_matcher(a_actual);
105+
end if;
106+
return l_result;
107+
end;
108+
109+
END;
110+
/
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
create or replace type be_greater_or_equal under ut_matcher(
2+
member procedure init(self in out nocopy be_greater_or_equal, a_expected ut_data_value),
3+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected date) return self as result,
4+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected number) return self as result,
5+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_unconstrained) return self as result,
6+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_tz_unconstrained) return self as result,
7+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected timestamp_ltz_unconstrained) return self as result,
8+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected yminterval_unconstrained) return self as result,
9+
constructor function be_greater_or_equal(self in out nocopy be_greater_or_equal, a_expected dsinterval_unconstrained) return self as result,
10+
overriding member function run_matcher(self in out nocopy be_greater_or_equal, a_actual ut_data_value) return boolean
11+
)
12+
/

0 commit comments

Comments
 (0)