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

Skip to content

Commit 1a329ed

Browse files
committed
Output is now separated from reporter.
A new interface ut_output is created. A new ut_output_dbms_output class is created. Method print is moved from into the base class.
1 parent ec2bb11 commit 1a329ed

16 files changed

Lines changed: 116 additions & 41 deletions

examples/RunExampleTestSuiteWithCompositeReporter.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ begin
3232
suite.add_item(testtoexecute);
3333

3434
-- provide a reporter to process results
35-
suite.do_execute(ut_composite_reporter(ut_reporters_list(ut_dbms_output_suite_reporter)));
35+
suite.do_execute(ut_composite_reporter(ut_reporters_list(ut_dbms_output_suite_reporter, ut_dbms_output_suite_reporter)));
3636
end;
3737
/
3838

examples/ut_custom_reporter.tpb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
create or replace type body ut_custom_reporter is
22

3-
constructor function ut_custom_reporter(a_tab_size integer default 4) return self as result is
3+
constructor function ut_custom_reporter(a_tab_size integer default 4, a_output ut_output default ut_output_dbms_output() ) return self as result is
44
begin
55
self.name := $$plsql_unit;
66
self.lvl := 0;
77
self.tab_size := a_tab_size;
8+
self.output := a_output;
89
return;
910
end;
1011

@@ -15,9 +16,9 @@ create or replace type body ut_custom_reporter is
1516
return tab_str;
1617
end tab;
1718

18-
overriding member procedure print(msg varchar2) is
19+
overriding member procedure print(a_text varchar2) is
1920
begin
20-
(self as ut_dbms_output_suite_reporter).print(tab || msg);
21+
(self as ut_dbms_output_suite_reporter).print(tab || a_text);
2122
end print;
2223

2324
overriding member procedure before_suite(self in out nocopy ut_custom_reporter, a_suite ut_object) as

examples/ut_custom_reporter.tps

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ create or replace type ut_custom_reporter under ut_dbms_output_suite_reporter
44
tab_size integer,
55

66
-- Member functions and procedures
7-
constructor function ut_custom_reporter(a_tab_size integer default 4) return self as result,
7+
constructor function ut_custom_reporter(a_tab_size integer default 4, a_output ut_output default ut_output_dbms_output() ) return self as result,
88
member function tab(self in ut_custom_reporter) return varchar2,
9-
overriding member procedure print(msg varchar2),
9+
overriding member procedure print(a_text varchar2),
1010
overriding member procedure before_suite(self in out nocopy ut_custom_reporter, a_suite ut_object),
1111
overriding member procedure before_test(self in out nocopy ut_custom_reporter, a_test ut_object),
1212
overriding member procedure on_assert_process(self in out nocopy ut_custom_reporter, a_assert ut_object),

source/core/types/ut_composite_reporter.tpb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
create or replace type body ut_composite_reporter is
22

3-
constructor function ut_composite_reporter(self in out nocopy ut_composite_reporter,a_reporters ut_reporters_list default ut_reporters_list())
3+
constructor function ut_composite_reporter(self in out nocopy ut_composite_reporter, a_reporters ut_reporters_list default ut_reporters_list())
44
return self as result is
55
begin
66
self.name := $$plsql_unit;

source/core/types/ut_composite_reporter.tps

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ create or replace type ut_composite_reporter under ut_reporter
22
(
33
reporters ut_reporters_list,
44

5-
constructor function ut_composite_reporter(self in out nocopy ut_composite_reporter,a_reporters ut_reporters_list default ut_reporters_list())
5+
constructor function ut_composite_reporter(self in out nocopy ut_composite_reporter, a_reporters ut_reporters_list default ut_reporters_list())
66
return self as result,
77
member procedure add_reporter (self in out nocopy ut_composite_reporter, a_reporter ut_reporter),
88
member procedure remove_reporter(self in out nocopy ut_composite_reporter, a_index pls_integer),
9-
10-
-- tese-run hooks
9+
10+
-- run hooks
1111
overriding member procedure before_run(self in out nocopy ut_composite_reporter, a_suites in ut_objects_list),
1212
overriding member procedure after_run (self in out nocopy ut_composite_reporter, a_suites in ut_objects_list),
1313

source/core/types/ut_output.tpb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
create or replace type body ut_output as
2+
3+
final member function generate_output_id return varchar2 is
4+
begin
5+
return output_type||'-'||dbms_pipe.unique_session_name||'-'||ut_utils.to_string(cast(current_timestamp as timestamp));
6+
end;
7+
8+
end;
9+
/

source/core/types/ut_output.tps

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
create or replace type ut_output as object (
2+
output_type varchar2(128),
3+
output_id varchar2(128),
4+
final member function generate_output_id return varchar2,
5+
not instantiable member procedure open(self in out nocopy ut_output),
6+
not instantiable member procedure send(self in out nocopy ut_output, a_text clob),
7+
not instantiable member procedure close(self in out nocopy ut_output)
8+
) not final not instantiable
9+
/
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
create or replace type body ut_output_dbms_output as
2+
3+
constructor function ut_output_dbms_output(self in out nocopy ut_output_dbms_output) return self as result is
4+
begin
5+
self.output_type := $$plsql_unit;
6+
self.output_id := self.generate_output_id();
7+
return;
8+
end;
9+
10+
overriding member procedure open(self in out nocopy ut_output_dbms_output) is
11+
begin
12+
null;
13+
end;
14+
15+
overriding member procedure send(self in out nocopy ut_output_dbms_output, a_text clob) is
16+
l_text_part varchar2(32767 byte);
17+
--we're assuming max of 2 bytes per char
18+
c_size_limit_chars constant integer := (32767/2);
19+
i integer := 0;
20+
begin
21+
while i <= length(a_text) loop
22+
l_text_part := substr( a_text, i + 1, c_size_limit_chars );
23+
dbms_output.put_line(l_text_part);
24+
i := i + c_size_limit_chars;
25+
end loop;
26+
end;
27+
28+
overriding member procedure close(self in out nocopy ut_output_dbms_output) is
29+
begin
30+
null;
31+
end;
32+
33+
end;
34+
/
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
create or replace type ut_output_dbms_output under ut_output (
2+
constructor function ut_output_dbms_output(self in out nocopy ut_output_dbms_output) return self as result,
3+
overriding member procedure open(self in out nocopy ut_output_dbms_output),
4+
overriding member procedure send(self in out nocopy ut_output_dbms_output, a_text clob),
5+
overriding member procedure close(self in out nocopy ut_output_dbms_output)
6+
) not final
7+
/

source/core/types/ut_reporter.tpb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
create or replace type body ut_reporter is
22

3-
constructor function ut_reporter(self in out nocopy ut_reporter) return self as result is
3+
constructor function ut_reporter(self in out nocopy ut_reporter, a_output ut_output default ut_output_dbms_output()) return self as result is
44
begin
5+
self.output := a_output;
56
self.name := 'Null reporter';
67
return;
78
end;
89

10+
member procedure print(self in out nocopy ut_reporter, a_text varchar2) is
11+
begin
12+
self.output.send(a_text);
13+
end print;
14+
915
member procedure before_run(self in out nocopy ut_reporter, a_suites in ut_objects_list) is
1016
begin
11-
null;
17+
self.output.open();
1218
end;
1319
member procedure after_run(self in out nocopy ut_reporter, a_suites in ut_objects_list) is
1420
begin
15-
null;
21+
self.output.close();
1622
end;
1723
member procedure before_suite(self in out nocopy ut_reporter, a_suite in ut_object) is
1824
begin

0 commit comments

Comments
 (0)