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
Prev Previous commit
Next Next commit
all tests passed correctly
added call for on_assert procedure of a reproter
  • Loading branch information
Pavel Kaplya committed Jul 26, 2016
commit 5dd401329e5af632523e539953daa91a31f68aa8
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ begin

suite2.add_item(testtoexecute);

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

-- provide a reporter to process results
suite_complex.execute(ut_custom_reporter(a_tab_size => 2));
Expand Down
8 changes: 5 additions & 3 deletions examples/RunExampleTestSuite.sql
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ declare
suite ut_test_suite;
testtoexecute ut_test;
test_item ut_test;
assert ut_assert_result;
begin
suite := ut_test_suite(a_suite_name => 'Test Suite Name' /*,a_items => ut_test_objects_list()*/);

Expand All @@ -39,9 +40,10 @@ begin
dbms_output.put_line('Test:' || test_item.test.form_name);
dbms_output.put_line('Result: ' || test_item.execution_result.result_to_char);
dbms_output.put_line('Assert Results:');
for i in test_item.assert_results.first .. test_item.assert_results.last loop
dbms_output.put_line(i || ' - result: ' || test_item.assert_results(i).result_to_char);
dbms_output.put_line(i || ' - Message: ' || test_item.assert_results(i).message);
for i in test_item.items.first .. test_item.items.last loop
assert := treat(test_item.items(i) as ut_assert_result);
dbms_output.put_line(i || ' - result: ' || assert.result_to_char);
dbms_output.put_line(i || ' - Message: ' || assert.message);
end loop;
end loop;
dbms_output.put_line('---------------------------------------------------');
Expand Down
114 changes: 57 additions & 57 deletions examples/TestPackageName.sql
Original file line number Diff line number Diff line change
Expand Up @@ -4,78 +4,78 @@ set echo off

--Arrange
PROMPT Reports error when unit test package name for a test is null
declare
simple_test ut_test;
begin
declare
simple_test ut_test;
begin

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

simple_test.execute();
simple_test.execute();

--Assert
if simple_test.execution_result.result = ut_utils.tr_error then
dbms_output.put_line(' Success');
else
dbms_output.put_line(' Failure');
end if;
end;
/
--Assert
if simple_test.execution_result.result = ut_utils.tr_error then
dbms_output.put_line(' Success');
else
dbms_output.put_line(' Failure');
end if;
end;
/

--Arrange
PROMPT Reports error when unit test package name for a test is invalid
declare
simple_test ut_test;
begin
declare
simple_test ut_test;
begin

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

simple_test.execute();
simple_test.execute();

--Assert
if simple_test.execution_result.result = ut_utils.tr_error then
dbms_output.put_line(' Success');
else
dbms_output.put_line(' Failure');
end if;
end;
/
--Assert
if simple_test.execution_result.result = ut_utils.tr_error then
dbms_output.put_line(' Success');
else
dbms_output.put_line(' Failure');
end if;
end;
/

--Arrange
PROMPT Reports error when unit test package for a test is in invalid state
begin
execute immediate
'create or replace package invalid_package is
v_variable non_existing_type;
procedure ut_exampletest;
end;';
exception when others then
if sqlcode = - 24344 then
dbms_output.put_line(' Invalid package created');
else
raise;
end if;
end;
/
begin
execute immediate
'create or replace package invalid_package is
v_variable non_existing_type;
procedure ut_exampletest;
end;';
exception when others then
if sqlcode = - 24344 then
dbms_output.put_line(' Invalid package created');
else
raise;
end if;
end;
/

declare
simple_test ut_test;
begin
declare
simple_test ut_test;
begin

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

simple_test.execute();
simple_test.execute();

--Assert
if simple_test.execution_result.result = ut_utils.tr_error then
dbms_output.put_line(' Success');
else
dbms_output.put_line(' Failure');
end if;
end;
/
--Assert
if simple_test.execution_result.result = ut_utils.tr_error then
dbms_output.put_line(' Success');
else
dbms_output.put_line(' Failure');
end if;
end;
/

--Cleanup
drop package invalid_package;
drop package invalid_package;
23 changes: 15 additions & 8 deletions examples/ut_custom_reporter.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -20,28 +20,35 @@ create or replace type body ut_custom_reporter is
(self as ut_dbms_output_suite_reporter).print(tab || msg);
end print;

overriding member procedure begin_suite(self in out nocopy ut_custom_reporter, a_suite_name in varchar2) as
overriding member procedure begin_suite(self in out nocopy ut_custom_reporter, a_suite ut_object) as
begin
(self as ut_dbms_output_suite_reporter).begin_suite(a_suite_name);
(self as ut_dbms_output_suite_reporter).begin_suite(a_suite);
lvl := lvl + 1;
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
overriding member procedure begin_test(self in out nocopy ut_custom_reporter, a_test ut_object) as
begin
(self as ut_dbms_output_suite_reporter).begin_test(a_test_name,a_test_call_params);
(self as ut_dbms_output_suite_reporter).begin_test(a_test);
lvl := lvl + 1;
end;

overriding member procedure on_assert(self in out nocopy ut_custom_reporter, an_assert ut_object) is
begin
lvl := lvl + 1;
(self as ut_dbms_output_suite_reporter).on_assert(an_assert);
lvl := lvl - 1;
end;

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
overriding member procedure end_test(self in out nocopy ut_custom_reporter, a_test ut_object) as
begin
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);
(self as ut_dbms_output_suite_reporter).end_test(a_test);
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
overriding member procedure end_suite(self in out nocopy ut_custom_reporter, a_suite ut_object) as
begin
lvl := lvl - 1;
(self as ut_dbms_output_suite_reporter).end_suite(a_suite_name,a_suite_execution_result);
(self as ut_dbms_output_suite_reporter).end_suite(a_suite);
end;

end;
Expand Down
9 changes: 5 additions & 4 deletions examples/ut_custom_reporter.tps
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ create or replace type ut_custom_reporter under ut_dbms_output_suite_reporter
constructor function ut_custom_reporter(a_tab_size integer default 4) return self as result,
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 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_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_suite(self in out nocopy ut_custom_reporter, a_suite ut_object),
overriding member procedure begin_test(self in out nocopy ut_custom_reporter, a_test ut_object),
overriding member procedure on_assert(self in out nocopy ut_custom_reporter, an_assert ut_object),
overriding member procedure end_test(self in out nocopy ut_custom_reporter, a_test ut_object),
overriding member procedure end_suite(self in out nocopy ut_custom_reporter, a_suite ut_object)
)
not final
/
18 changes: 11 additions & 7 deletions source/types/ut_test.tpb
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ create or replace type body ut_test is
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)
return self as result is
begin
self.name := a_test_name;
self.object_type := 1;
self.test := ut_test_call_params(object_name => trim(a_object_name)
,procedure_name => trim(a_test_procedure)
,owner_name => trim(a_owner_name));
self.name := a_test_name;
self.object_type := 1;
self.test := ut_test_call_params(object_name => trim(a_object_name)
,procedure_name => trim(a_test_procedure)
,owner_name => trim(a_owner_name));

if a_setup_procedure is not null then
self.setup := ut_test_call_params(object_name => trim(a_object_name)
Expand Down Expand Up @@ -89,12 +89,16 @@ create or replace type body ut_test is
self.execution_result.end_time := current_timestamp;
ut_assert.process_asserts(self.items);
end;
self.calc_execution_result;
self.calc_execution_result;

if reporter is not null then
for i in 1 .. self.items.count loop
reporter.on_assert(treat(self.items(i) as ut_assert_result));
end loop;
reporter.end_test(self);
end if;

return reporter;
end;

Expand Down
2 changes: 1 addition & 1 deletion source/ut_utils.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ create or replace package body ut_utils is
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') || ')'
else 'Unknown(' || coalesce(to_char(a_test_result),'NULL') || ')'
end;
end test_result_to_char;

Expand Down