Skip to content

Commit afaec2e

Browse files
committed
Almost working - still a PoC state
1 parent b3263ab commit afaec2e

21 files changed

Lines changed: 345 additions & 68 deletions

build/ut_conditial_debug_setup.sql

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
alter session set PLSQL_Warnings = 'enable:all';
55
alter session set PLSQL_CCFlags = 'ut_trace:true';
66

7-
alter package ut_types compile debug package;
8-
alter package ut_assert compile debug package;
9-
alter package ut_testexecute compile debug package;
10-
alter package ut_exampletest compile debug package;
7+
alter package ut_annotations compile debug package;
8+
alter package ut_suite_manager compile debug package;
9+
alter package ut_utils compile debug package;

examples/RunAllExamples.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ prompt RunExampleTestAnnotationBasedForCurrentSchema
1717
@@RunExampleTestAnnotationBasedForCurrentSchema.sql
1818
prompt RunExampleTestAnnotationsHugePackage
1919
@@RunExampleTestAnnotationsHugePackage.sql
20+
prompt RunExpectations
21+
@@RunExpectations.sql

examples/RunExpectations.sql

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
--Shows how to create a test suite with the default reporter which is dbms_output
2+
--No tables are used for this.
3+
--Suite Management packages are when developed will make this easier.
4+
--Clear Screen
5+
Set Serveroutput On Size Unlimited format truncated
6+
set echo off
7+
--install the example unit test packages
8+
@@demo_expectations.pck
9+
@@ut_custom_reporter.tps
10+
@@ut_custom_reporter.tpb
11+
12+
begin
13+
ut_suite_manager.run_cur_schema_suites_static(ut_custom_reporter(a_tab_size => 2));
14+
end;
15+
/
16+
17+
drop type ut_custom_reporter;
18+
--drop package demo_expectations;
19+

examples/demo_expectations.pck

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
create or replace package demo_expectations is
2+
3+
-- %suite(Demoing asserts)
4+
5+
-- %test(success of equal varchar)
6+
procedure test1;
7+
8+
-- %test(failure of different varchar)
9+
procedure test2;
10+
11+
-- %test(success of equal number)
12+
procedure test3;
13+
14+
-- %test(failure of different number)
15+
procedure test4;
16+
17+
-- %test(success of equal clob)
18+
procedure test5;
19+
20+
-- %test(failure of different clob)
21+
procedure test6;
22+
23+
-- %test(failure varchar with clob)
24+
procedure test7;
25+
26+
-- %test(failure of clob with varchar)
27+
procedure test8;
28+
29+
-- %test(failure varchar with number)
30+
procedure test9;
31+
32+
-- %test(failure of number with varchar)
33+
procedure test10;
34+
35+
-- %test(failure number with clob)
36+
procedure test11;
37+
38+
39+
-- %test(failure of clob with number)
40+
procedure test12;
41+
42+
-- %test(success of equal blob)
43+
procedure test13;
44+
45+
-- %test(failure of different blob)
46+
procedure test14;
47+
48+
-- %test(failure of clob with blob)
49+
procedure test15;
50+
51+
-- %test(failure of blob with clob)
52+
procedure test16;
53+
54+
end;
55+
/
56+
57+
58+
create or replace package body demo_expectations is
59+
60+
-- %test(success of equal varchar)
61+
procedure test1 is
62+
begin
63+
ut.expect( 'a varchar2 value' ).to_be_equal('a varchar2 value');
64+
end;
65+
66+
-- %test(failure of different varchar)
67+
procedure test2 is
68+
begin
69+
ut.expect('a varchar2 value').to_be_equal('a differernt varchar2 value');
70+
end;
71+
72+
73+
-- %test(success of equal number)
74+
procedure test3 is
75+
begin
76+
ut.expect(12345).to_be_equal(12345);
77+
end;
78+
79+
80+
-- %test(failure of different number)
81+
procedure test4 is
82+
begin
83+
ut.expect(.0987654321).to_be_equal(.09876543210987654321);
84+
end;
85+
86+
87+
-- %test(success of equal clob)
88+
procedure test5 is
89+
a clob := 'a3';
90+
b clob := 'a3';
91+
begin
92+
ut.expect(a).to_be_equal(b);
93+
end;
94+
95+
-- %test(failure of different clob)
96+
procedure test6 is
97+
a clob := 'a3';
98+
b clob := 'a4';
99+
begin
100+
ut.expect(a).to_be_equal(b);
101+
end;
102+
103+
-- %test(failure varchar with clob)
104+
procedure test7 is
105+
a clob := 'a3';
106+
begin
107+
ut.expect(a).to_be_equal('a3');
108+
end;
109+
110+
111+
-- %test(failure of clob with varchar)
112+
procedure test8 is
113+
a clob := 'a3';
114+
begin
115+
ut.expect('a3').to_be_equal(a);
116+
end;
117+
118+
-- %test(failure varchar with number)
119+
procedure test9 is
120+
begin
121+
ut.expect('12345').to_be_equal(12345);
122+
end;
123+
124+
-- %test(failure of number with varchar)
125+
procedure test10 is
126+
begin
127+
ut.expect(12345).to_be_equal('12345');
128+
end;
129+
130+
-- %test(failure number with clob)
131+
procedure test11 is
132+
a clob := '3';
133+
begin
134+
ut.expect(a).to_be_equal(3);
135+
end;
136+
137+
138+
-- %test(failure of clob with number)
139+
procedure test12 is
140+
a clob := '3';
141+
begin
142+
ut.expect(3).to_be_equal(a);
143+
end;
144+
145+
-- %test(success of equal blob)
146+
procedure test13 is
147+
a blob := utl_raw.cast_to_raw('a3');
148+
b blob := utl_raw.cast_to_raw('a3');
149+
begin
150+
ut.expect(a).to_be_equal(b);
151+
end;
152+
153+
-- %test(failure of different blob)
154+
procedure test14 is
155+
a blob := utl_raw.cast_to_raw('a3');
156+
b blob := utl_raw.cast_to_raw('a4');
157+
begin
158+
ut.expect(a).to_be_equal(b);
159+
end;
160+
161+
-- %test(failure of clob with blob)
162+
procedure test15 is
163+
a clob := 'a3';
164+
b blob := utl_raw.cast_to_raw('a3');
165+
begin
166+
ut.expect(a).to_be_equal(b);
167+
end;
168+
169+
-- %test(failure of blob with clob)
170+
procedure test16 is
171+
a blob := utl_raw.cast_to_raw('a3');
172+
b clob := 'a3';
173+
begin
174+
ut.expect(a).to_be_equal(b);
175+
end;
176+
177+
178+
end;
179+
/

source/assertions/ut.pkb

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,40 @@ create or replace package body ut is
55
-- return ut_assertion_boolean(a_actual);
66
-- end;
77

8-
function expect(a_actual in number) return ut_assertion_number is
8+
function expect(a_actual in number, a_message varchar2 := null) return ut_assertion_number is
99
begin
1010
return ut_assertion_number(a_actual);
1111
end;
1212

13-
function expect(a_actual in varchar2) return ut_assertion_varchar is
13+
function expect(a_actual in varchar2, a_message varchar2 := null) return ut_assertion_varchar is
1414
begin
1515
return ut_assertion_varchar(a_actual);
1616
end;
1717

18-
-- function expect(a_actual in raw) return ut_assertion_raw is
19-
-- begin
20-
-- return ut_assertion_raw(a_actual);
21-
-- end;
18+
function expect(a_actual in clob, a_message varchar2 := null) return ut_assertion_clob is
19+
begin
20+
return ut_assertion_clob(a_actual);
21+
end;
2222

23-
-- function expect(a_actual in clob) return ut_assertion_clob is
24-
-- begin
25-
-- return ut_assertion_clob(a_actual);
26-
-- end;
27-
--
28-
-- function expect(a_actual in blob) return ut_assertion_blob is
29-
-- begin
30-
-- return ut_assertion_blob(a_actual);
31-
-- end;
32-
--
33-
--
34-
-- function expect(a_actual in date) return ut_assertion_date is
23+
function expect(a_actual in blob, a_message varchar2 := null) return ut_assertion_blob is
24+
begin
25+
return ut_assertion_blob(a_actual);
26+
end;
27+
28+
29+
-- function expect(a_actual in date, a_message varchar2 := null) return ut_assertion_date is
3530
-- begin
3631
-- return ut_assertion_date(a_actual);
3732
-- end;
3833
--
39-
-- function expect(a_actual in timestamp_tz_unconstrained) return ut_assertion_timestamp is
34+
-- function expect(a_actual in timestamp_tz_unconstrained, a_message varchar2 := null) return ut_assertion_timestamp is
4035
-- begin
4136
-- return ut_assertion_timestamp(a_actual);
4237
-- end;
4338
--
44-
-- function expect(a_actual in anydata) return ut_assertion_anydata;
39+
-- function expect(a_actual in anydata, a_message varchar2 := null) return ut_assertion_anydata;
4540
--
46-
-- function expect(a_actual in sys_refcursor) return ut_assertion_cursor;
41+
-- function expect(a_actual in sys_refcursor, a_message varchar2 := null) return ut_assertion_cursor;
4742

4843
end ut;
4944
/

source/assertions/ut.pks

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@ create or replace package ut authid current_user as
33
-- function expect(a_message varchar2 := null, a_actual in boolean) return ut_assertion_bolean;
44

55

6-
function expect(a_actual in number) return ut_assertion_number;
6+
function expect(a_actual in number, a_message varchar2 := null) return ut_assertion_number;
77

8-
function expect(a_actual in varchar2) return ut_assertion_varchar;
8+
function expect(a_actual in varchar2, a_message varchar2 := null) return ut_assertion_varchar;
9+
10+
function expect(a_actual in clob, a_message varchar2 := null) return ut_assertion_clob;
11+
12+
function expect(a_actual in blob, a_message varchar2 := null) return ut_assertion_blob;
913

10-
-- function expect(a_actual in raw) return ut_assertion_raw;
1114

12-
-- function expect(a_message varchar2 := null, a_actual in clob) return ut_assertion_clob;
13-
--
14-
-- function expect(a_message varchar2 := null, a_actual in blob) return ut_assertion_blob;
15-
--
16-
--
1715
-- function expect(a_message varchar2 := null, a_actual in date) return ut_assertion_date;
1816
--
1917
-- function expect(a_message varchar2 := null, a_actual in timestamp_tz_unconstrained) return ut_assertion_timestamp;

source/assertions/ut_assertion.tpb

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,25 @@ create or replace type body ut_assertion as
1313

1414
member procedure to_be_equal(self in ut_assertion, a_expected varchar2) is
1515
begin
16+
ut_utils.debug_log('ut_assertion.to_be_equal(self in ut_assertion, a_expected varchar2)');
1617
self.build_assert_result( false, 'to be equal', ut_utils.to_string(a_expected), 'varchar2');
1718
end;
1819

1920
member procedure to_be_equal(self in ut_assertion, a_expected number) is
2021
begin
22+
ut_utils.debug_log('ut_assertion.to_be_equal(self in ut_assertion, a_expected number)');
2123
self.build_assert_result( false, 'to be equal', ut_utils.to_string(a_expected), 'number');
2224
end;
2325

24-
-- member procedure to_be_equal(self in ut_assertion, a_expected raw) is
25-
-- begin
26-
-- self.build_assert_result( false, 'to be equal', ut_utils.to_string(a_expected), 'raw');
27-
-- end;
26+
member procedure to_be_equal(self in ut_assertion, a_expected clob) is
27+
begin
28+
self.build_assert_result( false, 'to be equal', ut_utils.to_string(a_expected), 'clob');
29+
end;
30+
31+
member procedure to_be_equal(self in ut_assertion, a_expected blob) is
32+
begin
33+
self.build_assert_result( false, 'to be equal', ut_utils.to_string(a_expected), 'blob');
34+
end;
2835

2936
final member procedure to_be_null is
3037
begin

source/assertions/ut_assertion.tps

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ create or replace type ut_assertion as object
88
a_expected_value_string in varchar2, a_expected_data_type varchar2 := null),
99
member procedure to_be_equal(self in ut_assertion, a_expected varchar2),
1010
member procedure to_be_equal(self in ut_assertion, a_expected number),
11-
-- member procedure to_be_equal(self in ut_assertion, a_expected raw),
11+
member procedure to_be_equal(self in ut_assertion, a_expected clob),
12+
member procedure to_be_equal(self in ut_assertion, a_expected blob),
1213
final member procedure to_be_null,
1314
final member procedure to_be_not_null
1415
)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
create or replace type body ut_assertion_blob as
2+
3+
constructor function ut_assertion_blob(self in out nocopy ut_assertion_blob, a_actual blob, a_message varchar2 default null) return self as result is
4+
begin
5+
self.data_type := 'blob';
6+
self.message := a_message;
7+
self.actual := a_actual;
8+
self.actual_value_string := ut_utils.to_string(a_actual);
9+
self.is_null := ut_utils.boolean_to_int( (a_actual is null) );
10+
return;
11+
end;
12+
13+
overriding member procedure to_be_equal(self in ut_assertion_blob, a_expected blob) is
14+
begin
15+
ut_utils.debug_log('ut_assertion_blob.to_be_equal(self in ut_assertion, a_expected blob)');
16+
self.build_assert_result( (dbms_lob.compare( a_expected, self.actual ) = 0), 'to be equal', ut_utils.to_string(a_expected));
17+
end;
18+
19+
end;
20+
/
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
create or replace type ut_assertion_blob under ut_assertion
2+
(
3+
actual blob,
4+
constructor function ut_assertion_blob(self in out nocopy ut_assertion_blob, a_actual blob, a_message varchar2 default null) return self as result,
5+
overriding member procedure to_be_equal(self in ut_assertion_blob, a_expected blob)
6+
)
7+
/

0 commit comments

Comments
 (0)