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

Skip to content

Commit 5dd4013

Browse files
author
Pavel Kaplya
committed
all tests passed correctly
added call for on_assert procedure of a reproter
1 parent 8940793 commit 5dd4013

7 files changed

Lines changed: 95 additions & 81 deletions

examples/RunExampleComplexSuiteWithCustomDBMSOutputReporter.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ begin
3636

3737
suite2.add_item(testtoexecute);
3838

39-
suite_complex := ut_test_suite(a_suite_name => 'Complex Test Suite', a_items => ut_test_objects_list(suite1, suite2));
39+
suite_complex := ut_test_suite(a_suite_name => 'Complex Test Suite', a_items => ut_objects_list(suite1, suite2));
4040

4141
-- provide a reporter to process results
4242
suite_complex.execute(ut_custom_reporter(a_tab_size => 2));

examples/RunExampleTestSuite.sql

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ declare
1414
suite ut_test_suite;
1515
testtoexecute ut_test;
1616
test_item ut_test;
17+
assert ut_assert_result;
1718
begin
1819
suite := ut_test_suite(a_suite_name => 'Test Suite Name' /*,a_items => ut_test_objects_list()*/);
1920

@@ -39,9 +40,10 @@ begin
3940
dbms_output.put_line('Test:' || test_item.test.form_name);
4041
dbms_output.put_line('Result: ' || test_item.execution_result.result_to_char);
4142
dbms_output.put_line('Assert Results:');
42-
for i in test_item.assert_results.first .. test_item.assert_results.last loop
43-
dbms_output.put_line(i || ' - result: ' || test_item.assert_results(i).result_to_char);
44-
dbms_output.put_line(i || ' - Message: ' || test_item.assert_results(i).message);
43+
for i in test_item.items.first .. test_item.items.last loop
44+
assert := treat(test_item.items(i) as ut_assert_result);
45+
dbms_output.put_line(i || ' - result: ' || assert.result_to_char);
46+
dbms_output.put_line(i || ' - Message: ' || assert.message);
4547
end loop;
4648
end loop;
4749
dbms_output.put_line('---------------------------------------------------');

examples/TestPackageName.sql

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,78 +4,78 @@ set echo off
44

55
--Arrange
66
PROMPT Reports error when unit test package name for a test is null
7-
declare
8-
simple_test ut_test;
9-
begin
7+
declare
8+
simple_test ut_test;
9+
begin
1010

11-
--Act
12-
simple_test := ut_test(a_object_name => null, a_test_procedure => 'ut_exampletest');
11+
--Act
12+
simple_test := ut_test(a_object_name => null, a_test_procedure => 'ut_exampletest');
1313

14-
simple_test.execute();
14+
simple_test.execute();
1515

16-
--Assert
17-
if simple_test.execution_result.result = ut_utils.tr_error then
18-
dbms_output.put_line(' Success');
19-
else
20-
dbms_output.put_line(' Failure');
21-
end if;
22-
end;
23-
/
16+
--Assert
17+
if simple_test.execution_result.result = ut_utils.tr_error then
18+
dbms_output.put_line(' Success');
19+
else
20+
dbms_output.put_line(' Failure');
21+
end if;
22+
end;
23+
/
2424

2525
--Arrange
2626
PROMPT Reports error when unit test package name for a test is invalid
27-
declare
28-
simple_test ut_test;
29-
begin
27+
declare
28+
simple_test ut_test;
29+
begin
3030

31-
--Act
32-
simple_test := ut_test(a_object_name => 'invalid test package name', a_test_procedure => 'ut_exampletest');
31+
--Act
32+
simple_test := ut_test(a_object_name => 'invalid test package name', a_test_procedure => 'ut_exampletest');
3333

34-
simple_test.execute();
34+
simple_test.execute();
3535

36-
--Assert
37-
if simple_test.execution_result.result = ut_utils.tr_error then
38-
dbms_output.put_line(' Success');
39-
else
40-
dbms_output.put_line(' Failure');
41-
end if;
42-
end;
43-
/
36+
--Assert
37+
if simple_test.execution_result.result = ut_utils.tr_error then
38+
dbms_output.put_line(' Success');
39+
else
40+
dbms_output.put_line(' Failure');
41+
end if;
42+
end;
43+
/
4444

4545
--Arrange
4646
PROMPT Reports error when unit test package for a test is in invalid state
47-
begin
48-
execute immediate
49-
'create or replace package invalid_package is
50-
v_variable non_existing_type;
51-
procedure ut_exampletest;
52-
end;';
53-
exception when others then
54-
if sqlcode = - 24344 then
55-
dbms_output.put_line(' Invalid package created');
56-
else
57-
raise;
58-
end if;
59-
end;
60-
/
47+
begin
48+
execute immediate
49+
'create or replace package invalid_package is
50+
v_variable non_existing_type;
51+
procedure ut_exampletest;
52+
end;';
53+
exception when others then
54+
if sqlcode = - 24344 then
55+
dbms_output.put_line(' Invalid package created');
56+
else
57+
raise;
58+
end if;
59+
end;
60+
/
6161

62-
declare
63-
simple_test ut_test;
64-
begin
62+
declare
63+
simple_test ut_test;
64+
begin
6565

66-
--Act
67-
simple_test := ut_test(a_object_name => 'invalid_package', a_test_procedure => 'ut_exampletest');
66+
--Act
67+
simple_test := ut_test(a_object_name => 'invalid_package', a_test_procedure => 'ut_exampletest');
6868

69-
simple_test.execute();
69+
simple_test.execute();
7070

71-
--Assert
72-
if simple_test.execution_result.result = ut_utils.tr_error then
73-
dbms_output.put_line(' Success');
74-
else
75-
dbms_output.put_line(' Failure');
76-
end if;
77-
end;
78-
/
71+
--Assert
72+
if simple_test.execution_result.result = ut_utils.tr_error then
73+
dbms_output.put_line(' Success');
74+
else
75+
dbms_output.put_line(' Failure');
76+
end if;
77+
end;
78+
/
7979

8080
--Cleanup
81-
drop package invalid_package;
81+
drop package invalid_package;

examples/ut_custom_reporter.tpb

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,35 @@ create or replace type body ut_custom_reporter is
2020
(self as ut_dbms_output_suite_reporter).print(tab || msg);
2121
end print;
2222

23-
overriding member procedure begin_suite(self in out nocopy ut_custom_reporter, a_suite_name in varchar2) as
23+
overriding member procedure begin_suite(self in out nocopy ut_custom_reporter, a_suite ut_object) as
2424
begin
25-
(self as ut_dbms_output_suite_reporter).begin_suite(a_suite_name);
25+
(self as ut_dbms_output_suite_reporter).begin_suite(a_suite);
2626
lvl := lvl + 1;
2727
end;
2828

29-
overriding member procedure begin_test(self in out nocopy ut_custom_reporter, a_test_name in varchar2, a_test_call_params in ut_test_call_params) as
29+
overriding member procedure begin_test(self in out nocopy ut_custom_reporter, a_test ut_object) as
3030
begin
31-
(self as ut_dbms_output_suite_reporter).begin_test(a_test_name,a_test_call_params);
31+
(self as ut_dbms_output_suite_reporter).begin_test(a_test);
3232
lvl := lvl + 1;
3333
end;
34+
35+
overriding member procedure on_assert(self in out nocopy ut_custom_reporter, an_assert ut_object) is
36+
begin
37+
lvl := lvl + 1;
38+
(self as ut_dbms_output_suite_reporter).on_assert(an_assert);
39+
lvl := lvl - 1;
40+
end;
3441

35-
overriding member procedure end_test(self in out nocopy ut_custom_reporter, a_test_name in varchar2, a_test_call_params in ut_test_call_params, a_execution_result in ut_execution_result, a_assert_list in ut_assert_list) as
42+
overriding member procedure end_test(self in out nocopy ut_custom_reporter, a_test ut_object) as
3643
begin
3744
lvl := lvl - 1;
38-
(self as ut_dbms_output_suite_reporter).end_test(a_test_name, a_test_call_params, a_execution_result, a_assert_list);
45+
(self as ut_dbms_output_suite_reporter).end_test(a_test);
3946
end;
4047

41-
overriding member procedure end_suite(self in out nocopy ut_custom_reporter, a_suite_name in varchar2, a_suite_execution_result in ut_execution_result) as
48+
overriding member procedure end_suite(self in out nocopy ut_custom_reporter, a_suite ut_object) as
4249
begin
4350
lvl := lvl - 1;
44-
(self as ut_dbms_output_suite_reporter).end_suite(a_suite_name,a_suite_execution_result);
51+
(self as ut_dbms_output_suite_reporter).end_suite(a_suite);
4552
end;
4653

4754
end;

examples/ut_custom_reporter.tps

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ create or replace type ut_custom_reporter under ut_dbms_output_suite_reporter
77
constructor function ut_custom_reporter(a_tab_size integer default 4) return self as result,
88
member function tab(self in ut_custom_reporter) return varchar2,
99
overriding member procedure print(msg varchar2),
10-
overriding member procedure begin_suite(self in out nocopy ut_custom_reporter, a_suite_name in varchar2),
11-
overriding member procedure begin_test(self in out nocopy ut_custom_reporter, a_test_name in varchar2, a_test_call_params in ut_test_call_params),
12-
overriding member procedure end_test(self in out nocopy ut_custom_reporter, a_test_name in varchar2, a_test_call_params in ut_test_call_params, a_execution_result in ut_execution_result, a_assert_list in ut_assert_list),
13-
overriding member procedure end_suite(self in out nocopy ut_custom_reporter, a_suite_name in varchar2, a_suite_execution_result in ut_execution_result)
10+
overriding member procedure begin_suite(self in out nocopy ut_custom_reporter, a_suite ut_object),
11+
overriding member procedure begin_test(self in out nocopy ut_custom_reporter, a_test ut_object),
12+
overriding member procedure on_assert(self in out nocopy ut_custom_reporter, an_assert ut_object),
13+
overriding member procedure end_test(self in out nocopy ut_custom_reporter, a_test ut_object),
14+
overriding member procedure end_suite(self in out nocopy ut_custom_reporter, a_suite ut_object)
1415
)
1516
not final
1617
/

source/types/ut_test.tpb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ create or replace type body ut_test is
33
constructor function ut_test(a_object_name varchar2, a_test_procedure varchar2, a_test_name in varchar2 default null, a_owner_name varchar2 default null, a_setup_procedure varchar2 default null, a_teardown_procedure varchar2 default null)
44
return self as result is
55
begin
6-
self.name := a_test_name;
7-
self.object_type := 1;
8-
self.test := ut_test_call_params(object_name => trim(a_object_name)
9-
,procedure_name => trim(a_test_procedure)
10-
,owner_name => trim(a_owner_name));
6+
self.name := a_test_name;
7+
self.object_type := 1;
8+
self.test := ut_test_call_params(object_name => trim(a_object_name)
9+
,procedure_name => trim(a_test_procedure)
10+
,owner_name => trim(a_owner_name));
1111

1212
if a_setup_procedure is not null then
1313
self.setup := ut_test_call_params(object_name => trim(a_object_name)
@@ -89,12 +89,16 @@ create or replace type body ut_test is
8989
self.execution_result.end_time := current_timestamp;
9090
ut_assert.process_asserts(self.items);
9191
end;
92-
93-
self.calc_execution_result;
92+
93+
self.calc_execution_result;
9494

9595
if reporter is not null then
96+
for i in 1 .. self.items.count loop
97+
reporter.on_assert(treat(self.items(i) as ut_assert_result));
98+
end loop;
9699
reporter.end_test(self);
97100
end if;
101+
98102
return reporter;
99103
end;
100104

source/ut_utils.pkb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ create or replace package body ut_utils is
66
when tr_success then tr_success_char
77
when tr_failure then tr_failure_char
88
when tr_error then tr_error_char
9-
else 'Unknown(' || coalesce(a_test_result,'NULL') || ')'
9+
else 'Unknown(' || coalesce(to_char(a_test_result),'NULL') || ')'
1010
end;
1111
end test_result_to_char;
1212

0 commit comments

Comments
 (0)