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)