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

Skip to content

Commit fa9f17b

Browse files
committed
Refactored ut_assert
1 parent 52548d0 commit fa9f17b

9 files changed

Lines changed: 60 additions & 85 deletions

source/types/ut_test.tpb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ create or replace type body ut_test is
7171

7272
self.end_time := current_timestamp;
7373

74-
ut_assert.process_asserts(self.items);
75-
74+
self.items := ut_assert.get_asserts_results();
75+
7676
exception
7777
when others then
7878
if sqlcode = -04068 then
@@ -84,7 +84,7 @@ create or replace type body ut_test is
8484
ut_assert.report_error(sqlerrm(sqlcode) || ' ' || dbms_utility.format_error_stack);
8585
ut_assert.report_error(sqlerrm(sqlcode) || ' ' || dbms_utility.format_error_backtrace);
8686
self.end_time := current_timestamp;
87-
ut_assert.process_asserts(self.items);
87+
self.items := ut_assert.get_asserts_results();
8888
end;
8989

9090
self.calc_execution_result;

source/ut_assert.pkb

Lines changed: 38 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,73 @@
11
create or replace package body ut_assert is
22

3-
g_current_asserts_called ut_objects_list := ut_objects_list();
3+
g_asserts_called ut_objects_list := ut_objects_list();
44

5-
function current_assert_test_result return integer is
5+
function get_aggregate_asserts_result return integer is
6+
l_result integer := ut_utils.tr_success;
67
begin
7-
ut_utils.debug_log('ut_assert.current_assert_test_result');
8+
ut_utils.debug_log('ut_assert.get_aggregate_asserts_result');
89

9-
return get_assert_list_final_result(g_current_asserts_called);
10-
end;
11-
12-
function get_assert_list_final_result(a_assert_list in ut_objects_list) return integer is
13-
l_result integer;
14-
l_assert ut_assert_result;
15-
begin
16-
ut_utils.debug_log('ut_assert.get_assert_list_final_result');
17-
18-
if a_assert_list is not null then
19-
20-
l_result := ut_utils.tr_success;
21-
for i in a_assert_list.first .. a_assert_list.last loop
22-
l_assert := treat(a_assert_list(i) as ut_assert_result);
23-
if l_assert.result = ut_utils.tr_failure then
24-
l_result := ut_utils.tr_failure;
25-
end if;
26-
27-
if l_assert.result = ut_utils.tr_error then
28-
l_result := ut_utils.tr_error;
29-
exit;
30-
end if;
31-
end loop;
32-
33-
end if;
10+
for i in 1 .. g_asserts_called.count loop
11+
l_result := greatest(l_result, treat(g_asserts_called(i) as ut_assert_result).result);
12+
exit when l_result = ut_utils.tr_error;
13+
end loop;
3414
return l_result;
35-
end get_assert_list_final_result;
15+
16+
end get_aggregate_asserts_result;
3617

3718
procedure clear_asserts is
3819
begin
3920
ut_utils.debug_log('ut_assert.clear_asserts');
40-
g_current_asserts_called.delete;
21+
g_asserts_called.delete;
4122
end;
4223

43-
procedure process_asserts(a_newtable out ut_objects_list) is
24+
function get_asserts_results return ut_objects_list is
25+
l_asserts_results ut_objects_list;
4426
begin
45-
ut_utils.debug_log('ut_assert.copy_called_asserts');
27+
ut_utils.debug_log('ut_assert.get_asserts_results');
28+
l_asserts_results := g_asserts_called;
29+
clear_asserts();
30+
return l_asserts_results;
31+
end get_asserts_results;
4632

47-
a_newtable := ut_objects_list(); -- make sure new table is empty
48-
a_newtable.extend(g_current_asserts_called.last);
49-
for i in g_current_asserts_called.first .. g_current_asserts_called.last loop
50-
ut_utils.debug_log(i || '-start');
51-
52-
a_newtable(i) := g_current_asserts_called(i);
53-
54-
ut_utils.debug_log(i || '-end');
55-
end loop;
56-
57-
clear_asserts;
58-
end process_asserts;
59-
60-
procedure report_assert(a_assert_result in integer, a_message in varchar2) is
61-
l_result ut_assert_result;
33+
procedure add_assert_result(a_assert_result ut_assert_result) is
6234
begin
63-
ut_utils.debug_log('ut_assert.report_assert :' || a_assert_result || ':' || a_message);
64-
l_result := ut_assert_result(a_assert_result, a_message);
65-
g_current_asserts_called.extend;
66-
g_current_asserts_called(g_current_asserts_called.last) := l_result;
35+
g_asserts_called.extend;
36+
g_asserts_called(g_asserts_called.last) := a_assert_result;
6737
end;
6838

69-
procedure report_success(a_message in varchar2, a_expected in varchar2, a_actual in varchar2) is
39+
function build_message(a_message varchar2, a_expected in varchar2, a_actual in varchar2) return varchar2 is
40+
l_message varchar2(4000);
7041
begin
71-
report_assert(ut_utils.tr_success
72-
,nvl(a_message, '') || ' expected: ' || nvl(a_expected, '') || ' actual: ' || nvl(a_actual, ''));
42+
return a_message || ', expected: ' || a_expected || ', actual: ' || a_actual;
7343
end;
7444

75-
procedure report_failure(a_message in varchar2, a_expected in varchar2, a_actual in varchar2) is
45+
procedure build_assert_result(a_test boolean, a_expected in varchar2, a_actual in varchar2, a_message varchar2) is
7646
begin
77-
report_assert(ut_utils.tr_failure
78-
,nvl(a_message, '') || ' expected: ' || nvl(a_expected, '') || ' actual: ' || nvl(a_actual, ''));
47+
ut_utils.debug_log('ut_assert.build_assert_result :' || ut_utils.to_test_result(a_test) || ':' || a_message);
48+
add_assert_result(
49+
ut_assert_result(
50+
ut_utils.to_test_result(a_test),
51+
build_message(a_message, a_expected, a_actual)
52+
)
53+
);
7954
end;
8055

8156
procedure report_error(a_message in varchar2) is
8257
begin
83-
report_assert(ut_utils.tr_error, a_message);
58+
add_assert_result(ut_assert_result(ut_utils.tr_error, a_message));
8459
end;
8560

61+
62+
--assertions
8663
procedure are_equal(a_expected in number, a_actual in number) is
8764
begin
8865
are_equal('Equality test', a_expected, a_actual);
8966
end;
9067

9168
procedure are_equal(a_msg in varchar2, a_expected in number, a_actual in number) is
9269
begin
93-
if a_expected = a_actual then
94-
report_success(a_msg, a_expected, a_actual);
95-
else
96-
report_failure(a_msg, a_expected, a_actual);
97-
end if;
70+
build_assert_result((a_expected = a_actual), a_expected, a_actual, a_msg);
9871
end;
9972

10073
procedure are_equal(a_expected in anydata, a_actual in anydata) is
@@ -108,11 +81,7 @@ create or replace package body ut_assert is
10881
begin
10982
l_expected := any_data_builder.build(a_expected);
11083
l_actual := any_data_builder.build(a_actual);
111-
if l_expected.eq(l_actual) then
112-
report_success(a_msg, l_expected.to_string(), l_actual.to_string());
113-
else
114-
report_failure(a_msg, l_expected.to_string(), l_actual.to_string());
115-
end if;
84+
build_assert_result((l_expected.eq(l_actual)), l_expected.to_string(), l_actual.to_string(), a_msg);
11685
end;
11786

11887
procedure are_equal(a_expected in sys_refcursor, a_actual in sys_refcursor) is
@@ -126,11 +95,7 @@ create or replace package body ut_assert is
12695
begin
12796
l_expected := any_data_builder.build(a_expected);
12897
l_actual := any_data_builder.build(a_actual);
129-
if l_expected.eq(l_actual) then
130-
report_success(a_msg, l_expected.to_string(), l_actual.to_string());
131-
else
132-
report_failure(a_msg, l_expected.to_string(), l_actual.to_string());
133-
end if;
98+
build_assert_result((l_expected.eq(l_actual)), l_expected.to_string(), l_actual.to_string(), a_msg);
13499
end;
135100

136101
end ut_assert;

source/ut_assert.pks

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
create or replace package ut_assert authid current_user as
22

3-
function get_assert_list_final_result(a_assert_list in ut_objects_list) return integer;
4-
function current_assert_test_result return integer;
3+
function get_aggregate_asserts_result return integer;
54
procedure clear_asserts;
65
procedure report_error(a_message in varchar2);
7-
procedure process_asserts(a_newtable out ut_objects_list);
6+
function get_asserts_results return ut_objects_list;
87

98
/* Just need something to play with for now */
109
procedure are_equal(a_expected in number, a_actual in number);

source/ut_utils.pkb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ create or replace package body ut_utils is
1010
end;
1111
end test_result_to_char;
1212

13+
14+
function to_test_result(a_test boolean) return integer is
15+
begin
16+
return case a_test
17+
when true then tr_success
18+
else tr_failure
19+
end;
20+
end;
21+
1322
procedure debug_log(a_message varchar2) is
1423
begin
1524
$if $$ut_trace $then

source/ut_utils.pks

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ create or replace package ut_utils is
3131
*/
3232
function test_result_to_char(a_test_result integer) return varchar2;
3333

34+
function to_test_result(a_test boolean) return integer;
35+
3436
procedure debug_log(a_message varchar2);
3537

3638
end ut_utils;

tests/ut_assert/ut_assert.are_equal.anydata.GivesFailureWhenComparingDifferentData.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ declare
1212
begin
1313
--Act
1414
ut_assert.are_equal( anydata.convertObject(l_expected), anydata.convertObject(l_actual) );
15-
l_result := ut_assert.current_assert_test_result;
15+
l_result := ut_assert.get_aggregate_asserts_result();
1616
--Assert
1717
if l_result = ut_utils.tr_failure then
1818
:test_result := ut_utils.tr_success;

tests/ut_assert/ut_assert.are_equal.anydata.GivesSuccessWhenComparingTheSameData.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ declare
1212
begin
1313
--Act
1414
ut_assert.are_equal( anydata.convertObject(l_expected), anydata.convertObject(l_actual) );
15-
l_result := ut_assert.current_assert_test_result;
15+
l_result := ut_assert.get_aggregate_asserts_result();
1616
--Assert
1717
if l_result = ut_utils.tr_success then
1818
:test_result := ut_utils.tr_success;

tests/ut_assert/ut_assert.are_equal.anydata.PutsObjectStrucureIntoMessage.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ declare
99
l_expected department := department('HR');
1010
l_actual department := department('IT');
1111
l_result integer;
12-
assert_results ut_objects_list;
1312
assert_result ut_assert_result;
1413
begin
1514
--Act
1615
ut_assert.are_equal( anydata.convertObject(l_expected), anydata.convertObject(l_actual) );
17-
ut_assert.process_asserts(assert_results);
18-
assert_result := treat(assert_results(1) as ut_assert_result);
16+
17+
assert_result := treat(ut_assert.get_asserts_results()(1) as ut_assert_result);
18+
1919
--Assert
2020
if assert_result.message like q'[%department(%dept_name => 'HR'%)%]'
2121
and assert_result.message like q'[%department(%dept_name => 'IT'%)%]'

tests/ut_assert/ut_assert.are_equal.number.common

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ declare
66
begin
77
--Act
88
ut_assert.are_equal(l_expected, l_actual);
9-
l_result := ut_assert.current_assert_test_result;
9+
l_result := ut_assert.get_aggregate_asserts_result();
1010
--Assert
1111
if l_result = &&3 then
1212
:test_result := ut_utils.tr_success;

0 commit comments

Comments
 (0)