11create or replace package ut_output_tests
22as
33 -- %suite
4+
5+ gv_before_all_client_info varchar2 (200 );
6+ gv_before_each_client_info varchar2 (200 );
7+ gv_before_test_client_info varchar2 (200 );
8+ gv_after_test_client_info varchar2 (200 );
9+ gv_after_each_client_info varchar2 (200 );
10+ gv_after_all_client_info varchar2 (200 );
411
512 -- %test
6- procedure ut_passing_test;
13+ -- %beforetest(before_test)
14+ -- %aftertest(after_test)
15+ procedure the_test;
16+
17+ -- %beforeall
18+ procedure beforeall;
19+
20+ -- %beforeeach
21+ procedure beforeeach;
22+
23+ procedure before_test;
24+ procedure after_test;
25+
26+ -- %aftereach
27+ procedure after_each;
28+
29+ -- %afterall
30+ procedure afterall;
731
832end;
933/
1034
1135create or replace package body ut_output_tests
1236as
1337
14- procedure ut_passing_test
38+ procedure the_test
1539 as
1640 l_module_name varchar2 (4000 );
1741 l_action_name varchar2 (4000 );
42+ l_client_info varchar2 (4000 );
1843 begin
1944 -- Generate empty output
2045 dbms_output .put_line (' ' );
2146 ut .expect (1 ,' Test 1 Should Pass' ).to_equal(1 );
2247 dbms_application_info .read_module (module_name => l_module_name, action_name => l_action_name);
48+ dbms_application_info .read_client_info (l_client_info);
2349 ut .expect (l_module_name).to_equal(' utPLSQL' );
24- ut .expect (l_action_name).to_be_like(' %.ut_output_tests.ut_passing_test' );
50+ ut .expect (l_action_name).to_be_like(' Suite: ut_output_tests' );
51+ ut .expect (l_client_info).to_be_like(' Test: the_test' );
52+ end;
53+
54+ procedure beforeall is
55+ begin
56+ dbms_application_info .read_client_info (gv_before_all_client_info);
57+ end;
58+
59+ procedure beforeeach is
60+ begin
61+ dbms_application_info .read_client_info (gv_before_each_client_info);
62+ end;
63+
64+ procedure before_test is
65+ begin
66+ dbms_application_info .read_client_info (gv_before_test_client_info);
67+ end;
68+ procedure after_test is
69+ begin
70+ dbms_application_info .read_client_info (gv_after_test_client_info);
71+ end;
72+
73+ procedure after_each is
74+ begin
75+ dbms_application_info .read_client_info (gv_after_each_client_info);
76+ end;
77+
78+ procedure afterall is
79+ begin
80+ dbms_application_info .read_client_info (gv_after_all_client_info);
2581 end;
2682
2783end;
@@ -31,6 +87,8 @@ declare
3187 l_output_data dbms_output .chararr ;
3288 l_num_lines integer := 100000 ;
3389 l_output clob;
90+ l_result boolean := true;
91+ l_client_info varchar2 (4000 );
3492begin
3593 -- act
3694 ut .run (' ut_output_tests' );
@@ -42,16 +100,54 @@ begin
42100 dbms_lob .append (l_output,l_output_data(i));
43101 end loop;
44102
45- if l_output like ' %0 failed, 0 errored, 0 disabled, 0 warning(s)%' then
46- :test_result := ut_utils .tr_success ;
103+ gv_before_all_client_info varchar2 (200 );
104+ gv_before_each_client_info varchar2 (200 );
105+ gv_before_test_client_info varchar2 (200 );
106+ gv_after_test_client_info varchar2 (200 );
107+ gv_after_each_client_info varchar2 (200 );
108+ gv_after_all_client_info varchar2 (200 );
109+
110+ execute immediate ' begin :i := ut_output_tests.gv_before_all_client_info; end;' into l_client_info;
111+ if not nvl(l_client_info = ' Test: ut_output_tests (before all)' , false) then
112+ dbms_output .put_line (' Wrong before all text: ' || l_client_info);
113+ l_result := false;
47114 end if;
48-
49- if :test_result != ut_utils .tr_success or :test_result is null then
115+ execute immediate ' begin :i := ut_output_tests.gv_before_each_client_info; end;' into l_client_info;
116+ if not nvl(l_client_info = ' Test: ut_output_tests (before each)' , false) then
117+ dbms_output .put_line (' Wrong before each text: ' || l_client_info);
118+ l_result := false;
119+ end if;
120+ execute immediate ' begin :i := ut_output_tests.gv_before_test_client_info; end;' into l_client_info;
121+ if not nvl(l_client_info = ' Test: ut_output_tests (before test)' , false) then
122+ dbms_output .put_line (' Wrong before test text: ' || l_client_info);
123+ l_result := false;
124+ end if;
125+ execute immediate ' begin :i := ut_output_tests.gv_after_test_client_info; end;' into l_client_info;
126+ if not nvl(l_client_info = ' Test: ut_output_tests (after test)' , false) then
127+ dbms_output .put_line (' Wrong after test text: ' || l_client_info);
128+ l_result := false;
129+ end if;
130+ execute immediate ' begin :i := ut_output_tests.gv_after_each_client_info; end;' into l_client_info;
131+ if not nvl(l_client_info = ' Test: ut_output_tests (after each)' , false) then
132+ dbms_output .put_line (' Wrong after each text: ' || l_client_info);
133+ l_result := false;
134+ end if;
135+ execute immediate ' begin :i := ut_output_tests.gv_after_all_client_info; end;' into l_client_info;
136+ if not nvl(l_client_info = ' Test: ut_output_tests (after all)' , false) then
137+ dbms_output .put_line (' Wrong after all text: ' || l_client_info);
138+ l_result := false;
139+ end if;
140+
141+ if nvl(l_output like ' %0 failed, 0 errored, 0 disabled, 0 warning(s)%' ,false) then
142+ l_result := false;
50143 for i in 1 .. l_num_lines loop
51144 dbms_output .put_line (l_output_data(i));
52145 end loop;
53146 dbms_output .put_line (' Failed: Wrong output' );
54147 end if;
148+ if l_result then
149+ :test_result := ut_utils .tr_success ;
150+ end if;
55151end;
56152/
57153
0 commit comments