Skip to content

Commit 68fe4e7

Browse files
committed
Prototype
1 parent 03361e5 commit 68fe4e7

8 files changed

Lines changed: 188 additions & 1 deletion

source/install.sql

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ whenever oserror exit failure rollback
1919
@@types/ut_dbms_output_suite_reporter.tps
2020
@@ut_utils.pks
2121
@@ut_metadata.pks
22+
@@ut_assert_processor.pks
23+
@@types/ut_assertion.tps
24+
@@types/ut_assertion_varchar.tps
2225
@@ut_assert.pks
2326
@@ut_annotations.pks
2427
@@ut_suite_manager.pks
@@ -35,8 +38,11 @@ whenever oserror exit failure rollback
3538
@@types/ut_reporter_decorator.tpb
3639
@@types/ut_dbms_output_suite_reporter.tpb
3740
@@ut_metadata.pkb
38-
@@ut_annotations.pkb
41+
@@ut_assert_processor.pkb
42+
@@types/ut_assertion.tpb
43+
@@types/ut_assertion_varchar.tpb
3944
@@ut_assert.pkb
45+
@@ut_annotations.pkb
4046
@@ut_suite_manager.pkb
4147

4248

source/types/ut_assertion.tpb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
create or replace type body ut_assertion as
2+
final member procedure build_assert_result(
3+
a_assert_result boolean, a_assert_name varchar2,
4+
a_expected_value_string in varchar2, a_expected_data_type varchar2 := null) is
5+
begin
6+
ut_utils.debug_log('ut_assertion.build_assert_result :' || ut_utils.to_test_result(a_assert_result) || ':' || a_message);
7+
ut_assert_processor.add_assert_result(
8+
ut_assert_result(
9+
a_assert_name, ut_utils.to_test_result(a_assert_result),
10+
coalesce(a_expected_data_type, self.a_data_type), self.a_data_type, a_expected_value_string, a_actual_value_string, self.a_message
11+
)
12+
);
13+
end;
14+
end;
15+
/

source/types/ut_assertion.tps

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
create or replace type ut_assertion as object
2+
(
3+
a_data_type varchar2(250 char),
4+
a_message varchar2(4000 char),
5+
a_actual_value_string varchar2(4000 char),
6+
final member procedure build_assert_result( a_assert_result boolean, a_assert_name varchar2,
7+
a_expected_value_string in varchar2, a_expected_data_type varchar2 := null)
8+
)
9+
not final not instantiable
10+
/
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
create or replace type body ut_assertion_varchar as
2+
3+
constructor function ut_assertion_varchar(self in out nocopy ut_assertion_varchar, a_message varchar2 default null, a_actual varchar2) return self as result is
4+
begin
5+
self.a_data_type := 'varchar2';
6+
self.a_message := a_message;
7+
self.a_actual_value_string := ut_utils.to_string(a_actual);
8+
end;
9+
10+
-- constructor function ut_assertion_varchar(self in out nocopy ut_assertion_varchar, a_actual varchar2) return self as result is
11+
-- begin
12+
-- self.a_data_type := 'varchar2';
13+
-- self.a_actual := a_actual;
14+
-- end;
15+
16+
member procedure to_be_equal(a_expected varchar2) is
17+
begin
18+
self.build_assert_result( (a_expected = self.a_actual), 'to_be_equal', ut_utils.to_string(a_expected));
19+
end;
20+
21+
member procedure to_be_like(a_mask in varchar, a_escape_char in varchar2 := null) is
22+
l_condition boolean;
23+
l_escape_msg varchar2(100) := case when a_escape_char is not null then ' using escape '||a_escape_char end;
24+
begin
25+
if a_escape_char is not null then
26+
l_condition := self.a_actual like a_mask escape a_escape_char;
27+
else
28+
l_condition := self.a_actual like a_mask;
29+
end if;
30+
self.build_assert_result(l_condition, 'to_be_like', ut_utils.to_string(a_mask)||l_escape_msg, ut_utils.to_string(l_condition));
31+
end;
32+
33+
member procedure to_be_matching(a_pattern in varchar2, a_modifier in varchar2 default null) is
34+
begin
35+
null;
36+
end;
37+
38+
member procedure to_be_null is
39+
begin
40+
self.build_assert_result(self.a_actual is null, 'to_be_null', null, ut_utils.to_string(to_char(null)));
41+
end;
42+
43+
member procedure to_be_not_null is
44+
begin
45+
self.build_assert_result(self.a_actual is not null, 'to_be_not_null', null, ut_utils.to_string(to_char(null)));
46+
end;
47+
end;
48+
/
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
create or replace type ut_assertion_varchar under ut_assertion
2+
(
3+
a_actual varchar2(32767),
4+
constructor function ut_assertion_varchar(self in out nocopy ut_assertion_varchar, a_message varchar2 default null, a_actual varchar2) return self as result,
5+
member procedure to_be_equal(a_expected varchar2),
6+
member procedure to_be_like(a_mask in varchar, a_escape_char in varchar2 := null),
7+
member procedure to_be_matching(a_pattern in varchar2, a_modifier in varchar2 := null),
8+
member procedure to_be_null,
9+
member procedure to_be_not_null
10+
);
11+
/

source/uninstall.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@ drop package ut_suite_manager;
22

33
drop package ut_assert;
44

5+
drop type ut_assertion_varchar;
6+
7+
drop type ut_assertion;
8+
9+
drop package ut_assert_processor;
10+
511
drop package ut_annotations;
612

713
drop package ut_metadata;

source/ut_assert_processor.pkb

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
create or replace package body ut_assert_processor as
2+
3+
g_asserts_called ut_assert_list := ut_assert_list();
4+
5+
function get_aggregate_asserts_result return integer is
6+
l_result integer := ut_utils.tr_success;
7+
begin
8+
ut_utils.debug_log('ut_assert.get_aggregate_asserts_result');
9+
10+
for i in 1 .. g_asserts_called.count loop
11+
l_result := greatest(l_result, g_asserts_called(i).result);
12+
exit when l_result = ut_utils.tr_error;
13+
end loop;
14+
return l_result;
15+
16+
end get_aggregate_asserts_result;
17+
18+
procedure clear_asserts is
19+
begin
20+
ut_utils.debug_log('ut_assert.clear_asserts');
21+
g_asserts_called.delete;
22+
end;
23+
24+
function get_asserts_results return ut_objects_list is
25+
l_asserts_results ut_objects_list := ut_objects_list();
26+
begin
27+
ut_utils.debug_log('ut_assert.get_asserts_results');
28+
if g_asserts_called is not null and g_asserts_called.count > 0 then
29+
l_asserts_results.extend(g_asserts_called.count);
30+
for i in 1 .. g_asserts_called.count loop
31+
l_asserts_results(i) := g_asserts_called(i);
32+
end loop;
33+
clear_asserts();
34+
end if;
35+
return l_asserts_results;
36+
end get_asserts_results;
37+
38+
procedure add_assert_result(a_assert_result ut_assert_result) is
39+
begin
40+
g_asserts_called.extend;
41+
g_asserts_called(g_asserts_called.last) := a_assert_result;
42+
end;
43+
44+
function build_message(a_message varchar2, a_expected in varchar2, a_actual in varchar2) return varchar2 is
45+
c_max_value_len constant integer := 1800;
46+
begin
47+
return a_message || ', expected: ' || ut_utils.to_string(a_expected)|| ', actual: ' || ut_utils.to_string(a_actual);
48+
end;
49+
50+
procedure build_assert_result(
51+
a_assert_result boolean, a_assert_name varchar2, a_expected_type in varchar2, a_actual_type in varchar2,
52+
a_expected_value_string in varchar2, a_actual_value_string in varchar2, a_message varchar2
53+
) is
54+
begin
55+
ut_utils.debug_log('ut_assert.build_assert_result :' || ut_utils.to_test_result(a_assert_result) || ':' || a_message);
56+
add_assert_result(
57+
ut_assert_result(
58+
a_assert_name, ut_utils.to_test_result(a_assert_result),
59+
a_expected_type, a_actual_type, a_expected_value_string, a_actual_value_string, a_message
60+
)
61+
);
62+
end;
63+
64+
procedure report_error(a_message in varchar2) is
65+
begin
66+
add_assert_result(ut_assert_result(ut_utils.tr_error, a_message));
67+
end;
68+
69+
end;
70+
/

source/ut_assert_processor.pks

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
create or replace package ut_assert_processor authid current_user as
2+
3+
function get_aggregate_asserts_result return integer;
4+
5+
procedure clear_asserts;
6+
7+
function get_asserts_results return ut_objects_list;
8+
9+
procedure add_assert_result(a_assert_result ut_assert_result);
10+
11+
function build_message(a_message varchar2, a_expected in varchar2, a_actual in varchar2) return varchar2;
12+
13+
procedure build_assert_result(
14+
a_assert_result boolean, a_assert_name varchar2, a_expected_type in varchar2, a_actual_type in varchar2,
15+
a_expected_value_string in varchar2, a_actual_value_string in varchar2, a_message varchar2
16+
);
17+
18+
procedure report_error(a_message in varchar2);
19+
20+
end;
21+
/

0 commit comments

Comments
 (0)