11create 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
136101end ut_assert;
0 commit comments