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

Skip to content

Commit eefde4a

Browse files
authored
Merge pull request #34 from Pazus/object-types-design
Preparation for the annotation configuration approach and suite setup/teardown
2 parents fd59510 + b38a08a commit eefde4a

13 files changed

Lines changed: 151 additions & 50 deletions

examples/RunExampleComplexSuiteWithCustomDBMSOutputReporter.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ begin
4343
end;
4444
/
4545

46-
--drop type ut_custom_reporter;
46+
drop type ut_custom_reporter;
4747
drop package ut_exampletest;
4848
drop package ut_exampletest2;

examples/ut_custom_reporter.tpb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ create or replace type body ut_custom_reporter is
3232
lvl := lvl + 1;
3333
end;
3434

35-
overriding member procedure on_assert(self in out nocopy ut_custom_reporter, an_assert ut_object) is
35+
overriding member procedure on_assert(self in out nocopy ut_custom_reporter, a_assert ut_object) is
3636
begin
3737
lvl := lvl + 1;
38-
(self as ut_dbms_output_suite_reporter).on_assert(an_assert);
38+
(self as ut_dbms_output_suite_reporter).on_assert(a_assert);
3939
lvl := lvl - 1;
4040
end;
4141

examples/ut_custom_reporter.tps

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ create or replace type ut_custom_reporter under ut_dbms_output_suite_reporter
99
overriding member procedure print(msg varchar2),
1010
overriding member procedure begin_suite(self in out nocopy ut_custom_reporter, a_suite ut_object),
1111
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),
12+
overriding member procedure on_assert(self in out nocopy ut_custom_reporter, a_assert ut_object),
1313
overriding member procedure end_test(self in out nocopy ut_custom_reporter, a_test ut_object),
1414
overriding member procedure end_suite(self in out nocopy ut_custom_reporter, a_suite ut_object)
1515
)

source/install.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
@@ut_utils.pkb
1919
@@types/ut_assert_result.tpb
20+
@@types/ut_suite_reporter.tpb
2021
@@types/ut_object.tpb
2122
@@types/ut_composite_object.tpb
2223
@@types/ut_test.tpb

source/types/ut_composite_object.tpb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
create or replace type body ut_composite_object is
2+
23
member procedure calc_execution_result(self in out nocopy ut_composite_object) is
34
l_result integer(1) := ut_utils.tr_success;
45
begin
@@ -9,5 +10,28 @@ create or replace type body ut_composite_object is
910
self.result := l_result;
1011
end;
1112

13+
-- Member procedures and functions
14+
member function item_index(a_object_name varchar2) return pls_integer is
15+
l_item_index pls_integer := self.items.first;
16+
c_lowered_obj_name constant varchar2(4000 char) := lower(trim(a_object_name));
17+
l_result pls_integer;
18+
begin
19+
while l_item_index is not null loop
20+
if self.items(l_item_index) is of(ut_test_object) and treat(self.items(l_item_index) as ut_test_object)
21+
.object_name = c_lowered_obj_name then
22+
l_result := l_item_index;
23+
exit;
24+
end if;
25+
l_item_index := self.items.next(l_item_index);
26+
end loop;
27+
return l_result;
28+
end item_index;
29+
30+
member procedure add_item(self in out nocopy ut_composite_object, a_item ut_object) is
31+
begin
32+
self.items.extend;
33+
self.items(self.items.last) := a_item;
34+
end add_item;
35+
1236
end;
1337
/

source/types/ut_composite_object.tps

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ create or replace type ut_composite_object force under ut_object
22
(
33
items ut_objects_list,
44

5-
member procedure calc_execution_result(self in out nocopy ut_composite_object)
5+
member procedure calc_execution_result(self in out nocopy ut_composite_object),
6+
member function item_index(a_object_name varchar2) return pls_integer,
7+
member procedure add_item(self in out nocopy ut_composite_object, a_item ut_object)
68
) not final not instantiable
79
/

source/types/ut_suite_reporter.tpb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
create or replace type body ut_suite_reporter is
2+
3+
-- Member procedures and functions
4+
member procedure begin_suite(self in out nocopy ut_suite_reporter, a_suite in ut_object) is
5+
begin
6+
null;
7+
end begin_suite;
8+
9+
member procedure begin_test(self in out nocopy ut_suite_reporter, a_test in ut_object) is
10+
begin
11+
null;
12+
end begin_test;
13+
14+
member procedure on_assert(self in out nocopy ut_suite_reporter, a_assert in ut_object) is
15+
begin
16+
null;
17+
end on_assert;
18+
19+
member procedure end_test(self in out nocopy ut_suite_reporter, a_test in ut_object) is
20+
begin
21+
null;
22+
end end_test;
23+
24+
member procedure end_suite(self in out nocopy ut_suite_reporter, a_suite in ut_object) is
25+
begin
26+
null;
27+
end end_suite;
28+
29+
end;
30+
/

source/types/ut_suite_reporter.tps

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ create or replace type ut_suite_reporter force as object
22
(
33
name varchar2(250 char),
44

5-
not instantiable member procedure begin_suite(self in out nocopy ut_suite_reporter, a_suite in ut_object),
6-
not instantiable member procedure begin_test(self in out nocopy ut_suite_reporter, a_test in ut_object),
7-
not instantiable member procedure on_assert(self in out nocopy ut_suite_reporter, a_assert in ut_object),
8-
not instantiable member procedure end_test(self in out nocopy ut_suite_reporter, a_test in ut_object),
9-
not instantiable member procedure end_suite(self in out nocopy ut_suite_reporter, a_suite in ut_object)
5+
member procedure begin_suite(self in out nocopy ut_suite_reporter, a_suite in ut_object),
6+
member procedure begin_test(self in out nocopy ut_suite_reporter, a_test in ut_object),
7+
member procedure on_assert(self in out nocopy ut_suite_reporter, a_assert in ut_object),
8+
member procedure end_test(self in out nocopy ut_suite_reporter, a_test in ut_object),
9+
member procedure end_suite(self in out nocopy ut_suite_reporter, a_suite in ut_object)
1010

1111
)
1212
not instantiable not final

source/types/ut_test.tpb

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,29 @@ create or replace type body ut_test is
55
begin
66
self.name := a_test_name;
77
self.object_type := 1;
8+
self.object_name := lower(trim(a_test_procedure));
89
self.test := ut_executable(object_name => trim(a_object_name)
9-
,procedure_name => trim(a_test_procedure)
10-
,owner_name => trim(a_owner_name));
10+
,procedure_name => trim(a_test_procedure)
11+
,owner_name => trim(a_owner_name));
1112

1213
if a_setup_procedure is not null then
1314
self.setup := ut_executable(object_name => trim(a_object_name)
14-
,procedure_name => trim(a_setup_procedure)
15-
,owner_name => trim(a_owner_name));
15+
,procedure_name => trim(a_setup_procedure)
16+
,owner_name => trim(a_owner_name));
1617
end if;
1718

1819
if a_teardown_procedure is not null then
1920
self.teardown := ut_executable(object_name => trim(a_object_name)
20-
,procedure_name => trim(a_teardown_procedure)
21-
,owner_name => trim(a_owner_name));
21+
,procedure_name => trim(a_teardown_procedure)
22+
,owner_name => trim(a_owner_name));
2223
end if;
2324
return;
2425
end ut_test;
2526

26-
member function is_valid(self in ut_test) return boolean is
27+
member function is_valid return boolean is
2728
begin
28-
return test.is_valid('test') and (setup is null or setup.is_valid('setup')) and
29-
(teardown is null or teardown.is_valid('teardown'));
29+
return test.is_valid('test') and(setup is null or setup.is_valid('setup')) and(teardown is null or
30+
teardown.is_valid('teardown'));
3031
end is_valid;
3132

3233
overriding member procedure execute(self in out nocopy ut_test, a_reporter ut_suite_reporter) is
@@ -62,7 +63,7 @@ create or replace type body ut_test is
6263

6364
ut_assert.report_error(sqlerrm(sqlcode) || ' ' || dbms_utility.format_error_backtrace);
6465
end;
65-
66+
6667
if self.teardown is not null then
6768
self.teardown.execute;
6869
end if;

source/types/ut_test.tps

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
create or replace type ut_test force under ut_test_object
22
(
3-
setup ut_executable,
4-
test ut_executable,
5-
teardown ut_executable,
3+
setup ut_executable,
4+
test ut_executable,
5+
teardown ut_executable,
66

77
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)
88
return self as result,
99

10-
member function is_valid(self in ut_test) return boolean,
10+
member function is_valid return boolean,
1111

1212
overriding member procedure execute(self in out nocopy ut_test, a_reporter ut_suite_reporter),
1313
overriding member function execute(self in out nocopy ut_test, a_reporter ut_suite_reporter) return ut_suite_reporter,

0 commit comments

Comments
 (0)