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

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
merged small fixes from PR #4
  • Loading branch information
Pazus committed Jul 24, 2016
commit 4f0f71239691fa47b76d4c3b7bb29d943a3a7460
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
--Shows how to create a test suite with the default reporter which is dbms_output
--No tables are used for this.
--Suite Management packages are when developed will make this easier.
Clear Screen
--Clear Screen
Set Serveroutput On Size Unlimited format truncated
set echo off
--install the example unit test packages
Expand Down Expand Up @@ -43,4 +43,6 @@ begin
end;
/

drop type ut_custom_reporter;
--drop type ut_custom_reporter;
drop package ut_exampletest;
drop package ut_exampletest2;
5 changes: 4 additions & 1 deletion examples/RunExampleTestSuite.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
--Shows how to create a test suite in code and call the test runner.
--No tables are used for this.
--Suite Management packages are when developed will make this easier.
Clear Screen
--Clear Screen
Set Serveroutput On Size Unlimited format truncated
set echo off
--install the example unit test packages
Expand Down Expand Up @@ -47,3 +47,6 @@ begin
dbms_output.put_line('---------------------------------------------------');
end;
/

drop package ut_exampletest;
drop package ut_exampletest2;
10 changes: 7 additions & 3 deletions examples/RunExampleTestSuiteWithCustomDBMSOutputReporter.sql
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
--Shows how to create a test suite with the default reporter which is dbms_output
--No tables are used for this.
--Suite Management packages are when developed will make this easier.
Clear Screen
Set Serveroutput On Size Unlimited format truncated --http://stackoverflow.com/questions/2584492/how-to-prevent-dbms-output-put-line-from-trimming-leading-whitespace
--Clear Screen
--http://stackoverflow.com/questions/2584492/how-to-prevent-dbms-output-put-line-from-trimming-leading-whitespace
Set Serveroutput On Size Unlimited format truncated
set echo off
--install the example unit test packages
@@ut_exampletest.pks
Expand Down Expand Up @@ -40,4 +41,7 @@ end;
/


drop type ut_custom_reporter;
--FIXME this drop is causing issues when executing script several times within single session
--drop type ut_custom_reporter;
drop package ut_exampletest;
drop package ut_exampletest2;
5 changes: 4 additions & 1 deletion examples/RunExampleTestSuiteWithDBMSOutputReporter.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
--Shows how to create a test suite with the default reporter which is dbms_output
--No tables are used for this.
--Suite Management packages are when developed will make this easier.
Clear Screen
--Clear Screen
Set Serveroutput On Size Unlimited format truncated
set echo off
--install the example unit test packages
Expand Down Expand Up @@ -34,3 +34,6 @@ begin
suite.execute(ut_dbms_output_suite_reporter);
end;
/

drop package ut_exampletest;
drop package ut_exampletest2;
4 changes: 3 additions & 1 deletion examples/RunExampleTestThroughBaseClass.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
--This shows how the interna test engine works to test a single package.
--No tables are used for this and exceptions are handled better.
Clear Screen
--Clear Screen
Set Serveroutput On Size Unlimited format truncated
set echo off
--install the example unit test packages
Expand All @@ -23,3 +23,5 @@ begin
simple_test.execute(reporter);
end;
/

drop package ut_exampletest;
12 changes: 6 additions & 6 deletions examples/ut_custom_reporter.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,6 @@ create or replace type body ut_custom_reporter is
lvl := lvl + 1;
end;

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
begin
lvl := lvl - 1;
(self as ut_dbms_output_suite_reporter).end_suite(a_suite_name,a_suite_execution_result);
end;

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
begin
(self as ut_dbms_output_suite_reporter).begin_test(a_test_name,a_test_call_params);
Expand All @@ -43,6 +37,12 @@ create or replace type body ut_custom_reporter is
lvl := lvl - 1;
(self as ut_dbms_output_suite_reporter).end_test(a_test_name, a_test_call_params, a_execution_result, a_assert_list);
end;

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
begin
lvl := lvl - 1;
(self as ut_dbms_output_suite_reporter).end_suite(a_suite_name,a_suite_execution_result);
end;

end;
/
4 changes: 2 additions & 2 deletions examples/ut_custom_reporter.tps
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ create or replace type ut_custom_reporter under ut_dbms_output_suite_reporter
member function tab(self in ut_custom_reporter) return varchar2,
overriding member procedure print(msg varchar2),
overriding member procedure begin_suite(self in out nocopy ut_custom_reporter, a_suite_name in varchar2),
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),
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),
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)
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),
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)
)
not final
/
8 changes: 1 addition & 7 deletions source/types/ut_reporter_decorator.tps
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
create or replace type ut_reporter_decorator under ut_suite_reporter
(
-- Author : PAZZZ
-- Created : 20.07.2016 23:31:07
-- Purpose :

-- Attributes
decorated_reporter ut_suite_reporter,

-- Member functions and procedures
constructor function ut_reporter_decorator(a_decorated_reporter ut_suite_reporter) return self as result,
member procedure init(self in out nocopy ut_reporter_decorator, a_decorated_reporter ut_suite_reporter)
member procedure init(self in out nocopy ut_reporter_decorator, a_decorated_reporter ut_suite_reporter)

) not final not instantiable
/
31 changes: 8 additions & 23 deletions source/types/ut_test.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -14,29 +14,15 @@ create or replace type body ut_test is

member function is_valid(self in ut_test) return boolean is
begin
if call_params.test_procedure is null then
return false;
end if;

if not ut_metadata.resolvable(call_params.owner_name, call_params.object_name, call_params.test_procedure) then
return false;
end if;

if call_params.setup_procedure is not null and
not ut_metadata.resolvable(call_params.owner_name, call_params.object_name, call_params.setup_procedure) then
return false;
end if;

if call_params.teardown_procedure is not null and
not ut_metadata.resolvable(call_params.owner_name, call_params.object_name, call_params.teardown_procedure) then
return false;
end if;

return true;
return call_params.test_procedure is not null and ut_metadata.resolvable(call_params.owner_name, call_params.object_name, call_params.test_procedure) and (call_params.setup_procedure is null OR ut_metadata.resolvable(call_params.owner_name, call_params.object_name, call_params.setup_procedure)) and (call_params.teardown_procedure is null OR ut_metadata.resolvable(call_params.owner_name, call_params.object_name, call_params.teardown_procedure));
end is_valid;

overriding member procedure execute(self in out nocopy ut_test, a_reporter ut_suite_reporter) is
params_valid boolean;
reporter ut_suite_reporter := a_reporter;
begin
reporter := execute(reporter);
end;
overriding member function execute(self in out nocopy ut_test, a_reporter ut_suite_reporter) return ut_suite_reporter is
reporter ut_suite_reporter := a_reporter;
begin
if reporter is not null then
Expand All @@ -49,10 +35,8 @@ create or replace type body ut_test is
$end

self.execution_result := ut_execution_result();

self.call_params.validate_params(params_valid);

if params_valid then
if self.call_params.validate_params() then
self.call_params.setup;
begin
self.call_params.run_test;
Expand Down Expand Up @@ -97,6 +81,7 @@ create or replace type body ut_test is
,a_execution_result => self.execution_result
,a_assert_list => self.assert_results);
end if;
return reporter;
end;

overriding member procedure execute(self in out nocopy ut_test) is
Expand Down
10 changes: 2 additions & 8 deletions source/types/ut_test.tps
Original file line number Diff line number Diff line change
@@ -1,14 +1,7 @@
create or replace type ut_test force under ut_test_object
(

/*
object_name varchar2(32 char),
test_procedure varchar2(32 char),
owner_name varchar2(32 char),
setup_procedure varchar2(32 char),
teardown_procedure varchar2(32 char),
*/
call_params ut_test_call_params,
call_params ut_test_call_params,
assert_results ut_assert_list,

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)
Expand All @@ -17,6 +10,7 @@ create or replace type ut_test force under ut_test_object
member function is_valid(self in ut_test) return boolean,

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

)
Expand Down
6 changes: 3 additions & 3 deletions source/types/ut_test_call_params.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ create or replace type body ut_test_call_params is
end is_valid;
*/

member procedure validate_params(self in ut_test_call_params, a_result out boolean) is
member function validate_params(self in ut_test_call_params) return boolean is
a_result boolean := true;
begin
a_result := true;

if self.object_name is null then
a_result := false;
Expand Down Expand Up @@ -94,7 +94,7 @@ create or replace type body ut_test_call_params is
nvl(self.teardown_procedure, '<missing procedure name>'));
end if;
end if;

return a_result;
end validate_params;

member procedure setup(self in ut_test_call_params) is
Expand Down
20 changes: 10 additions & 10 deletions source/types/ut_test_call_params.tps
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
create or replace type ut_test_call_params force as object
(
object_name varchar2(32 char),
test_procedure varchar2(32 char),
owner_name varchar2(32 char),
setup_procedure varchar2(32 char),
teardown_procedure varchar2(32 char),
test_procedure varchar2(32 char),
owner_name varchar2(32 char),
setup_procedure varchar2(32 char),
teardown_procedure varchar2(32 char),

static procedure execute_call(a_owner varchar2, a_object varchar2, a_procedure_name varchar2),
--member function is_valid(self in ut_test_call_params) return boolean,
member procedure validate_params(self in ut_test_call_params, a_result out boolean),
member procedure setup(self in ut_test_call_params),
member procedure run_test(self in ut_test_call_params),
member procedure teardown(self in ut_test_call_params)
static procedure execute_call(a_owner varchar2, a_object varchar2, a_procedure_name varchar2),
--member function is_valid(self in ut_test_call_params) return boolean,
member function validate_params(self in ut_test_call_params) return boolean,
member procedure setup(self in ut_test_call_params),
member procedure run_test(self in ut_test_call_params),
member procedure teardown(self in ut_test_call_params)
) final
/
5 changes: 1 addition & 4 deletions source/types/ut_test_object.tps
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,9 @@ create or replace type ut_test_object force as object
name varchar2(250 char),
execution_result ut_execution_result,

--not instantiable member procedure run(self in out ut_test_object),
not instantiable member procedure execute(self in out nocopy ut_test_object, a_reporter ut_suite_reporter),
not instantiable member function execute(self in out nocopy ut_test_object, a_reporter ut_suite_reporter) return ut_suite_reporter,
not instantiable member procedure execute(self in out nocopy ut_test_object)
--not instantiable member procedure execute(self in out nocopy ut_test_object, a_reporters in ut_suite_reporters),
--not instantiable member procedure execute(self in out nocopy ut_test_object, a_reporter in ut_abstract_suite_reporter),
--not instantiable member procedure execute(self in out nocopy ut_test_object)
)
not instantiable not final
/
9 changes: 8 additions & 1 deletion source/types/ut_test_suite.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ create or replace type body ut_test_suite is

overriding member procedure execute(self in out nocopy ut_test_suite, a_reporter ut_suite_reporter) is
reporter ut_suite_reporter := a_reporter;
begin
reporter := execute(reporter);
end;

overriding member function execute(self in out nocopy ut_test_suite, a_reporter ut_suite_reporter) return ut_suite_reporter is
reporter ut_suite_reporter := a_reporter;
begin
if reporter is not null then
reporter.begin_suite(self.name);
Expand All @@ -28,7 +34,7 @@ create or replace type body ut_test_suite is
self.execution_result := ut_execution_result;

for i in self.items.first .. self.items.last loop
self.items(i).execute(a_reporter => reporter);
reporter := self.items(i).execute(a_reporter => reporter);
end loop;

self.execution_result.end_time := current_timestamp;
Expand All @@ -47,6 +53,7 @@ create or replace type body ut_test_suite is
if reporter is not null then
reporter.end_suite(self.name, self.execution_result);
end if;
return reporter;
end;

overriding member procedure execute(self in out nocopy ut_test_suite) is
Expand Down
2 changes: 1 addition & 1 deletion source/types/ut_test_suite.tps
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ create or replace type ut_test_suite force under ut_test_object
constructor function ut_test_suite(a_suite_name varchar2, a_items ut_test_objects_list default ut_test_objects_list()) return self as result,
member procedure add_item(self in out nocopy ut_test_suite, a_item ut_test_object),

--overriding member procedure run(self in out nocopy ut_test_suite),
overriding member procedure execute(self in out nocopy ut_test_suite, a_reporter ut_suite_reporter),
overriding member function execute(self in out nocopy ut_test_suite, a_reporter ut_suite_reporter) return ut_suite_reporter,
overriding member procedure execute(self in out nocopy ut_test_suite)
)
not final
Expand Down
17 changes: 5 additions & 12 deletions source/ut_utils.pkb
Original file line number Diff line number Diff line change
@@ -1,20 +1,13 @@
create or replace package body ut_utils is

function test_result_to_char(a_test_result integer) return varchar2 as
v_result varchar2(250);
begin

v_result := case a_test_result
when tr_success then
'Success'
when tr_failure then
'Failure'
when tr_error then
'Error'
else
'Unknown(' || a_test_result || ')'
return case a_test_result
when tr_success then tr_success_char
when tr_failure then tr_failure_char
when tr_error then tr_error_char
else 'Unknown(' || coalesce(a_test_result,'NULL') || ')'
end;
return v_result;
end test_result_to_char;

end ut_utils;
Expand Down
3 changes: 3 additions & 0 deletions source/ut_utils.pks
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ create or replace package ut_utils is
tr_failure constant number(1) := 2; -- one or more asserts failed
tr_error constant number(1) := 3; -- exception was raised

tr_success_char constant varchar2(7) := 'Success'; -- test passed
tr_failure_char constant varchar2(7) := 'Failure'; -- one or more asserts failed
tr_error_char constant varchar2(5) := 'Error'; -- exception was raised
/*
Function: test_result_to_char
returns a string representation of a test_result.
Expand Down