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

Skip to content

Commit c991dd4

Browse files
committed
Added equal expectation support for date and timestamp.
Cleanup of design leftovers for clob and blob. Fixed blob to_string conversion.
1 parent 2cdafc7 commit c991dd4

23 files changed

Lines changed: 193 additions & 28 deletions

examples/RunExpectations.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ end;
1515
/
1616

1717
drop type ut_custom_reporter;
18-
--drop package demo_expectations;
18+
drop package demo_expectations;
1919

examples/demo_expectations.pck

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
drop package demo_expectations;
2-
31
create or replace package demo_expectations is
42

53
-- %suite(Demoing asserts)
@@ -55,6 +53,19 @@ create or replace package demo_expectations is
5553

5654
-- %test(expectation using ut.expect('value').to_(equal('value'));)
5755
procedure test17;
56+
57+
-- %test(expectation using ut.expect(1).to_(equal(2));)
58+
procedure test18;
59+
60+
-- %test(expectation using ut.expect(sysdate).to_(equal(sysdate));)
61+
procedure test19;
62+
63+
-- %test(expectation using ut.expect(to_clob('a') ).to_(equal(to_clob('b')));)
64+
procedure test20;
65+
66+
-- %test(expectation using ut.expect(to_blob('ffaa') ).to_(equal(to_blob('FFAA')));)
67+
procedure test21;
68+
5869
end;
5970
/
6071

@@ -184,5 +195,30 @@ create or replace package body demo_expectations is
184195
ut.expect('value').to_(equal('value'));
185196
end;
186197

198+
199+
-- %test(expectation using ut.expect(1).to_(equal(2));)
200+
procedure test18 is
201+
begin
202+
ut.expect(1).to_(equal(2));
203+
end;
204+
205+
-- %test(expectation using ut.expect(sysdate).to_(equal(sysdate));)
206+
procedure test19 is
207+
begin
208+
ut.expect(sysdate).to_(equal(sysdate-1));
209+
end;
210+
211+
-- %test(expectation using ut.expect(to_clob('a') ).to_(equal(to_clob('a')));)
212+
procedure test20 is
213+
begin
214+
ut.expect(to_clob('a') ).to_(equal(to_clob('b')));
215+
end;
216+
217+
-- %test(expectation using ut.expect(to_blob('ffaa') ).to_(equal(to_blob('FFAA')));)
218+
procedure test21 is
219+
begin
220+
ut.expect(to_blob('ffaa') ).to_(equal(to_blob('FFAABB')));
221+
end;
222+
187223
end;
188224
/

source/assertions/ut.pkb

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,16 @@ create or replace package body ut is
2525
return ut_assertion_blob(a_actual);
2626
end;
2727

28+
function expect(a_actual in date, a_message varchar2 := null) return ut_assertion_date is
29+
begin
30+
return ut_assertion_date(a_actual);
31+
end;
32+
33+
function expect(a_actual in timestamp_unconstrained, a_message varchar2 := null) return ut_assertion_timestamp is
34+
begin
35+
return ut_assertion_timestamp(a_actual);
36+
end;
2837

29-
-- function expect(a_actual in date, a_message varchar2 := null) return ut_assertion_date is
30-
-- begin
31-
-- return ut_assertion_date(a_actual);
32-
-- end;
33-
--
34-
-- function expect(a_actual in timestamp_tz_unconstrained, a_message varchar2 := null) return ut_assertion_timestamp is
35-
-- begin
36-
-- return ut_assertion_timestamp(a_actual);
37-
-- end;
38-
--
3938
-- function expect(a_actual in anydata, a_message varchar2 := null) return ut_assertion_anydata;
4039
--
4140
-- function expect(a_actual in sys_refcursor, a_message varchar2 := null) return ut_assertion_cursor;

source/assertions/ut.pks

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ create or replace package ut authid current_user as
1212
function expect(a_actual in blob, a_message varchar2 := null) return ut_assertion_blob;
1313

1414

15-
-- function expect(a_message varchar2 := null, a_actual in date) return ut_assertion_date;
16-
--
17-
-- function expect(a_message varchar2 := null, a_actual in timestamp_tz_unconstrained) return ut_assertion_timestamp;
18-
--
19-
--
15+
function expect(a_actual in date, a_message varchar2 := null) return ut_assertion_date;
16+
17+
function expect(a_actual in timestamp_unconstrained, a_message varchar2 := null) return ut_assertion_timestamp;
18+
2019
-- function expect(a_message varchar2 := null, a_actual in anydata) return ut_assertion_anydata;
2120
--
2221
-- function expect(a_message varchar2 := null, a_actual in sys_refcursor) return ut_assertion_cursor;

source/assertions/ut_assertion.tpb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ create or replace type body ut_assertion as
3535
self.build_assert_result( false, 'to equal', ut_utils.to_string(a_expected), 'blob');
3636
end;
3737

38+
member procedure to_equal(self in ut_assertion, a_expected date, a_nulls_are_equal boolean := null) is
39+
begin
40+
ut_utils.debug_log('ut_assertion.to_equal(self in ut_assertion, a_expected date, a_nulls_are_equal boolean := null)');
41+
self.build_assert_result( false, 'to equal', ut_utils.to_string(a_expected), 'date');
42+
end;
43+
44+
member procedure to_equal(self in ut_assertion, a_expected timestamp_unconstrained, a_nulls_are_equal boolean := null) is
45+
begin
46+
ut_utils.debug_log('ut_assertion.to_equal(self in ut_assertion, a_expected timestamp_tz_unconstrained, a_nulls_are_equal boolean := null)');
47+
self.build_assert_result( false, 'to equal', ut_utils.to_string(a_expected), 'timestamp');
48+
end;
49+
3850
member procedure to_(self in ut_assertion, a_expectation ut_expectation) is
3951
l_assert_result ut_assert_result;
4052
begin
@@ -45,6 +57,7 @@ create or replace type body ut_assertion as
4557
when self.actual_data is of (ut_data_value_number) then a_expectation.run_expectation( treat(self.actual_data as ut_data_value_number) )
4658
when self.actual_data is of (ut_data_value_blob) then a_expectation.run_expectation( treat(self.actual_data as ut_data_value_blob) )
4759
when self.actual_data is of (ut_data_value_clob) then a_expectation.run_expectation( treat(self.actual_data as ut_data_value_clob) )
60+
when self.actual_data is of (ut_data_value_date) then a_expectation.run_expectation( treat(self.actual_data as ut_data_value_date) )
4861
end;
4962
l_assert_result.message := self.message;
5063
l_assert_result.name := 'to '||l_assert_result.name;

source/assertions/ut_assertion.tps

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ create or replace type ut_assertion as object
88
member procedure to_equal(self in ut_assertion, a_expected number, a_nulls_are_equal boolean := null),
99
member procedure to_equal(self in ut_assertion, a_expected clob, a_nulls_are_equal boolean := null),
1010
member procedure to_equal(self in ut_assertion, a_expected blob, a_nulls_are_equal boolean := null),
11+
member procedure to_equal(self in ut_assertion, a_expected date, a_nulls_are_equal boolean := null),
12+
member procedure to_equal(self in ut_assertion, a_expected timestamp_unconstrained, a_nulls_are_equal boolean := null),
1113
member procedure to_(self in ut_assertion, a_expectation ut_expectation),
1214
final member procedure to_be_null,
1315
final member procedure to_be_not_null

source/assertions/ut_assertion_blob.tps

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
create or replace type ut_assertion_blob under ut_assertion
22
(
3-
actual blob,
43
constructor function ut_assertion_blob(self in out nocopy ut_assertion_blob, a_actual blob, a_message varchar2 default null) return self as result,
54
overriding member procedure to_equal(self in ut_assertion_blob, a_expected blob, a_nulls_are_equal boolean := null)
65
)

source/assertions/ut_assertion_clob.tpb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ create or replace type body ut_assertion_clob as
1818
l_escape_msg varchar2(100) := case when a_escape_char is not null then ' using escape '''||a_escape_char||'''' end;
1919
begin
2020
if a_escape_char is not null then
21-
l_condition := self.actual like a_mask escape a_escape_char;
21+
l_condition := treat(self.actual_data as ut_data_value_clob).value like a_mask escape a_escape_char;
2222
else
23-
l_condition := self.actual like a_mask;
23+
l_condition := treat(self.actual_data as ut_data_value_clob).value like a_mask;
2424
end if;
2525
self.build_assert_result(l_condition, 'to be like', ut_utils.to_string(a_mask)||l_escape_msg);
2626
end;
2727

2828
member procedure to_match(self in ut_assertion_clob, a_pattern in varchar2, a_modifier in varchar2 default null) is
2929
l_modifiers_msg varchar2(100) := case when a_modifier is not null then ' using modifiers '''||a_modifier||'''' end;
3030
begin
31-
self.build_assert_result((regexp_like(self.actual, a_pattern, a_modifier)), 'to be matching', ut_utils.to_string(a_pattern)||l_modifiers_msg);
31+
self.build_assert_result((regexp_like(treat(self.actual_data as ut_data_value_clob).value, a_pattern, a_modifier)), 'to be matching', ut_utils.to_string(a_pattern)||l_modifiers_msg);
3232
end;
3333

3434
end;

source/assertions/ut_assertion_clob.tps

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
create or replace type ut_assertion_clob under ut_assertion
22
(
3-
actual clob,
43
constructor function ut_assertion_clob(self in out nocopy ut_assertion_clob, a_actual clob, a_message varchar2 default null) return self as result,
54
overriding member procedure to_equal(self in ut_assertion_clob, a_expected clob, a_nulls_are_equal boolean := null),
65
member procedure to_be_like(self in ut_assertion_clob, a_mask in varchar2, a_escape_char in varchar2 := null),
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
create or replace type body ut_assertion_date as
2+
3+
constructor function ut_assertion_date(self in out nocopy ut_assertion_date, a_actual date, a_message varchar2 default null) return self as result is
4+
begin
5+
self.message := a_message;
6+
self.actual_data := ut_data_value_date('date', ut_utils.boolean_to_int( (a_actual is null) ), ut_utils.to_string(a_actual), a_actual);
7+
return;
8+
end;
9+
10+
overriding member procedure to_equal(self in ut_assertion_date, a_expected date, a_nulls_are_equal boolean := null) is
11+
begin
12+
ut_utils.debug_log('ut_assertion_date.to_equal(self in ut_assertion, a_expected date, a_nulls_are_equal boolean := null)');
13+
self.to_( equal(a_expected, a_nulls_are_equal) );
14+
end;
15+
16+
end;
17+
/

0 commit comments

Comments
 (0)