1+ create or replace package body test_before_after_annotations is
2+ g_tests_results clob;
3+
4+ procedure create_tests_results is
5+ pragma autonomous_transaction;
6+
7+ l_test_package_spec varchar2(32737);
8+ l_test_package_body varchar2(32737);
9+ l_dummy_utility_pkg_spec varchar2(32737);
10+ l_dummy_utility_pkg_body varchar2(32737);
11+ l_test_results ut3.ut_varchar2_list;
12+
13+ procedure drop_package(a_package_name varchar2)
14+ is
15+ begin
16+ execute immediate 'drop package '||a_package_name;
17+ end;
18+ begin
19+ l_test_package_spec := '
20+ create or replace package dummy_before_after_test is
21+ --%suite(Package to test annotations beforetest and aftertest)
22+
23+ l_dummy_1 integer;
24+ l_dummy_2 integer;
25+ l_dummy_3 integer;
26+
27+ --%beforeeach
28+ procedure clean_global_variables;
29+
30+ --%test(Beforetest with call to procedure external to the test package)
31+ --%beforetest(dummy_utility_pkg_1.test1)
32+ procedure beforetest_one_ext_procedure;
33+
34+
35+ --%test(Beforetest with call to multi procedures external and interal to the test package)
36+ --%beforetest(dummy_utility_pkg_1.test1, test2, ut3_tester.dummy_utility_pkg_1.test3)
37+ procedure beforetest_multi_ext_procedure;
38+
39+ --%test(Beforetest with call to multi procedures where one does not exist)
40+ --%beforetest(dummy_utility_pkg_1.test1, non_existent_procedure, ut3_tester.dummy_utility_pkg_1.test3)
41+ procedure beforetest_one_err_procedure;
42+
43+ procedure test2;
44+ end;
45+ ';
46+
47+ l_test_package_body := '
48+ create or replace package body dummy_before_after_test is
49+ procedure clean_global_variables is
50+ begin
51+ l_dummy_1 := null;
52+ l_dummy_2 := null;
53+ l_dummy_3 := null;
54+ end;
55+
56+ procedure beforetest_one_ext_procedure is
57+ begin
58+ ut3.ut.expect(l_dummy_1).to_equal(1);
59+ end;
60+
61+ procedure beforetest_multi_ext_procedure
62+ is
63+ begin
64+ ut3.ut.expect(l_dummy_1).to_equal(1);
65+ ut3.ut.expect(l_dummy_2).to_equal(2);
66+ ut3.ut.expect(l_dummy_3).to_equal(3);
67+ end;
68+
69+ procedure beforetest_one_err_procedure
70+ is
71+ begin
72+ null;
73+ end;
74+
75+ procedure test2 is
76+ begin
77+ l_dummy_2 := 2;
78+ end;
79+ end;
80+ ';
81+
82+ l_dummy_utility_pkg_spec := '
83+ create or replace package dummy_utility_pkg_1 is
84+ procedure test1;
85+
86+ procedure test3;
87+ end;
88+ ';
89+
90+ l_dummy_utility_pkg_body := '
91+ create or replace package body dummy_utility_pkg_1 is
92+ procedure test1 is
93+ begin
94+ dummy_before_after_test.l_dummy_1 := 1;
95+ end;
96+
97+ procedure test3 is
98+ begin
99+ dummy_before_after_test.l_dummy_3 := 3;
100+ end;
101+ end;
102+ ';
103+
104+ execute immediate l_test_package_spec;
105+ execute immediate l_test_package_body;
106+ execute immediate l_dummy_utility_pkg_spec;
107+ execute immediate l_dummy_utility_pkg_body;
108+
109+ --Execute the tests and recolect the results
110+ select * bulk collect into l_test_results from table(ut3.ut.run(('dummy_before_after_test')));
111+
112+ drop_package('dummy_utility_pkg_1');
113+ drop_package('dummy_before_after_test');
114+
115+ g_tests_results := ut3.ut_utils.table_to_clob(l_test_results);
116+ end;
117+
118+ procedure beforetest_one_ext_procedure
119+ is
120+ begin
121+ ut.expect(g_tests_results).to_match('^\s*Beforetest with call to procedure external to the test package \[[\.0-9]+ sec\]\s*$','m');
122+ ut.expect(g_tests_results).not_to_match('beforetest_one_ext_procedure');
123+ end;
124+
125+ procedure beforetest_multi_ext_procedure
126+ is
127+ begin
128+ ut.expect(g_tests_results).to_match('^\s*Beforetest with call to multi procedures external and interal to the test package \[[\.0-9]+ sec\]\s*$','m');
129+ ut.expect(g_tests_results).not_to_match('beforetest_multi_ext_procedure');
130+ end;
131+
132+ procedure beforetest_one_err_procedure
133+ is
134+ begin
135+ ut.expect(g_tests_results).not_to_match('^\s*Beforetest with call to multi procedures where one does not exist \[[\.0-9]+ sec\]\s*$','m');
136+ ut.expect(g_tests_results).to_match('beforetest_one_err_procedure');
137+ end;
138+ end;
0 commit comments