From 133ecaef7e57cfb0ed448118822aa05d6a88258a Mon Sep 17 00:00:00 2001 From: lwasylow Date: Fri, 22 Mar 2019 18:48:24 +0000 Subject: [PATCH 01/31] Adding new API user. --- .travis/install.sh | 30 +- development/cleanup.sh | 3 +- development/install.sh | 2 +- development/template.env.sh | 3 +- test/install_ut3_tester_helper.sql | 42 +++ test/install_ut3_user_tests.sql | 39 +++ test/{ => ut3_tester_helper}/core.pkb | 33 +++ test/{ => ut3_tester_helper}/core.pks | 11 + test/ut3_user/expectations/test_matchers.pkb | 271 +++++++++++++++++++ test/ut3_user/expectations/test_matchers.pks | 27 ++ 10 files changed, 446 insertions(+), 15 deletions(-) create mode 100644 test/install_ut3_tester_helper.sql create mode 100644 test/install_ut3_user_tests.sql rename test/{ => ut3_tester_helper}/core.pkb (70%) rename test/{ => ut3_tester_helper}/core.pks (52%) create mode 100644 test/ut3_user/expectations/test_matchers.pkb create mode 100644 test/ut3_user/expectations/test_matchers.pks diff --git a/.travis/install.sh b/.travis/install.sh index e37cfa35f..3cd476981 100755 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -60,27 +60,33 @@ grant select any dictionary to $UT3_OWNER; grant create any procedure, drop any procedure, execute any procedure to $UT3_OWNER; SQL -#Create user that will own the tests +#Create user that will own the tests that are relevant to internal framework time "$SQLCLI" sys/$ORACLE_PWD@//$CONNECTION_STR AS SYSDBA <<-SQL set feedback off @create_utplsql_owner.sql $UT3_TESTER $UT3_TESTER_PASSWORD $UT3_TABLESPACE - ---needed for testing distributed transactions -grant create public database link to $UT3_TESTER; -grant drop public database link to $UT3_TESTER; -set feedback on ---Needed for testing coverage outside of main UT3 schema. -grant create any procedure, drop any procedure, execute any procedure, create any type, drop any type, execute any type, under any type, select any table, update any table, insert any table, delete any table, create any table, drop any table, alter any table, select any dictionary to $UT3_TESTER; -revoke execute on dbms_crypto from $UT3_TESTER; -grant create job to $UT3_TESTER; exit SQL -#Create additional UT3$USER# to test for special characters +#Create additional UT3$USER# to test for special characters and front end API testing time "$SQLCLI" sys/$ORACLE_PWD@//$CONNECTION_STR AS SYSDBA <<-SQL set feedback off @create_utplsql_owner.sql $UT3_USER $UT3_USER_PASSWORD $UT3_TABLESPACE ---Grant UT3 framework to UT3$USER# +--Grant UT3 framework to min user @create_user_grants.sql $UT3_OWNER $UT3_USER exit SQL + +#Create additional UT3_TESTER_HELPER that will provide a functions to allow min grant test user setup test +time "$SQLCLI" sys/$ORACLE_PWD@//$CONNECTION_STR AS SYSDBA <<-SQL +set feedback off +@create_utplsql_owner.sql $UT3_TESTER_HELPER $UT3_TESTER_HELPER_PASSWORD $UT3_TABLESPACE +--needed for testing distributed transactions +grant create public database link to $UT3_TESTER_HELPER; +grant drop public database link to $UT3_TESTER_HELPER; +set feedback on +--Needed for testing coverage outside of main UT3 schema. +grant create any procedure, drop any procedure, execute any procedure, create any type, drop any type, execute any type, under any type, select any table, update any table, insert any table, delete any table, create any table, drop any table, alter any table, select any dictionary to $UT3_TESTER_HELPER; +revoke execute on dbms_crypto from $UT3_TESTER_HELPER; +grant create job to $UT3_TESTER_HELPER; +exit +SQL diff --git a/development/cleanup.sh b/development/cleanup.sh index 3b6e22e53..086db6786 100755 --- a/development/cleanup.sh +++ b/development/cleanup.sh @@ -3,7 +3,7 @@ #goto git root directory git rev-parse && cd "$(git rev-parse --show-cdup)" -. development/env.sh +#. development/env.sh "${SQLCLI}" sys/${ORACLE_PWD}@//${CONNECTION_STR} AS SYSDBA <<-SQL set echo on @@ -21,6 +21,7 @@ end; drop user ${UT3_OWNER} cascade; drop user ${UT3_RELEASE_VERSION_SCHEMA} cascade; drop user ${UT3_TESTER} cascade; +drop user ${UT3_TESTER_HELPER} cascade; drop user ${UT3_USER} cascade; begin diff --git a/development/install.sh b/development/install.sh index 4104e2672..86d7e4da2 100755 --- a/development/install.sh +++ b/development/install.sh @@ -3,7 +3,7 @@ #goto git root directory git rev-parse && cd "$(git rev-parse --show-cdup)" -. development/env.sh +#. development/env.sh header="******************************************************************************************" if ! development/cleanup.sh; then diff --git a/development/template.env.sh b/development/template.env.sh index 94004c89d..b19f63ec7 100755 --- a/development/template.env.sh +++ b/development/template.env.sh @@ -16,4 +16,5 @@ export UT3_TESTER_PASSWORD=ut3 export UT3_TABLESPACE=users export UT3_USER="UT3\$USER#" export UT3_USER_PASSWORD=ut3 - +export UT3_TESTER_HELPER=ut3_tester_helper +export UT3_TESTER_HELPER_PASSWORD=ut3 diff --git a/test/install_ut3_tester_helper.sql b/test/install_ut3_tester_helper.sql new file mode 100644 index 000000000..0eabb98c9 --- /dev/null +++ b/test/install_ut3_tester_helper.sql @@ -0,0 +1,42 @@ +set define off +whenever sqlerror exit failure rollback +whenever oserror exit failure rollback + +alter session set plsql_optimize_level=0; +--Install ut3_tester_helper +@@ut3_tester_helper/core.pks + +@@ut3_tester_helper/core.pkb + + +grant execute on ut3_tester_helper.core to UT3$USER#; + +set linesize 200 +set define on +set verify off +column text format a100 +column error_count noprint new_value error_count + +prompt Validating installation + +set heading on +select type, name, sequence, line, position, text, count(1) over() error_count + from all_errors + where owner = USER + and name not like 'BIN$%' --not recycled + and name != 'UT_WITH_INVALID_BODY' + -- errors only. ignore warnings + and attribute = 'ERROR' + order by name, type, sequence +/ + +begin + if to_number('&&error_count') > 0 then + raise_application_error(-20000, 'Not all sources were successfully installed.'); + else + dbms_output.put_line('Installation completed successfully'); + end if; +end; +/ + +exit; diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql new file mode 100644 index 000000000..4890d002a --- /dev/null +++ b/test/install_ut3_user_tests.sql @@ -0,0 +1,39 @@ +set define off +whenever sqlerror exit failure rollback +whenever oserror exit failure rollback + +alter session set plsql_optimize_level=0; + +prompt Install user tests +@@ut3_user/expectations/test_matchers.pks +@@ut3_user/expectations/test_matchers.pkb + +set linesize 200 +set define on +set verify off +column text format a100 +column error_count noprint new_value error_count + +prompt Validating installation + +set heading on +select type, name, sequence, line, position, text, count(1) over() error_count + from all_errors + where owner = USER + and name not like 'BIN$%' --not recycled + and name != 'UT_WITH_INVALID_BODY' + -- errors only. ignore warnings + and attribute = 'ERROR' + order by name, type, sequence +/ + +begin + if to_number('&&error_count') > 0 then + raise_application_error(-20000, 'Not all sources were successfully installed.'); + else + dbms_output.put_line('Installation completed successfully'); + end if; +end; +/ + +exit; diff --git a/test/core.pkb b/test/ut3_tester_helper/core.pkb similarity index 70% rename from test/core.pkb rename to test/ut3_tester_helper/core.pkb index 60baa0190..9b70f3826 100644 --- a/test/core.pkb +++ b/test/ut3_tester_helper/core.pkb @@ -88,5 +88,38 @@ create or replace package body core is return l_glob_val; end; + function get_failed_expectations return ut3.ut_varchar2_list is + l_expectations_result ut3.ut_expectation_results := ut3.ut_expectation_processor.get_failed_expectations(); + l_result ut3.ut_varchar2_list; + begin + for i in 1..l_expectations_result.count loop + l_result := l_result multiset union l_expectations_result(i).get_result_lines(); + end loop; + return l_result; + end; + + function failed_expectations_data return anydata is + begin + return anydata.convertCollection(ut3.ut_expectation_processor.get_failed_expectations()); + end; + + function get_failed_expectations_n return number is + l_num_failed number; + l_results ut3.ut_expectation_results := ut3.ut_expectation_processor.get_failed_expectations(); + begin + l_num_failed := l_results.count; + return l_num_failed; + end; + + procedure clear_expectations is + begin + ut3.ut_expectation_processor.clear_expectations(); + end; + + function table_to_clob(a_results in ut3.ut_varchar2_list) return clob is + begin + return ut3.ut_utils.table_to_clob(a_results); + end; + end; / diff --git a/test/core.pks b/test/ut3_tester_helper/core.pks similarity index 52% rename from test/core.pks rename to test/ut3_tester_helper/core.pks index d23ab6be0..a722a9871 100644 --- a/test/core.pks +++ b/test/ut3_tester_helper/core.pks @@ -1,5 +1,8 @@ create or replace package core is + gc_success number := ut3.ut_utils.gc_success; + gc_failure number := ut3.ut_utils.gc_failure; + --%suite --%suitepath(utplsql) @@ -16,6 +19,14 @@ create or replace package core is function get_value(a_variable varchar2) return integer; function get_dbms_output_as_clob return clob; + + function get_failed_expectations return ut3.ut_varchar2_list; + + function get_failed_expectations_n return number; + + procedure clear_expectations; + + function table_to_clob(a_results in ut3.ut_varchar2_list) return clob; end; / diff --git a/test/ut3_user/expectations/test_matchers.pkb b/test/ut3_user/expectations/test_matchers.pkb new file mode 100644 index 000000000..114e34267 --- /dev/null +++ b/test/ut3_user/expectations/test_matchers.pkb @@ -0,0 +1,271 @@ +create or replace package body test_matchers is + + procedure cleanup_expectations is + begin + ut3_tester_helper.core.clear_expectations( ); + end; + + procedure exec_matcher(a_type varchar2, a_actual_value varchar2, a_expected_value varchar2, a_matcher varchar2, a_result integer, a_prefix varchar2 := null) is + l_statement varchar2(32767); + begin + l_statement := ' + declare + l_actual '||a_type||' := '||a_actual_value||'; + l_expected '||a_type||' := '||a_expected_value||'; + begin + ut3.ut.expect( l_actual ).'||a_prefix||'to_'||a_matcher||'( l_expected ); + end;'; + execute immediate l_statement; + if a_result = ut3_tester_helper.core.gc_success then + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + else + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + end if; + cleanup_expectations(); + end exec_matcher; + + procedure exec_be_between(a_type varchar2, a_actual_value varchar2, a_expected1_value varchar2, a_expected2_value varchar2,a_result integer) is + l_statement varchar2(32767); + begin + l_statement := ' + declare + l_actual_value '||a_type||' := '||a_actual_value||'; + l_lower '||a_type||' := '||a_expected1_value||'; + l_higher '||a_type||' := '||a_expected2_value||'; + begin + ut3.ut.expect(l_actual_value).to_be_between(l_lower, l_higher); + end;'; + execute immediate l_statement; + if a_result = ut3_tester_helper.core.gc_success then + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + else + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + end if; + cleanup_expectations(); + end exec_be_between; + + procedure exec_be_between2(a_type varchar2, a_actual_value varchar2, a_expected1_value varchar2, a_expected2_value varchar2,a_result integer, a_not_prefix varchar2 default null) is + l_statement varchar2(32767); + begin + l_statement := ' + declare + l_actual_value '||a_type||' := '||a_actual_value||'; + l_value1 '||a_type||' := '||a_expected1_value||'; + l_value2 '||a_type||' := '||a_expected2_value||'; + begin + ut3.ut.expect(l_actual_value).'||a_not_prefix||'to_be_between(l_value1, l_value2); + end;'; + execute immediate l_statement; + if a_result = ut3_tester_helper.core.gc_success then + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + else + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + end if; + cleanup_expectations(); + end exec_be_between2; + + procedure exec_be_like(a_type varchar2, a_value varchar2, a_pattern varchar2, a_escape varchar2, a_result integer, a_prefix varchar2 default null) is + begin + execute immediate + 'declare + l_actual ' || a_type || ' := '||a_value||'; + l_pattern varchar2(32767) := :pattern; + l_escape_char varchar2(32767) := :a_escape; + l_result integer; + begin + ut3.ut.expect( l_actual ).' || a_prefix ||q'[to_be_like(l_pattern, l_escape_char); + end;]' + using a_pattern, a_escape; + if a_result = ut3_tester_helper.core.gc_success then + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + else + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + end if; + cleanup_expectations(); + end; + + procedure exec_match(a_type varchar2, a_actual_value varchar2, a_pattern varchar2, a_modifiers varchar2, a_result integer, a_not_prefix varchar2 default null) is + l_statement varchar2(32767); + begin + l_statement := + 'declare + l_actual '||a_type||' := '||a_actual_value||'; + l_pattern varchar2(32767) := :a_pattern; + l_modifiers varchar2(32767) := :a_modifiers; + l_result integer; + begin + ut3.ut.expect( l_actual ).'||a_not_prefix||'to_match(l_pattern, l_modifiers); + end;'; + execute immediate l_statement using a_pattern, a_modifiers; + if a_result = ut3_tester_helper.core.gc_success then + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + else + ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + end if; + cleanup_expectations(); + end; + + procedure test_be_between2 is + begin + + --failure when value out of range + exec_be_between2('date', 'sysdate', 'sysdate-2', 'sysdate-1', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('number', '2.0', '1.99', '1.999', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('varchar2(1)', '''c''', '''a''', '''b''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('timestamp', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('timestamp with time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('interval year to month', '''2-2''', '''2-0''', '''2-1''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 00:59:59''', ut3_tester_helper.core.gc_failure, ''); + + --success when value in range + exec_be_between2('date', 'sysdate', 'sysdate-1', 'sysdate+1', ut3_tester_helper.core.gc_success, ''); + exec_be_between2('number', '2.0', '1.99', '2.01', ut3_tester_helper.core.gc_success, ''); + exec_be_between2('varchar2(1)', '''b''', '''a''', '''c''', ut3_tester_helper.core.gc_success, ''); + exec_be_between2('timestamp', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_success, ''); + exec_be_between2('timestamp with local time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_success, ''); + exec_be_between2('timestamp with time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_success, ''); + exec_be_between2('interval year to month', '''2-1''', '''2-0''', '''2-2''', ut3_tester_helper.core.gc_success, ''); + exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 01:00:01''', ut3_tester_helper.core.gc_success, ''); + + --success when value not in range + exec_be_between2('date', 'sysdate', 'sysdate-2', 'sysdate-1', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_between2('number', '2.0', '1.99', '1.999', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_between2('varchar2(1)', '''c''', '''a''', '''b''', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_between2('timestamp', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_between2('timestamp with time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_between2('interval year to month', '''2-2''', '''2-0''', '''2-1''', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 00:59:59''', ut3_tester_helper.core.gc_success, 'not_'); + + --failure when value not out of range + exec_be_between2('date', 'sysdate', 'sysdate-1', 'sysdate+1', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('number', '2.0', '1.99', '2.01', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('varchar2(1)', '''b''', '''a''', '''c''', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('timestamp', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('timestamp with local time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('timestamp with time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('interval year to month', '''2-1''', '''2-0''', '''2-2''', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 01:00:01''', ut3_tester_helper.core.gc_failure, 'not_'); + + --failure when value is null + exec_be_between2('date', 'null', 'sysdate-1', 'sysdate+1', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('number', 'null', '1.99', '2.01', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('varchar2(1)', 'null', '''a''', '''c''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('timestamp', 'null', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('timestamp with local time zone', 'null', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('timestamp with time zone', 'null', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('interval year to month', 'null', '''2-0''', '''2-2''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('interval day to second', 'null', '''2 00:59:58''', '''2 01:00:01''', ut3_tester_helper.core.gc_failure, ''); + + exec_be_between2('date', 'null', 'sysdate-2', 'sysdate-1', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('number', 'null', '1.99', '1.999', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('varchar2(1)', 'null', '''a''', '''b''', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('timestamp', 'null', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('timestamp with local time zone', 'null', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('timestamp with time zone', 'null', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('interval year to month', 'null', '''2-0''', '''2-1''', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('interval day to second', 'null', '''2 00:59:58''', '''2 00:59:59''', ut3_tester_helper.core.gc_failure, 'not_'); + + --failure when lower bound is null + exec_be_between2('date', 'sysdate', 'null', 'sysdate+1', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('number', '2.0', 'null', '2.01', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('varchar2(1)', '''b''', 'null', '''c''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('timestamp', 'systimestamp', 'null', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('timestamp with local time zone', 'systimestamp', 'null', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('timestamp with time zone', 'systimestamp', 'null', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('interval year to month', '''2-1''', 'null', '''2-2''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('interval day to second', '''2 01:00:00''', 'null', '''2 01:00:01''', ut3_tester_helper.core.gc_failure, ''); + + exec_be_between2('date', 'sysdate', 'null', 'sysdate-1', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('number', '2.0', 'null', '1.999', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('varchar2(1)', '''b''', 'null', '''b''', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('timestamp', 'systimestamp+1', 'null', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'null', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('timestamp with time zone', 'systimestamp+1', 'null', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('interval year to month', '''2-2''', 'null', '''2-1''', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('interval day to second', '''2 01:00:00''', 'null', '''2 00:59:59''', ut3_tester_helper.core.gc_failure, 'not_'); + --Fails for unsupported data-type + exec_be_between2('clob', '''b''', '''a''', '''c''', ut3_tester_helper.core.gc_failure, ''); + end; + + procedure test_match is + begin + exec_match('varchar2(100)', '''Stephen''', '^Ste(v|ph)en$', '', ut3_tester_helper.core.gc_success); + exec_match('varchar2(100)', '''sTEPHEN''', '^Ste(v|ph)en$', 'i', ut3_tester_helper.core.gc_success); + exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', 'Ste(v|ph)en$', '', ut3_tester_helper.core.gc_success); + exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', 'Ste(v|ph)en$', 'i', ut3_tester_helper.core.gc_success); + + exec_match('varchar2(100)', '''Stephen''', '^Steven$', '', ut3_tester_helper.core.gc_failure); + exec_match('varchar2(100)', '''sTEPHEN''', '^Steven$', 'i', ut3_tester_helper.core.gc_failure); + exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', '^Stephen', '', ut3_tester_helper.core.gc_failure); + exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', '^Stephen', 'i', ut3_tester_helper.core.gc_failure); + + exec_match('varchar2(100)', '''Stephen''', '^Ste(v|ph)en$', '', ut3_tester_helper.core.gc_failure, 'not_'); + exec_match('varchar2(100)', '''sTEPHEN''', '^Ste(v|ph)en$', 'i', ut3_tester_helper.core.gc_failure, 'not_'); + exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', 'Ste(v|ph)en$', '', ut3_tester_helper.core.gc_failure, 'not_'); + exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', 'Ste(v|ph)en$', 'i', ut3_tester_helper.core.gc_failure, 'not_'); + + exec_match('varchar2(100)', '''Stephen''', '^Steven$', '', ut3_tester_helper.core.gc_success, 'not_'); + exec_match('varchar2(100)', '''sTEPHEN''', '^Steven$', 'i', ut3_tester_helper.core.gc_success, 'not_'); + exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', '^Stephen', '', ut3_tester_helper.core.gc_success, 'not_'); + exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', '^Stephen', 'i', ut3_tester_helper.core.gc_success, 'not_'); + --Fails for unsupported data-type + exec_match('number', '12345', '^123.*', 'i', ut3_tester_helper.core.gc_failure); + end; + + procedure test_be_like is + begin + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en%', '', ut3_tester_helper.core.gc_success); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en\_K%', '\', ut3_tester_helper.core.gc_success); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en%', '', ut3_tester_helper.core.gc_success); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en\_K%', '\', ut3_tester_helper.core.gc_success); + + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste_en%', '', ut3_tester_helper.core.gc_failure); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Stephe\__%', '\', ut3_tester_helper.core.gc_failure); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste_en%', '', ut3_tester_helper.core.gc_failure); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Stephe\__%', '\', ut3_tester_helper.core.gc_failure); + + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en%', '', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en\_K%', '\', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en%', '', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en\_K%', '\', ut3_tester_helper.core.gc_failure, 'not_'); + + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste_en%', '', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Stephe\__%', '\', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste_en%', '', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Stephe\__%', '\', ut3_tester_helper.core.gc_success, 'not_'); + + --Fails for unsupported data-type + exec_be_like('number', '12345', '123%', '', ut3_tester_helper.core.gc_failure); + end; + + procedure test_timestamp_between is + l_value timestamp := to_timestamp('1997-01-31 09:26:50.13','YYYY-MM-DD HH24.MI.SS.FF'); + l_value_lower timestamp := to_timestamp('1997-01-31 09:26:50.11','YYYY-MM-DD HH24.MI.SS.FF'); + l_value_upper timestamp := to_timestamp('1997-01-31 09:26:50.14','YYYY-MM-DD HH24.MI.SS.FF'); + begin + ut3.ut.expect(l_value).to_be_between(l_value_lower, l_value_upper); + ut3.ut.expect(l_value).not_to_be_between(l_value_upper, l_value_lower); + end; + + procedure test_timestamp_ltz_between is + l_value timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +02:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); + l_value_lower timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +03:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); + l_value_upper timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +01:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); + begin + ut3.ut.expect(l_value).to_be_between(l_value_lower, l_value_upper); + ut3.ut.expect(l_value).not_to_be_between(l_value_upper, l_value_lower); + end; + + procedure test_timestamp_tz_between is + l_value timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +02:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); + l_value_lower timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +03:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); + l_value_upper timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +01:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); + begin + ut3.ut.expect(l_value).to_be_between(l_value_lower, l_value_upper); + ut3.ut.expect(l_value).not_to_be_between(l_value_upper, l_value_lower); + end; + +end test_matchers; +/ diff --git a/test/ut3_user/expectations/test_matchers.pks b/test/ut3_user/expectations/test_matchers.pks new file mode 100644 index 000000000..b8fc699ee --- /dev/null +++ b/test/ut3_user/expectations/test_matchers.pks @@ -0,0 +1,27 @@ +create or replace package test_matchers is + + --%suite(matchers) + --%suitepath(utplsql.core.expectations) + + --%aftereach + procedure cleanup_expectations; + + --%test + procedure test_be_between2; + --%test + procedure test_match; + + --%test + procedure test_be_like; + + --%test + procedure test_timestamp_between; + + --%test + procedure test_timestamp_ltz_between; + + --%test + procedure test_timestamp_tz_between; + +end test_matchers; +/ From 9db8f4b513fe1e9f5cc82c1fcb3763585d9d6bef Mon Sep 17 00:00:00 2001 From: lwasylow Date: Sat, 23 Mar 2019 20:24:01 +0000 Subject: [PATCH 02/31] Separating tests. --- test/api/test_ut_run.pkb | 1016 ----------- test/api/test_ut_run.pks | 148 -- .../test_annot_throws_exception.pkb | 375 ----- .../test_annot_throws_exception.pks | 76 - .../annotations/test_annotation_manager.pkb | 306 ---- .../annotations/test_annotation_manager.pks | 55 - .../annotations/test_annotation_parser.pkb | 461 ----- .../annotations/test_annotation_parser.pks | 42 - test/core/expectations.pkb | 67 - test/core/expectations.pks | 29 - .../binary/test_be_greater_or_equal.pkb | 263 --- .../binary/test_be_greater_or_equal.pks | 97 -- .../binary/test_be_greater_than.pkb | 263 --- .../binary/test_be_greater_than.pks | 97 -- .../binary/test_be_less_or_equal.pkb | 263 --- .../binary/test_be_less_or_equal.pks | 97 -- test/core/expectations/binary/test_equal.pkb | 264 --- test/core/expectations/binary/test_equal.pks | 38 - .../binary/test_expect_to_be_less_than.pkb | 263 --- .../binary/test_expect_to_be_less_than.pks | 97 -- .../expectations/test_expectation_anydata.pkb | 974 ----------- .../expectations/test_expectation_anydata.pks | 202 --- .../test_expectation_processor.pkb | 71 - .../test_expectation_processor.pks | 17 - test/core/expectations/test_matchers.pkb | 270 --- test/core/expectations/test_matchers.pks | 27 - .../unary/test_expect_not_to_be_null.pkb | 265 --- .../unary/test_expect_not_to_be_null.pks | 97 -- .../unary/test_expect_to_be_empty.pkb | 271 --- .../unary/test_expect_to_be_empty.pks | 93 - .../unary/test_expect_to_be_not_null.pkb | 264 --- .../unary/test_expect_to_be_not_null.pks | 97 -- .../unary/test_expect_to_be_null.pkb | 260 --- .../unary/test_expect_to_be_null.pks | 97 -- .../unary/test_expect_to_be_true_false.pkb | 139 -- .../unary/test_expect_to_be_true_false.pks | 58 - .../unary/test_expect_to_have_count.pkb | 210 --- .../unary/test_expect_to_have_count.pks | 61 - .../min_grant_user/test_min_grant_user.pkb | 71 - .../min_grant_user/test_min_grant_user.pks | 25 - test/core/reporters.pkb | 150 -- test/core/reporters.pks | 18 - test/core/reporters/test_coverage.pkb | 262 --- test/core/reporters/test_coverage.pks | 40 - .../test_cov_cobertura_reporter.pkb | 45 - .../test_cov_cobertura_reporter.pks | 10 - .../test_coverage_sonar_reporter.pkb | 39 - .../test_coverage_sonar_reporter.pks | 13 - .../test_coverage/test_coveralls_reporter.pkb | 85 - .../test_coverage/test_coveralls_reporter.pks | 13 - .../test_html_extended_reporter.pkb | 29 - .../test_html_extended_reporter.pks | 10 - .../test_html_proftab_reporter.pkb | 29 - .../test_html_proftab_reporter.pks | 10 - test/core/reporters/test_debug_reporter.pkb | 45 - test/core/reporters/test_debug_reporter.pks | 16 - .../reporters/test_documentation_reporter.pkb | 1 - .../reporters/test_documentation_reporter.pks | 10 - .../core/reporters/test_extended_coverage.pkb | 188 --- .../core/reporters/test_extended_coverage.pks | 22 - test/core/reporters/test_junit_reporter.pkb | 353 ---- test/core/reporters/test_junit_reporter.pks | 51 - .../core/reporters/test_realtime_reporter.pkb | 401 ----- .../core/reporters/test_realtime_reporter.pks | 55 - .../reporters/test_sonar_test_reporter.pkb | 36 - .../reporters/test_sonar_test_reporter.pks | 13 - .../core/reporters/test_teamcity_reporter.pkb | 131 -- .../core/reporters/test_teamcity_reporter.pks | 22 - .../reporters/test_tfs_junit_reporter.pkb | 207 --- .../reporters/test_tfs_junit_reporter.pks | 39 - test/core/test_file_mapper.pkb | 45 - test/core/test_file_mapper.pks | 13 - test/core/test_output_buffer.pkb | 95 -- test/core/test_output_buffer.pks | 19 - test/core/test_suite_builder.pkb | 1118 ------------ test/core/test_suite_builder.pks | 176 -- test/core/test_suite_manager.pkb | 1497 ----------------- test/core/test_suite_manager.pks | 175 -- test/core/test_ut_executable.pkb | 109 -- test/core/test_ut_executable.pks | 33 - test/core/test_ut_suite.pkb | 159 -- test/core/test_ut_suite.pks | 40 - test/core/test_ut_test.pkb | 697 -------- test/core/test_ut_test.pks | 94 -- test/core/test_ut_utils.pkb | 436 ----- test/core/test_ut_utils.pks | 132 -- test/helpers/other_dummy_object.tps | 16 - test/helpers/test_dummy_object_list.tps | 4 - test/helpers/test_event_list.tps | 2 - test/helpers/test_event_object.tps | 15 - test/helpers/test_tab_varchar2.tps | 12 - test/helpers/test_tab_varray.tps | 13 - test/helpers/ut3user#.test_cursor_grants.pkb | 114 -- test/helpers/ut3user#.test_cursor_grants.pks | 30 - test/helpers/ut_example_tests.pkb | 24 - test/helpers/ut_example_tests.pks | 8 - test/helpers/ut_test_table.sql | 11 - test/helpers/ut_with_invalid_body.pkb | 4 - test/helpers/ut_with_invalid_body.pks | 4 - test/helpers/ut_without_body.pks | 4 - test/install_and_run_tests.sh | 8 +- test/install_ut3_tester_helper.sql | 15 +- test/install_ut3_tester_tests.sql | 41 + test/install_ut3_user_tests.sql | 11 + .../test_before_after_annotations.pkb | 2 +- .../test_before_after_annotations.pks | 0 .../core}/core.pkb | 0 .../core}/core.pks | 2 +- test/ut3_tester_helper/main_helper.pkb | 90 + test/ut3_tester_helper/main_helper.pks | 27 + test/ut3_tester_helper/run_helper.pkb | 91 + test/ut3_tester_helper/run_helper.pks | 9 + .../test_dummy_object.tps | 0 test/{ => ut3_user}/api/test_ut_runner.pkb | 134 +- test/{ => ut3_user}/api/test_ut_runner.pks | 0 .../expectations/test_expectations_cursor.pkb | 348 ++-- .../expectations/test_expectations_cursor.pks | 7 +- test/ut3_user/expectations/test_matchers.pkb | 230 +-- 118 files changed, 651 insertions(+), 15692 deletions(-) delete mode 100644 test/api/test_ut_run.pkb delete mode 100644 test/api/test_ut_run.pks delete mode 100644 test/core/annotations/test_annot_throws_exception.pkb delete mode 100644 test/core/annotations/test_annot_throws_exception.pks delete mode 100644 test/core/annotations/test_annotation_manager.pkb delete mode 100644 test/core/annotations/test_annotation_manager.pks delete mode 100644 test/core/annotations/test_annotation_parser.pkb delete mode 100644 test/core/annotations/test_annotation_parser.pks delete mode 100644 test/core/expectations.pkb delete mode 100644 test/core/expectations.pks delete mode 100644 test/core/expectations/binary/test_be_greater_or_equal.pkb delete mode 100644 test/core/expectations/binary/test_be_greater_or_equal.pks delete mode 100644 test/core/expectations/binary/test_be_greater_than.pkb delete mode 100644 test/core/expectations/binary/test_be_greater_than.pks delete mode 100644 test/core/expectations/binary/test_be_less_or_equal.pkb delete mode 100644 test/core/expectations/binary/test_be_less_or_equal.pks delete mode 100644 test/core/expectations/binary/test_equal.pkb delete mode 100644 test/core/expectations/binary/test_equal.pks delete mode 100644 test/core/expectations/binary/test_expect_to_be_less_than.pkb delete mode 100644 test/core/expectations/binary/test_expect_to_be_less_than.pks delete mode 100644 test/core/expectations/test_expectation_anydata.pkb delete mode 100644 test/core/expectations/test_expectation_anydata.pks delete mode 100644 test/core/expectations/test_expectation_processor.pkb delete mode 100644 test/core/expectations/test_expectation_processor.pks delete mode 100644 test/core/expectations/test_matchers.pkb delete mode 100644 test/core/expectations/test_matchers.pks delete mode 100644 test/core/expectations/unary/test_expect_not_to_be_null.pkb delete mode 100644 test/core/expectations/unary/test_expect_not_to_be_null.pks delete mode 100644 test/core/expectations/unary/test_expect_to_be_empty.pkb delete mode 100644 test/core/expectations/unary/test_expect_to_be_empty.pks delete mode 100644 test/core/expectations/unary/test_expect_to_be_not_null.pkb delete mode 100644 test/core/expectations/unary/test_expect_to_be_not_null.pks delete mode 100644 test/core/expectations/unary/test_expect_to_be_null.pkb delete mode 100644 test/core/expectations/unary/test_expect_to_be_null.pks delete mode 100644 test/core/expectations/unary/test_expect_to_be_true_false.pkb delete mode 100644 test/core/expectations/unary/test_expect_to_be_true_false.pks delete mode 100644 test/core/expectations/unary/test_expect_to_have_count.pkb delete mode 100644 test/core/expectations/unary/test_expect_to_have_count.pks delete mode 100644 test/core/min_grant_user/test_min_grant_user.pkb delete mode 100644 test/core/min_grant_user/test_min_grant_user.pks delete mode 100644 test/core/reporters.pkb delete mode 100644 test/core/reporters.pks delete mode 100644 test/core/reporters/test_coverage.pkb delete mode 100644 test/core/reporters/test_coverage.pks delete mode 100644 test/core/reporters/test_coverage/test_cov_cobertura_reporter.pkb delete mode 100644 test/core/reporters/test_coverage/test_cov_cobertura_reporter.pks delete mode 100644 test/core/reporters/test_coverage/test_coverage_sonar_reporter.pkb delete mode 100644 test/core/reporters/test_coverage/test_coverage_sonar_reporter.pks delete mode 100644 test/core/reporters/test_coverage/test_coveralls_reporter.pkb delete mode 100644 test/core/reporters/test_coverage/test_coveralls_reporter.pks delete mode 100644 test/core/reporters/test_coverage/test_html_extended_reporter.pkb delete mode 100644 test/core/reporters/test_coverage/test_html_extended_reporter.pks delete mode 100644 test/core/reporters/test_coverage/test_html_proftab_reporter.pkb delete mode 100644 test/core/reporters/test_coverage/test_html_proftab_reporter.pks delete mode 100644 test/core/reporters/test_debug_reporter.pkb delete mode 100644 test/core/reporters/test_debug_reporter.pks delete mode 100644 test/core/reporters/test_documentation_reporter.pkb delete mode 100644 test/core/reporters/test_documentation_reporter.pks delete mode 100644 test/core/reporters/test_extended_coverage.pkb delete mode 100644 test/core/reporters/test_extended_coverage.pks delete mode 100644 test/core/reporters/test_junit_reporter.pkb delete mode 100644 test/core/reporters/test_junit_reporter.pks delete mode 100644 test/core/reporters/test_realtime_reporter.pkb delete mode 100644 test/core/reporters/test_realtime_reporter.pks delete mode 100644 test/core/reporters/test_sonar_test_reporter.pkb delete mode 100644 test/core/reporters/test_sonar_test_reporter.pks delete mode 100644 test/core/reporters/test_teamcity_reporter.pkb delete mode 100644 test/core/reporters/test_teamcity_reporter.pks delete mode 100644 test/core/reporters/test_tfs_junit_reporter.pkb delete mode 100644 test/core/reporters/test_tfs_junit_reporter.pks delete mode 100644 test/core/test_file_mapper.pkb delete mode 100644 test/core/test_file_mapper.pks delete mode 100644 test/core/test_output_buffer.pkb delete mode 100644 test/core/test_output_buffer.pks delete mode 100644 test/core/test_suite_builder.pkb delete mode 100644 test/core/test_suite_builder.pks delete mode 100644 test/core/test_suite_manager.pkb delete mode 100644 test/core/test_suite_manager.pks delete mode 100644 test/core/test_ut_executable.pkb delete mode 100644 test/core/test_ut_executable.pks delete mode 100644 test/core/test_ut_suite.pkb delete mode 100644 test/core/test_ut_suite.pks delete mode 100644 test/core/test_ut_test.pkb delete mode 100644 test/core/test_ut_test.pks delete mode 100644 test/core/test_ut_utils.pkb delete mode 100644 test/core/test_ut_utils.pks delete mode 100644 test/helpers/other_dummy_object.tps delete mode 100644 test/helpers/test_dummy_object_list.tps delete mode 100644 test/helpers/test_event_list.tps delete mode 100644 test/helpers/test_event_object.tps delete mode 100644 test/helpers/test_tab_varchar2.tps delete mode 100644 test/helpers/test_tab_varray.tps delete mode 100644 test/helpers/ut3user#.test_cursor_grants.pkb delete mode 100644 test/helpers/ut3user#.test_cursor_grants.pks delete mode 100644 test/helpers/ut_example_tests.pkb delete mode 100644 test/helpers/ut_example_tests.pks delete mode 100644 test/helpers/ut_test_table.sql delete mode 100644 test/helpers/ut_with_invalid_body.pkb delete mode 100644 test/helpers/ut_with_invalid_body.pks delete mode 100644 test/helpers/ut_without_body.pks create mode 100644 test/install_ut3_tester_tests.sql rename test/{ => ut3_tester}/core/annotations/test_before_after_annotations.pkb (99%) rename test/{ => ut3_tester}/core/annotations/test_before_after_annotations.pks (100%) rename test/{ut3_tester_helper => ut3_tester/core}/core.pkb (100%) rename test/{ut3_tester_helper => ut3_tester/core}/core.pks (94%) create mode 100644 test/ut3_tester_helper/main_helper.pkb create mode 100644 test/ut3_tester_helper/main_helper.pks create mode 100644 test/ut3_tester_helper/run_helper.pkb create mode 100644 test/ut3_tester_helper/run_helper.pks rename test/{helpers => ut3_tester_helper}/test_dummy_object.tps (100%) rename test/{ => ut3_user}/api/test_ut_runner.pkb (75%) rename test/{ => ut3_user}/api/test_ut_runner.pks (100%) rename test/{core => ut3_user}/expectations/test_expectations_cursor.pkb (84%) rename test/{core => ut3_user}/expectations/test_expectations_cursor.pks (98%) diff --git a/test/api/test_ut_run.pkb b/test/api/test_ut_run.pkb deleted file mode 100644 index 9e9fce0f7..000000000 --- a/test/api/test_ut_run.pkb +++ /dev/null @@ -1,1016 +0,0 @@ -create or replace package body test_ut_run is - - --%test(ut.version() returns version of the framework) - procedure ut_version is - begin - ut.expect(ut3.ut.version()).to_match('^v\d+\.\d+\.\d+\.\d+(-\w+)?$'); - end; - - --%test(ut.fail() marks test as failed) - procedure ut_fail is - begin - --Act - ut3.ut.fail('Testing failure message'); - --Assert - ut.expect( - xmltype(anydata.convertCollection(ut3.ut_expectation_processor.get_failed_expectations())).getClobVal() - ).to_be_like('%2%Testing failure message%'); - --Cleanup - ut3.ut_expectation_processor.clear_expectations(); - end; - - procedure create_ut3$user#_tests is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package ut3$user#.test_package_1 is - --%suite - --%suitepath(tests) - - --%test(Test1 from test package 1) - procedure test1; - - --%test(Test2 from test package 1) - procedure test2; - - procedure run(a_reporter ut3.ut_reporter_base := null); - procedure run(a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base); - procedure run(a_path varchar2, a_reporter ut3.ut_reporter_base := null); - procedure run(a_path varchar2, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base); - procedure run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null); - procedure run(a_paths ut3.ut_varchar2_list, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base); - function run(a_reporter ut3.ut_reporter_base := null) return ut3.ut_varchar2_list; - function run(a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) return ut3.ut_varchar2_list; - function run(a_path varchar2, a_reporter ut3.ut_reporter_base := null) return ut3.ut_varchar2_list; - function run(a_path varchar2, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) return ut3.ut_varchar2_list; - function run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null) return ut3.ut_varchar2_list; - function run(a_paths ut3.ut_varchar2_list, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) return ut3.ut_varchar2_list; - - end test_package_1; - ]'; - execute immediate q'[create or replace package body ut3$user#.test_package_1 is - procedure test1 is - begin - dbms_output.put_line('test_package_1.test1 executed'); - end; - procedure test2 is - begin - dbms_output.put_line('test_package_1.test2 executed'); - end; - - procedure run(a_reporter ut3.ut_reporter_base := null) is - begin - ut3.ut.run(a_reporter); - end; - procedure run(a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) is - begin - ut3.ut.run( - a_reporter, a_source_files => ut3.ut_varchar2_list(), - a_test_files => a_test_files - ); - end; - procedure run(a_path varchar2, a_reporter ut3.ut_reporter_base := null) is - begin - ut3.ut.run(a_path, a_reporter); - end; - procedure run(a_path varchar2, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) is - begin - ut3.ut.run( - a_path, - a_reporter, a_source_files => ut3.ut_varchar2_list(), - a_test_files => a_test_files - ); - end; - procedure run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null) is - begin - ut3.ut.run(a_paths, a_reporter); - end; - procedure run(a_paths ut3.ut_varchar2_list, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) is - begin - ut3.ut.run( - a_paths, - a_reporter, a_source_files => ut3.ut_varchar2_list(), - a_test_files => a_test_files - ); - end; - - function run(a_reporter ut3.ut_reporter_base := null) return ut3.ut_varchar2_list is - l_results ut3.ut_varchar2_list; - begin - select * bulk collect into l_results from table (ut3.ut.run(a_reporter)); - return l_results; - end; - function run(a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) return ut3.ut_varchar2_list is - l_results ut3.ut_varchar2_list; - begin - select * bulk collect into l_results from table ( - ut3.ut.run( - a_reporter, a_source_files => ut3.ut_varchar2_list(), - a_test_files => a_test_files - )); - return l_results; - end; - function run(a_path varchar2, a_reporter ut3.ut_reporter_base := null) return ut3.ut_varchar2_list is - l_results ut3.ut_varchar2_list; - begin - select * bulk collect into l_results from table (ut3.ut.run(a_path, a_reporter)); - return l_results; - end; - function run(a_path varchar2, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) return ut3.ut_varchar2_list is - l_results ut3.ut_varchar2_list; - begin - select * bulk collect into l_results from table ( - ut3.ut.run( - a_path, - a_reporter, a_source_files => ut3.ut_varchar2_list(), - a_test_files => a_test_files - )); - return l_results; - end; - function run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null) return ut3.ut_varchar2_list is - l_results ut3.ut_varchar2_list; - begin - select * bulk collect into l_results from table (ut3.ut.run(a_paths, a_reporter)); - return l_results; - end; - function run(a_paths ut3.ut_varchar2_list, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) return ut3.ut_varchar2_list is - l_results ut3.ut_varchar2_list; - begin - select * bulk collect into l_results from table ( - ut3.ut.run( - a_paths, - a_reporter, a_source_files => ut3.ut_varchar2_list(), - a_test_files => a_test_files - )); - return l_results; - end; - end test_package_1; - ]'; - - execute immediate q'[create or replace package ut3$user#.test_package_2 is - --%suite - --%suitepath(tests.test_package_1) - - --%test - procedure test1; - - --%test - procedure test2; - - end test_package_2; - ]'; - execute immediate q'[create or replace package body ut3$user#.test_package_2 is - procedure test1 is - begin - dbms_output.put_line('test_package_2.test1 executed'); - end; - procedure test2 is - begin - dbms_output.put_line('test_package_2.test2 executed'); - end; - end test_package_2; - ]'; - - execute immediate q'[create or replace package ut3$user#.test_package_3 is - --%suite - --%suitepath(tests2) - - --%test - procedure test1; - - --%test - procedure test2; - - end test_package_3; - ]'; - execute immediate q'[create or replace package body ut3$user#.test_package_3 is - procedure test1 is - begin - dbms_output.put_line('test_package_3.test1 executed'); - end; - procedure test2 is - begin - dbms_output.put_line('test_package_3.test2 executed'); - end; - end test_package_3; - ]'; - end; - - procedure drop_ut3$user#_tests is - pragma autonomous_transaction; - begin - execute immediate q'[drop package ut3$user#.test_package_1]'; - execute immediate q'[drop package ut3$user#.test_package_2]'; - execute immediate q'[drop package ut3$user#.test_package_3]'; - end; - - procedure run_proc_no_params is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_package_1.run(); end;'; - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_proc_specific_reporter is - l_results clob; - begin - --Act - execute immediate 'begin ut3$user#.test_package_1.run(:a_reporter); end;' - using in ut3.ut_documentation_reporter(); - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_proc_cov_file_list is - l_results clob; - begin - --Act - execute immediate 'begin ut3$user#.test_package_1.run(a_test_files=>:a_test_files, a_reporter=>:a_reporter); end;' - using - in ut3.ut_varchar2_list('tests/ut3$user#.test_package_1.pkb','tests/ut3$user#.test_package_2.pkb','tests/ut3$user#.test_package_3.pkb'), - in ut3.ut_sonar_test_reporter(); - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%tests/ut3$user#.test_package_2.pkb%tests/ut3$user#.test_package_1.pkb%tests/ut3$user#.test_package_3.pkb%' ); - end; - - procedure run_proc_pkg_name is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_package_1.run(:a_path); end;' - using in 'test_package_1'; - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%test_package_1%' ); - ut.expect( l_results ).not_to_be_like( '%test_package_2%' ); - ut.expect( l_results ).not_to_be_like( '%test_package_3%' ); - end; - - procedure run_proc_pkg_name_file_list is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_package_1.run(:a_path, :a_test_files, :a_reporter); end;' - using - in 'test_package_3', - in ut3.ut_varchar2_list('tests/ut3$user#.test_package_1.pkb','tests/ut3$user#.test_package_2.pkb','tests/ut3$user#.test_package_3.pkb'), - in ut3.ut_sonar_test_reporter(); - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%tests/ut3$user#.test_package_3.pkb%' ); - ut.expect( l_results ).not_to_be_like( '%tests/ut3$user#.test_package_1.pkb%' ); - ut.expect( l_results ).not_to_be_like( '%tests/ut3$user#.test_package_2.pkb%' ); - end; - - procedure run_proc_path_list is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_package_1.run(:a_paths); end;' - using in ut3.ut_varchar2_list(':tests.test_package_1',':tests'); - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%test_package_1%' ); - ut.expect( l_results ).to_be_like( '%test_package_2%' ); - ut.expect( l_results ).not_to_be_like( '%test_package_3%' ); - end; - - procedure run_proc_path_list_file_list is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_package_1.run(:a_paths, :a_test_files, :a_reporter); end;' - using - in ut3.ut_varchar2_list(':tests.test_package_1',':tests'), - in ut3.ut_varchar2_list('tests/ut3$user#.test_package_1.pkb','tests/ut3$user#.test_package_2.pkb','tests/ut3$user#.test_package_3.pkb'), - in ut3.ut_sonar_test_reporter(); - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%tests/ut3$user#.test_package_1.pkb%' ); - ut.expect( l_results ).to_be_like( '%tests/ut3$user#.test_package_2.pkb%' ); - ut.expect( l_results ).not_to_be_like( '%tests/ut3$user#.test_package_3.pkb%' ); - end; - - procedure run_proc_null_reporter is - l_results clob; - begin - --Act - execute immediate 'begin ut3$user#.test_package_1.run(:a_reporter); end;' - using in cast(null as ut3.ut_reporter_base); - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%tests%test_package_1%test_package_2%tests2%test_package_3%' ); - end; - - procedure run_proc_null_path is - l_results clob; - begin - --Act - execute immediate 'begin ut3$user#.test_package_1.run(:a_path); end;' - using in cast(null as varchar2); - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_proc_null_path_list is - l_results clob; - l_paths ut3.ut_varchar2_list; - begin - --Act - execute immediate 'begin ut3$user#.test_package_1.run(:a_paths); end;' - using in l_paths; - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_proc_empty_path_list is - l_results clob; - begin - --Act - execute immediate 'begin ut3$user#.test_package_1.run(:a_paths); end;' - using in ut3.ut_varchar2_list(); - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure create_suite_with_commit is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package test_commit_warning is - --%suite - --%suitepath(ut.run.transaction) - - --%test - procedure does_commit; - end;'; - execute immediate 'create or replace package body test_commit_warning is - procedure does_commit is - begin - ut3.ut.expect(1).to_equal(1); - commit; - end; - end;'; - end; - - procedure drop_suite_with_commit is - pragma autonomous_transaction; - begin - execute immediate 'drop package test_commit_warning'; - end; - - procedure run_proc_warn_on_commit is - l_results clob; - begin - ut3.ut.run('test_commit_warning'); - l_results := core.get_dbms_output_as_clob(); - ut.expect(l_results).to_be_like( - '%Unable to perform automatic rollback after test%'|| - 'An implicit or explicit commit/rollback occurred in procedures:%' || - 'does_commit%' || - 'Use the "--%rollback(manual)" annotation or remove commit/rollback/ddl statements that are causing the issue.%' - ); - end; - - procedure create_failing_beforeall_suite is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package parent_suite is - --%suite - --%suitepath(ut.run.failing_setup) - - --%beforeall - procedure failing_setup; - end;'; - execute immediate 'create or replace package body parent_suite is - procedure failing_setup is - begin - raise no_data_found; - end; - end;'; - execute immediate 'create or replace package child_suite is - --%suite - --%suitepath(ut.run.failing_setup.parent_suite.some_sub_suite) - - --%test - procedure does_stuff; - end;'; - execute immediate 'create or replace package body child_suite is - procedure does_stuff is - begin - ut3.ut.expect(1).to_equal(1); - end; - end;'; - end; - - procedure drop_failing_beforeall_suite is - pragma autonomous_transaction; - begin - execute immediate 'drop package parent_suite'; - execute immediate 'drop package child_suite'; - end; - - procedure run_proc_fail_child_suites is - l_results clob; - begin - ut3.ut.run('child_suite'); - l_results := core.get_dbms_output_as_clob(); - ut.expect(l_results).to_be_like( - '%1) does_stuff%' || - 'ORA-01403: no data found%' || - 'ORA-06512: at "UT3_TESTER.PARENT_SUITE%' - ); - end; - - procedure transaction_setup is - pragma autonomous_transaction; - begin - execute immediate 'create table transaction_test_table(message varchar2(100))'; - execute immediate 'create or replace package test_transaction is - --%suite - - --%test - procedure insert_row; - - --%test - procedure insert_and_raise; - end; - '; - execute immediate 'create or replace package body test_transaction is - procedure insert_row is - begin - insert into transaction_test_table values (''2 - inside the test_transaction.insert_row test''); - end; - procedure insert_and_raise is - begin - insert into transaction_test_table values (''2 - inside the test_transaction.insert_row test''); - raise no_data_found; - end; - end; - '; - - end; - - procedure transaction_cleanup is - pragma autonomous_transaction; - begin - begin - execute immediate 'drop table transaction_test_table'; - exception - when others then null; - end; - begin - execute immediate 'drop package test_transaction'; - exception - when others then null; - end; - end; - - procedure run_proc_keep_test_data is - l_expected sys_refcursor; - l_actual sys_refcursor; - l_results clob; - begin - --Arrange - execute immediate ' - insert into transaction_test_table values (''1 - inside the test_ut_run.run_proc_keep_test_changes test'')'; - - --Act - ut3.ut.run('test_transaction.insert_row', a_force_manual_rollback => true); - l_results := core.get_dbms_output_as_clob(); - - --Assert - open l_expected for - select '1 - inside the test_ut_run.run_proc_keep_test_changes test' as message from dual - union all - select '2 - inside the test_transaction.insert_row test' from dual - order by 1; - - open l_actual for 'select * from transaction_test_table order by 1'; - - ut.expect( l_actual ).to_equal(l_expected); - end; - - procedure run_proc_keep_test_data_raise is - l_expected sys_refcursor; - l_actual sys_refcursor; - l_results clob; - begin - --Arrange - execute immediate ' - insert into transaction_test_table values (''1 - inside the test_ut_run.run_proc_keep_test_changes test'')'; - - --Act - ut3.ut.run('test_transaction.insert_and_raise', a_force_manual_rollback => true); - l_results := core.get_dbms_output_as_clob(); - - --Assert - open l_expected for - select '1 - inside the test_ut_run.run_proc_keep_test_changes test' as message from dual - union all - select '2 - inside the test_transaction.insert_row test' from dual - order by 1; - - open l_actual for 'select * from transaction_test_table order by 1'; - - ut.expect( l_actual ).to_equal(l_expected); - end; - - procedure run_proc_discard_test_data is - l_expected sys_refcursor; - l_actual sys_refcursor; - l_results clob; - begin - --Arrange - execute immediate ' - insert into transaction_test_table values (''1 - inside the test_ut_run.run_proc_keep_test_changes test'')'; - - --Act - ut3.ut.run('test_transaction.insert_row'); - l_results := core.get_dbms_output_as_clob(); - - --Assert - open l_expected for - select '1 - inside the test_ut_run.run_proc_keep_test_changes test' as message from dual; - - open l_actual for 'select * from transaction_test_table order by 1'; - - ut.expect( l_actual ).to_equal(l_expected); - end; - - procedure run_func_no_params is - l_results ut3.ut_varchar2_list; - begin - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(); end;' using out l_results; - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_func_specific_reporter is - l_results ut3.ut_varchar2_list; - begin - --Act - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(:a_reporter); end;' - using out l_results, in ut3.ut_documentation_reporter(); - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_func_cov_file_list is - l_results ut3.ut_varchar2_list; - begin - --Act - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(a_test_files=>:a_test_files, a_reporter=>:a_reporter); end;' - using out l_results, - in ut3.ut_varchar2_list('tests/ut3$user#.test_package_1.pkb','tests/ut3$user#.test_package_2.pkb','tests/ut3$user#.test_package_3.pkb'), - in ut3.ut_sonar_test_reporter(); - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%tests/ut3$user#.test_package_2.pkb%tests/ut3$user#.test_package_1.pkb%tests/ut3$user#.test_package_3.pkb%' ); - end; - - procedure run_func_pkg_name is - l_results ut3.ut_varchar2_list; - begin - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(:a_path); end;' - using out l_results, in 'test_package_1'; - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%test_package_1%' ); - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).not_to_be_like( '%test_package_2%' ); - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).not_to_be_like( '%test_package_3%' ); - end; - - procedure run_func_pkg_name_file_list is - l_results ut3.ut_varchar2_list; - begin - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(:a_path, :a_test_files, :a_reporter); end;' - using out l_results, - in 'test_package_3', - in ut3.ut_varchar2_list('tests/ut3$user#.test_package_1.pkb','tests/ut3$user#.test_package_2.pkb','tests/ut3$user#.test_package_3.pkb'), - in ut3.ut_sonar_test_reporter(); - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%tests/ut3$user#.test_package_3.pkb%' ); - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).not_to_be_like( '%tests/ut3$user#.test_package_1.pkb%' ); - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).not_to_be_like( '%tests/ut3$user#.test_package_2.pkb%' ); - end; - - procedure run_func_path_list is - l_results ut3.ut_varchar2_list; - begin - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(:a_paths); end;' - using out l_results, in ut3.ut_varchar2_list(':tests.test_package_1',':tests'); - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%test_package_1%' ); - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%test_package_2%' ); - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).not_to_be_like( '%test_package_3%' ); - end; - - procedure run_func_path_list_file_list is - l_results ut3.ut_varchar2_list; - begin - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(:a_paths, :a_test_files, :a_reporter); end;' - using out l_results, - in ut3.ut_varchar2_list(':tests.test_package_1',':tests'), - in ut3.ut_varchar2_list('tests/ut3$user#.test_package_1.pkb','tests/ut3$user#.test_package_2.pkb','tests/ut3$user#.test_package_3.pkb'), - in ut3.ut_sonar_test_reporter(); - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%tests/ut3$user#.test_package_1.pkb%' ); - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%tests/ut3$user#.test_package_2.pkb%' ); - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).not_to_be_like( '%tests/ut3$user#.test_package_3.pkb%' ); - end; - - procedure run_func_null_reporter is - l_results ut3.ut_varchar2_list; - begin - --Act - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(:a_reporter); end;' - using out l_results, in cast(null as ut3.ut_reporter_base); - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%tests%test_package_1%test_package_2%tests2%test_package_3%' ); - end; - - procedure run_func_null_path is - l_results ut3.ut_varchar2_list; - begin - --Act - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(:a_path); end;' - using out l_results, in cast(null as varchar2); - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_func_null_path_list is - l_results ut3.ut_varchar2_list; - l_paths ut3.ut_varchar2_list; - begin - --Act - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(:a_paths); end;' - using out l_results, in l_paths; - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_func_empty_path_list is - l_results ut3.ut_varchar2_list; - begin - --Act - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(:a_paths); end;' - using out l_results, in ut3.ut_varchar2_list(); - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_func_cov_file_lst_null_rep is - l_results ut3.ut_varchar2_list; - begin - --Act - execute immediate 'begin :l_results := ut3$user#.test_package_1.run(a_test_files=>:a_test_files, a_reporter=>:a_reporter); end;' - using out l_results, - in ut3.ut_varchar2_list('tests/ut3$user#.test_package_1.pkb','tests/ut3$user#.test_package_2.pkb','tests/ut3$user#.test_package_3.pkb'), - in cast(null as ut3.ut_reporter_base); - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); - end; - - procedure run_func_empty_suite is - l_results ut3.ut_varchar2_list; - l_expected varchar2(32767); - pragma autonomous_transaction; - begin - --Arrange - execute immediate q'[create or replace package empty_suite as - -- %suite - - procedure not_a_test; - end;]'; - execute immediate q'[create or replace package body empty_suite as - procedure not_a_test is begin null; end; - end;]'; - l_expected := '%empty_suite%0 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'; - --Act - select * bulk collect into l_results from table(ut3.ut.run('empty_suite')); - - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( l_expected ); - - --Cleanup - execute immediate q'[drop package empty_suite]'; - end; - - procedure create_db_link is - l_service_name varchar2(100); - pragma autonomous_transaction; - begin - select global_name into l_service_name from global_name; - execute immediate - 'create public database link db_loopback connect to ut3_tester identified by ut3 - using ''(DESCRIPTION= - (ADDRESS=(PROTOCOL=TCP) - (HOST='||sys_context('userenv','SERVER_HOST')||') - (PORT=1521) - ) - (CONNECT_DATA=(SERVICE_NAME='||l_service_name||')))'''; - end; - - procedure drop_db_link is - begin - execute immediate 'drop public database link db_loopback'; - exception - when others then - null; - end; - - procedure create_test_suite is - pragma autonomous_transaction; - begin - create_db_link; - execute immediate q'[ - create or replace package stateful_package as - function get_state return varchar2; - end; - ]'; - execute immediate q'[ - create or replace package body stateful_package as - g_state varchar2(1) := 'A'; - function get_state return varchar2 is begin return g_state; end; - end; - ]'; - execute immediate q'[ - create or replace package test_stateful as - --%suite - --%suitepath(test_state) - - --%test - --%beforetest(acquire_state_via_db_link,rebuild_stateful_package) - procedure failing_stateful_test; - - procedure rebuild_stateful_package; - procedure acquire_state_via_db_link; - - end; - ]'; - execute immediate q'{ - create or replace package body test_stateful as - - procedure failing_stateful_test is - begin - ut3.ut.expect(stateful_package.get_state@db_loopback).to_equal('abc'); - end; - - procedure rebuild_stateful_package is - pragma autonomous_transaction; - begin - execute immediate q'[ - create or replace package body stateful_package as - g_state varchar2(3) := 'abc'; - function get_state return varchar2 is begin return g_state; end; - end; - ]'; - end; - - procedure acquire_state_via_db_link is - begin - dbms_output.put_line('stateful_package.get_state@db_loopback='||stateful_package.get_state@db_loopback); - end; - end; - }'; - - end; - - procedure raise_in_invalid_state is - l_results ut3.ut_varchar2_list; - l_expected varchar2(32767); - begin - --Arrange - l_expected := 'test_state - test_stateful - failing_stateful_test [% sec] (FAILED - 1)% -Failures:% - 1) failing_stateful_test - ORA-04068: existing state of packages (DB_LOOPBACK%) has been discarded - ORA-04061: existing state of package body "UT3_TESTER.STATEFUL_PACKAGE" has been invalidated - ORA-04065: not executed, altered or dropped package body "UT3_TESTER.STATEFUL_PACKAGE"% - ORA-06512: at line 6% -1 tests, 0 failed, 1 errored, 0 disabled, 0 warning(s)%'; - - --Act - select * bulk collect into l_results from table(ut3.ut.run('test_stateful')); - - --Assert - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( l_expected ); - ut.fail('Expected exception but nothing was raised'); - exception - when others then - ut.expect( ut3.ut_utils.table_to_clob(l_results) ).to_be_like( l_expected ); - ut.expect(sqlcode).to_equal(-4068); - end; - - procedure drop_test_suite is - pragma autonomous_transaction; - begin - drop_db_link; - execute immediate 'drop package stateful_package'; - execute immediate 'drop package test_stateful'; - end; - - procedure run_in_invalid_state is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_expected varchar2(32767); - begin - select * bulk collect into l_results from table(ut3.ut.run('failing_invalid_spec')); - - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like('%Call params for % are not valid: package does not exist or is invalid: %FAILING_INVALID_SPEC%'); - - end; - - procedure compile_invalid_package is - ex_compilation_error exception; - pragma exception_init(ex_compilation_error,-24344); - pragma autonomous_transaction; - begin - begin - execute immediate q'[ - create or replace package failing_invalid_spec as - --%suite - gv_glob_val non_existing_table.id%type := 0; - - --%test - procedure test1; - end;]'; - exception when ex_compilation_error then null; - end; - begin - execute immediate q'[ - create or replace package body failing_invalid_spec as - procedure test1 is begin ut.expect(1).to_equal(1); end; - end;]'; - exception when ex_compilation_error then null; - end; - end; - procedure drop_invalid_package is - pragma autonomous_transaction; - begin - execute immediate 'drop package failing_invalid_spec'; - end; - - procedure run_and_revalidate_specs is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_is_invalid number; - begin - execute immediate q'[select count(1) from all_objects o where o.owner = :object_owner and o.object_type = 'PACKAGE' - and o.status = 'INVALID' and o.object_name= :object_name]' into l_is_invalid - using user,'INVALID_PCKAG_THAT_REVALIDATES'; - - select * bulk collect into l_results from table(ut3.ut.run('invalid_pckag_that_revalidates')); - - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(1).to_equal(l_is_invalid); - ut.expect(l_actual).to_be_like('%invalid_pckag_that_revalidates%invalidspecs [% sec]% -%Finished in % seconds% -%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); - - end; - - procedure generate_invalid_spec is - ex_compilation_error exception; - pragma exception_init(ex_compilation_error,-24344); - pragma autonomous_transaction; - begin - - execute immediate q'[ - create or replace package parent_specs as - c_test constant varchar2(1) := 'Y'; - end;]'; - - execute immediate q'[ - create or replace package invalid_pckag_that_revalidates as - --%suite - g_var varchar2(1) := parent_specs.c_test; - - --%test(invalidspecs) - procedure test1; - end;]'; - - execute immediate q'[ - create or replace package body invalid_pckag_that_revalidates as - procedure test1 is begin ut.expect('Y').to_equal(g_var); end; - end;]'; - - -- That should invalidate test package and we can then revers - execute immediate q'[ - create or replace package parent_specs as - c_test_error constant varchar2(1) := 'Y'; - end;]'; - - execute immediate q'[ - create or replace package parent_specs as - c_test constant varchar2(1) := 'Y'; - end;]'; - - end; - procedure drop_invalid_spec is - pragma autonomous_transaction; - begin - execute immediate 'drop package invalid_pckag_that_revalidates'; - execute immediate 'drop package parent_specs'; - end; - - procedure run_and_report_warnings is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - - select * bulk collect into l_results from table(ut3.ut.run('bad_annotations')); - l_actual := ut3.ut_utils.table_to_clob(l_results); - - ut.expect(l_actual).to_be_like('%Invalid annotation "--%context". Cannot find following "--%endcontext". Annotation ignored.% -%1 tests, 0 failed, 0 errored, 0 disabled, 1 warning(s)%'); - - end; - - procedure create_bad_annot is - pragma autonomous_transaction; - begin - execute immediate q'[ - create or replace package bad_annotations as - --%suite - - --%context - - --%test(invalidspecs) - procedure test1; - - end;]'; - - execute immediate q'[ - create or replace package body bad_annotations as - procedure test1 is begin ut.expect(1).to_equal(1); end; - end;]'; - - end; - - procedure drop_bad_annot is - pragma autonomous_transaction; - begin - execute immediate 'drop package bad_annotations'; - end; - - procedure savepoints_on_db_links is - l_results clob; - begin - ut3.ut.run('test_distributed_savepoint'); - l_results := core.get_dbms_output_as_clob(); - ut.expect(l_results).to_be_like('%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); - end; - - procedure create_suite_with_link is - pragma autonomous_transaction; - begin - create_db_link; - execute immediate 'create table tst(id number(18,0))'; - execute immediate q'[ - create or replace package test_distributed_savepoint is - --%suite - --%suitepath(alltests) - - --%beforeall - procedure setup; - - --%test - procedure test; - end;]'; - - execute immediate q'[ - create or replace package body test_distributed_savepoint is - - g_expected constant integer := 1; - - procedure setup is - begin - insert into tst@db_loopback values(g_expected); - end; - - procedure test is - l_actual integer := 0; - begin - select id into l_actual from tst@db_loopback; - - ut.expect(l_actual).to_equal(g_expected); - end; - - end;]'; - end; - - procedure drop_suite_with_link is - pragma autonomous_transaction; - begin - drop_db_link; - execute immediate 'drop table tst'; - execute immediate 'drop package test_distributed_savepoint'; - end; - -end; -/ diff --git a/test/api/test_ut_run.pks b/test/api/test_ut_run.pks deleted file mode 100644 index 55d19e866..000000000 --- a/test/api/test_ut_run.pks +++ /dev/null @@ -1,148 +0,0 @@ -create or replace package test_ut_run is - --%suite(ut.run) - --%suitepath(utplsql.api) - - - --%test(ut.version() returns version of the framework) - procedure ut_version; - - --%test(ut.fail() marks test as failed) - procedure ut_fail; - - procedure create_ut3$user#_tests; - procedure drop_ut3$user#_tests; - - --%context(ut_run_procedure) - --%displayname(ut.run() procedure options) - --%beforeall(create_ut3$user#_tests) - --%afterall(drop_ut3$user#_tests) - - --%test(Runs all tests in current schema with default reporter when no parameters given) - procedure run_proc_no_params; - --%test(Runs all tests in current schema with specified reporter) - procedure run_proc_specific_reporter; - --%test(Runs all tests in current schema with coverage file list) - procedure run_proc_cov_file_list; - - --%test(Runs given package only with package name given as path) - procedure run_proc_pkg_name; - --%test(Runs all from given package with package name given as path and coverage file list) - procedure run_proc_pkg_name_file_list; - --%test(Runs tests from given paths only with paths list) - procedure run_proc_path_list; - --%test(Runs tests from given paths only with paths list and coverage file list) - procedure run_proc_path_list_file_list; - --%test(Runs all tests in current schema using default reporter when null reporter given) - procedure run_proc_null_reporter; - --%test(Runs all tests in current schema with null path provided) - procedure run_proc_null_path; - --%test(Runs all tests in current schema with null path list given) - procedure run_proc_null_path_list; - --%test(Runs all tests in current schema with empty path list given) - procedure run_proc_empty_path_list; - - procedure create_suite_with_commit; - procedure drop_suite_with_commit; - --%test(Reports a warning if transaction was invalidated by test with automatic rollback) - --%beforetest(create_suite_with_commit) - --%aftertest(drop_suite_with_commit) - procedure run_proc_warn_on_commit; - - - procedure create_failing_beforeall_suite; - procedure drop_failing_beforeall_suite; - --%test(Marks child suite as failed when parent's suite beforeall fails) - --%beforetest(create_failing_beforeall_suite) - --%aftertest(drop_failing_beforeall_suite) - procedure run_proc_fail_child_suites; - - --%test(Savepoints are working properly on distributed transactions - Issue #839) - --%beforetest(create_suite_with_link) - --%aftertest(drop_suite_with_link) - procedure savepoints_on_db_links; - procedure create_suite_with_link; - procedure drop_suite_with_link; - - --%endcontext - - --%context(run_proc_transaction_control) - - --%beforeall - procedure transaction_setup; - --%afterall - procedure transaction_cleanup; - --%test(Leaves transaction open and uncommitted with a_force_manual_rollback) - procedure run_proc_keep_test_data; - --%test(Leaves transaction open and uncommitted with a_force_manual_rollback with exceptions) - procedure run_proc_keep_test_data_raise; - --%test(Does not impact current transaction when ran without a_force_manual_rollback) - procedure run_proc_discard_test_data; - - --%endcontext - - - --%context(ut_run_function) - --%displayname(ut.run() function options) - --%beforeall(create_ut3$user#_tests) - --%afterall(drop_ut3$user#_tests) - - --%test(Runs all tests in current schema with default reporter when no parameters given) - procedure run_func_no_params; - --%test(Runs all tests in current schema with specified reporter) - procedure run_func_specific_reporter; - --%test(Runs all tests in current schema with coverage file list) - procedure run_func_cov_file_list; - - --%test(Runs given package only with package name given as path) - procedure run_func_pkg_name; - --%test(Runs all from given package with package name given as path and coverage file list) - procedure run_func_pkg_name_file_list; - --%test(Runs tests from given paths with paths list) - procedure run_func_path_list; - --%test(Runs tests from given paths with paths list and coverage file list) - procedure run_func_path_list_file_list; - --%test(Runs all tests in current schema using default reporter when null reporter given) - procedure run_func_null_reporter; - --%test(Runs all tests in current schema with null path provided) - procedure run_func_null_path; - --%test(Runs all tests in current schema with null path list given) - procedure run_func_null_path_list; - --%test(Runs all tests in current schema with empty path list given) - procedure run_func_empty_path_list; - --%test(Runs all tests in current schema with coverage file list and default reporter) - procedure run_func_cov_file_lst_null_rep; - --%test(Executes successfully an empty suite) - procedure run_func_empty_suite; - - --disabled(Makes session wait for lock on 18.1 due to library cache pin wait) - --%test(ut.run - raises after completing all tests if a test fails with ORA-04068 or ORA-04061) - --%beforetest(create_test_suite) - --%aftertest(drop_test_suite) - procedure raise_in_invalid_state; - procedure create_test_suite; - procedure drop_test_suite; - - --%test(ut.run - Does not execute suite when specified package is not valid) - --%beforetest(compile_invalid_package) - --%aftertest(drop_invalid_package) - procedure run_in_invalid_state; - procedure compile_invalid_package; - procedure drop_invalid_package; - - --%test(Invalidate package specs via rebuild but still execute package) - --%beforetest(generate_invalid_spec) - --%aftertest(drop_invalid_spec) - procedure run_and_revalidate_specs; - procedure generate_invalid_spec; - procedure drop_invalid_spec; - - --%test(Provides warnings on invalid annotations) - --%beforetest(create_bad_annot) - --%aftertest(drop_bad_annot) - procedure run_and_report_warnings; - procedure create_bad_annot; - procedure drop_bad_annot; - --%endcontext - -end; -/ diff --git a/test/core/annotations/test_annot_throws_exception.pkb b/test/core/annotations/test_annot_throws_exception.pkb deleted file mode 100644 index 1ad4f19a5..000000000 --- a/test/core/annotations/test_annot_throws_exception.pkb +++ /dev/null @@ -1,375 +0,0 @@ -create or replace package body test_annot_throws_exception -is - g_tests_results clob; - - procedure recollect_tests_results is - pragma autonomous_transaction; - - l_package_spec varchar2(32737); - l_package_body varchar2(32737); - l_exception_spec varchar2(32737); - l_test_results ut3.ut_varchar2_list; - begin - l_exception_spec := q'[ - create or replace package exc_pkg is - c_e_single_exc constant number := -20200; - c_e_dummy constant varchar2(10) := 'dummy'; - c_e_varch_exc constant varchar2(10) := '-20201'; - c_e_list_1 number := -20202; - c_e_list_2 constant number := -20203; - c_e_diff_exc constant number := -20204; - c_e_mix_list constant number := -20205; - c_e_mix_missin constant number := -20206; - - e_some_exception exception; - pragma exception_init(e_some_exception, -20207); - - end;]'; - - l_package_spec := ' - create package annotated_package_with_throws is - --%suite(Dummy package to test annotation throws) - - --%test(Throws same annotated exception) - --%throws(-20145) - procedure raised_same_exception; - - --%test(Throws one of the listed exceptions) - --%throws(-20145,-20146, -20189 ,-20563) - procedure raised_one_listed_exception; - - --%test(Leading zero is ignored in exception list) - --%throws(-01476) - procedure leading_0_exception_no; - - --%test(Throws diff exception) - --%throws(-20144) - procedure raised_diff_exception; - - --%test(Throws empty) - --%throws() - procedure empty_throws; - - --%test(Ignores annotation and fails when exception was thrown) - --%throws(hello,784#,0-=234,,u1234) - procedure bad_paramters_with_except; - - --%test(Ignores annotation and succeeds when no exception thrown) - --%throws(hello,784#,0-=234,,u1234) - procedure bad_paramters_without_except; - - --%test(Detects a valid exception number within many invalid ones) - --%throws(7894562, operaqk, -=1, -1, pow74d, posdfk3) - procedure one_valid_exception_number; - - --%test(Gives failure when a exception is expected and nothing is thrown) - --%throws(-20459, -20136, -20145) - procedure nothing_thrown; - - --%test(Single exception defined as a constant number in package) - --%throws(exc_pkg.c_e_single_exc) - procedure single_exc_const_pkg; - - --%test(Gives success when one of annotated exception using constant is thrown) - --%throws(exc_pkg.c_e_list_1,exc_pkg.c_e_list_2) - procedure list_of_exc_constant; - - --%test(Gives failure when the raised exception is different that the annotated one using variable) - --%throws(exc_pkg.c_e_diff_exc) - procedure fail_not_match_exc; - - --%test(Success when one of exception from mixed list of number and constant is thrown) - --%throws(exc_pkg.c_e_mix_list,-20105) - procedure mixed_exc_list; - - --%test(Success when match exception even if other variable on list dont exists) - --%throws(exc_pkg.c_e_mix_missin,utter_rubbish) - procedure mixed_list_notexi; - - --%test(Success resolve and match named exception defined in pragma exception init) - --%throws(exc_pkg.e_some_exception) - procedure named_exc_pragma; - - --%test(Success resolve and match oracle named exception) - --%throws(NO_DATA_FOUND) - procedure named_exc_ora; - - --%test(Success resolve and match oracle named exception dup val index) - --%throws(DUP_VAL_ON_INDEX) - procedure named_exc_ora_dup_ind; - - --%test(Success map no data 100 to -1403) - --%throws(-1403) - procedure nodata_exc_ora; - - --%test(Success for exception defined as varchar) - --%throws(exc_pkg.c_e_varch_exc) - procedure defined_varchar_exc; - - --%test(Non existing constant exception) - --%throws(dummy.c_dummy); - procedure non_existing_const; - - --%test(Bad exception constant) - --%throws(exc_pkg.c_e_dummy); - procedure bad_exc_const; - - end; - '; - - l_package_body := ' - create package body annotated_package_with_throws is - procedure raised_same_exception is - begin - raise_application_error(-20145, ''Test error''); - end; - - procedure raised_one_listed_exception is - begin - raise_application_error(-20189, ''Test error''); - end; - - procedure leading_0_exception_no is - x integer; - begin - x := 1 / 0; - end; - - procedure raised_diff_exception is - begin - raise_application_error(-20143, ''Test error''); - end; - - procedure empty_throws is - begin - raise_application_error(-20143, ''Test error''); - end; - - procedure bad_paramters_with_except is - begin - raise_application_error(-20143, ''Test error''); - end; - - procedure bad_paramters_without_except is - begin - null; - end; - - procedure one_valid_exception_number is - begin - raise dup_val_on_index; - end; - - procedure nothing_thrown is - begin - null; - end; - - procedure single_exc_const_pkg is - begin - raise_application_error(exc_pkg.c_e_single_exc,''Test''); - end; - - procedure list_of_exc_constant is - begin - raise_application_error(exc_pkg.c_e_list_1,''Test''); - end; - - procedure fail_not_match_exc is - begin - raise NO_DATA_FOUND; - end; - - procedure mixed_exc_list is - begin - raise_application_error(exc_pkg.c_e_mix_list,''Test''); - end; - - procedure mixed_list_notexi is - begin - raise_application_error(exc_pkg.c_e_mix_missin,''Test''); - end; - - procedure named_exc_pragma is - begin - raise exc_pkg.e_some_exception; - end; - - procedure named_exc_ora is - begin - raise NO_DATA_FOUND; - end; - - procedure named_exc_ora_dup_ind is - begin - raise DUP_VAL_ON_INDEX; - end; - - procedure nodata_exc_ora is - begin - raise NO_DATA_FOUND; - end; - - procedure defined_varchar_exc is - begin - raise_application_error(exc_pkg.c_e_varch_exc,''Test''); - end; - - procedure non_existing_const is - begin - raise_application_error(-20143, ''Test error''); - end; - - procedure bad_exc_const is - begin - raise_application_error(-20143, ''Test error''); - end; - - end; - '; - - execute immediate l_exception_spec; - execute immediate l_package_spec; - execute immediate l_package_body; - - - select * bulk collect into l_test_results from table(ut3.ut.run(('annotated_package_with_throws'))); - - g_tests_results := ut3.ut_utils.table_to_clob(l_test_results); - end; - - procedure throws_same_annotated_except is - begin - ut.expect(g_tests_results).to_match('^\s*Throws same annotated exception \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('raised_same_exception'); - end; - - procedure throws_one_of_annotated_excpt is - begin - ut.expect(g_tests_results).to_match('^\s*Throws one of the listed exceptions \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('raised_one_listed_exception'); - end; - - procedure throws_with_leading_zero is - begin - ut.expect(g_tests_results).to_match('^\s*Leading zero is ignored in exception list \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('leading_0_exception_no'); - end; - - procedure throws_diff_annotated_except is - begin - ut.expect(g_tests_results).to_match('^\s*Throws diff exception \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); - ut.expect(g_tests_results).to_match('raised_diff_exception\s+Actual: -20143 was expected to equal: -20144\s+ORA-20143: Test error\s+ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); - end; - - procedure throws_empty is - begin - ut.expect(g_tests_results).to_match('^\s*Throws empty \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); - ut.expect(g_tests_results).to_match('empty_throws\s*ORA-20143: Test error\s*ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); - end; - - procedure bad_paramters_with_except is - begin - ut.expect(g_tests_results).to_match('^\s*Ignores annotation and fails when exception was thrown \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); - ut.expect(g_tests_results).to_match('bad_paramters_with_except\s*ORA-20143: Test error\s*ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); - end; - - procedure bad_paramters_without_except is - begin - ut.expect(g_tests_results).to_match('^\s*Ignores annotation and succeeds when no exception thrown \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('bad_paramters_without_except'); - end; - - procedure one_valid_exception_number is - begin - ut.expect(g_tests_results).to_match('^\s*Detects a valid exception number within many invalid ones \[[\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('one_valid_exception_number'); - end; - - procedure nothing_thrown is - begin - ut.expect(g_tests_results).to_match('^\s*Gives failure when a exception is expected and nothing is thrown \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); - ut.expect(g_tests_results).to_match('nothing_thrown\s*Expected one of exceptions \(-20459, -20136, -20145\) but nothing was raised.'); - end; - - procedure single_exc_const_pkg is - begin - ut.expect(g_tests_results).to_match('^\s*Single exception defined as a constant number in package \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('single_exc_const_pkg'); - end; - - procedure list_of_exc_constant is - begin - ut.expect(g_tests_results).to_match('^\s*Gives success when one of annotated exception using constant is thrown \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('list_of_exc_constant'); - end; - - procedure fail_not_match_exc is - begin - ut.expect(g_tests_results).to_match('^\s*Gives failure when the raised exception is different that the annotated one using variable \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); - ut.expect(g_tests_results).to_match('fail_not_match_exc\s+Actual: -1403 was expected to equal: -20204\s+ORA-01403: no data found\s+ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); - end; - - procedure mixed_exc_list is - begin - ut.expect(g_tests_results).to_match('^\s*Success when one of exception from mixed list of number and constant is thrown \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('mixed_exc_list'); - end; - - procedure mixed_list_notexi is - begin - ut.expect(g_tests_results).to_match('^\s*Success when match exception even if other variable on list dont exists \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('mixed_list_notexi'); - end; - - procedure named_exc_pragma is - begin - ut.expect(g_tests_results).to_match('^\s*Success resolve and match named exception defined in pragma exception init \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('mixed_list_notexi'); - end; - - procedure named_exc_ora is - begin - ut.expect(g_tests_results).to_match('^\s*Success resolve and match oracle named exception \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('named_exc_ora'); - end; - - procedure named_exc_ora_dup_ind is - begin - ut.expect(g_tests_results).to_match('^\s*Success resolve and match oracle named exception dup val index \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('named_exc_ora_dup_ind'); - end; - - procedure nodata_exc_ora is - begin - ut.expect(g_tests_results).to_match('^\s*Success map no data 100 to -1403 \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('nodata_exc_ora'); - end; - - procedure defined_varchar_exc is - begin - ut.expect(g_tests_results).to_match('^\s*Success for exception defined as varchar \[[,\.0-9]+ sec\]\s*$','m'); - ut.expect(g_tests_results).not_to_match('defined_varchar_exc'); - end; - - procedure non_existing_const is - begin - ut.expect(g_tests_results).to_match('^\s*Non existing constant exception \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); - ut.expect(g_tests_results).to_match('non_existing_const\s*ORA-20143: Test error\s*ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); - end; - - procedure bad_exc_const is - begin - ut.expect(g_tests_results).to_match('^\s*Bad exception constant \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); - ut.expect(g_tests_results).to_match('bad_exc_const\s*ORA-20143: Test error\s*ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); - end; - - procedure drop_test_package is - pragma autonomous_transaction; - begin - execute immediate 'drop package annotated_package_with_throws'; - execute immediate 'drop package exc_pkg'; - end; - -end; -/ diff --git a/test/core/annotations/test_annot_throws_exception.pks b/test/core/annotations/test_annot_throws_exception.pks deleted file mode 100644 index 54e814b55..000000000 --- a/test/core/annotations/test_annot_throws_exception.pks +++ /dev/null @@ -1,76 +0,0 @@ -create or replace package test_annot_throws_exception -is - --%suite(annotations - throws) - --%suitepath(utplsql.core.annotations) - - --%beforeall - procedure recollect_tests_results; - - --%test(Gives success when annotated number exception is thrown) - procedure throws_same_annotated_except; - - --%test(Gives success when one of the annotated number exceptions is thrown) - procedure throws_one_of_annotated_excpt; - - --%test(Gives success when annotated number exceptions has leading zero) - procedure throws_with_leading_zero; - - --%test(Gives failure when the raised exception is different that the annotated one) - procedure throws_diff_annotated_except; - - --%test(Ignores when the annotation throws is empty) - procedure throws_empty; - - --%test(Ignores when only bad parameters are passed, the test raise a exception and it shows errored test) - procedure bad_paramters_with_except; - - --%test(Ignores when only bad parameters are passed, the test does not raise a exception and it shows successful test) - procedure bad_paramters_without_except; - - --%test(Detects a valid exception number within many invalid ones) - procedure one_valid_exception_number; - - --%test(Gives failure when a exception is expected and nothing is thrown) - procedure nothing_thrown; - - --%test(Single exception defined as a constant number in package) - procedure single_exc_const_pkg; - - --%test(Gives success when one of annotated exception using constant is thrown) - procedure list_of_exc_constant; - - --%test(Gives failure when the raised exception is different that the annotated one using variable) - procedure fail_not_match_exc; - - --%test(Success when one of exception from mixed list of number and constant is thrown) - procedure mixed_exc_list; - - --%test(Success when match exception even if other variable on list dont exists) - procedure mixed_list_notexi; - - --%test(Success resolve and match named exception defined in pragma exception init) - procedure named_exc_pragma; - - --%test(Success resolve and match oracle named exception no data) - procedure named_exc_ora; - - --%test(Success resolve and match oracle named exception dup val index) - procedure named_exc_ora_dup_ind; - - --%test(Success map no data 100 to -1403) - procedure nodata_exc_ora; - - --%test(Success for exception defined as varchar) - procedure defined_varchar_exc; - - --%test(Non existing constant exception) - procedure non_existing_const; - - --%test(Bad exception constant) - procedure bad_exc_const; - - --%afterall - procedure drop_test_package; - -end; -/ diff --git a/test/core/annotations/test_annotation_manager.pkb b/test/core/annotations/test_annotation_manager.pkb deleted file mode 100644 index 804980a39..000000000 --- a/test/core/annotations/test_annotation_manager.pkb +++ /dev/null @@ -1,306 +0,0 @@ -create or replace package body test_annotation_manager is - - procedure create_dummy_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package dummy_package as - procedure some_dummy_procedure; - end;]'; - end; - - procedure drop_dummy_package is - pragma autonomous_transaction; - begin - execute immediate q'[drop package dummy_package]'; - end; - - procedure recompile_dummy_package is - pragma autonomous_transaction; - begin - execute immediate q'[alter package dummy_package compile]'; - end; - - procedure create_dummy_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package dummy_test_package as - --%suite(dummy_test_suite) - --%rollback(manual) - - --%test(dummy_test) - --%beforetest(some_procedure) - procedure some_dummy_test_procedure; - end;]'; - execute immediate q'[grant execute on dummy_test_package to public]'; - end; - - procedure modify_dummy_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package dummy_test_package as - --%suite(dummy_test_suite) - - --%test(dummy_test) - procedure some_dummy_test_procedure; - end;]'; - end; - - procedure drop_dummy_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[drop package dummy_test_package]'; - end; - - procedure recompile_dummy_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[alter package dummy_test_package compile]'; - end; - - procedure create_parse_proc_as_ut3$user# is - pragma autonomous_transaction; - begin - execute immediate q'[ - create or replace procedure ut3$user#.parse_annotations is - begin - ut3.ut_annotation_manager.rebuild_annotation_cache('UT3_TESTER','PACKAGE'); - end;]'; - end; - - procedure parse_dummy_test_as_ut3$user# is - pragma autonomous_transaction; - begin - execute immediate 'begin ut3$user#.parse_annotations; end;'; - end; - - procedure drop_parse_proc_as_ut3$user# is - pragma autonomous_transaction; - begin - execute immediate 'drop procedure ut3$user#.parse_annotations'; - end; - - procedure cleanup_annotation_cache is - pragma autonomous_transaction; - begin - delete from ut3.ut_annotation_cache_info - where object_owner = user and object_type = 'PACKAGE' and object_name in ('DUMMY_PACKAGE','DUMMY_TEST_PACKAGE'); - commit; - end; - - - procedure add_new_package is - l_actual_cache_id integer; - l_actual integer; - l_start_date date; - begin - --Act - l_start_date := sysdate; - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - --Assert - select max(cache_id) - into l_actual_cache_id - from ut3.ut_annotation_cache_info - where object_owner = user and object_type = 'PACKAGE' and object_name = 'DUMMY_PACKAGE' - and parse_time >= l_start_date; - - ut.expect(l_actual_cache_id).to_be_not_null; - - select count(1) - into l_actual - from ut3.ut_annotation_cache - where cache_id = l_actual_cache_id; - - ut.expect(l_actual).to_equal(0); - - end; - - procedure update_modified_package is - l_actual_cache_id integer; - l_actual integer; - l_start_date date; - begin - --Arrange - l_start_date := sysdate; - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - recompile_dummy_package(); - l_start_date := sysdate; - $if dbms_db_version.version >= 18 $then - dbms_session.sleep(1); - $else - dbms_lock.sleep(1); - $end - --Act - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - --Assert - select max(cache_id) - into l_actual_cache_id - from ut3.ut_annotation_cache_info - where object_owner = user and object_type = 'PACKAGE' and object_name = 'DUMMY_PACKAGE' - and parse_time >= l_start_date; - - ut.expect(l_actual_cache_id).to_be_not_null; - - select count(1) - into l_actual - from ut3.ut_annotation_cache - where cache_id = l_actual_cache_id; - - ut.expect(l_actual).to_equal(0); - end; - - - procedure add_new_test_package is - l_actual_cache_id integer; - l_actual sys_refcursor; - l_expected sys_refcursor; - l_start_date date; - begin - --Arrange - l_start_date := sysdate; - --Act - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - --Assert - select max(cache_id) - into l_actual_cache_id - from ut3.ut_annotation_cache_info - where object_owner = user and object_type = 'PACKAGE' and object_name = 'DUMMY_TEST_PACKAGE' - and parse_time >= l_start_date; - - ut.expect(l_actual_cache_id).to_be_not_null; - - open l_actual for - select annotation_position, annotation_name, annotation_text, subobject_name - from ut3.ut_annotation_cache where cache_id = l_actual_cache_id - order by annotation_position; - - open l_expected for - select 2 as annotation_position, 'suite' as annotation_name, - 'dummy_test_suite' as annotation_text, '' as subobject_name - from dual union all - select 3, 'rollback' , 'manual', '' as subobject_name - from dual union all - select 5, 'test' , 'dummy_test', 'some_dummy_test_procedure' as subobject_name - from dual union all - select 6, 'beforetest' , 'some_procedure', 'some_dummy_test_procedure' as subobject_name - from dual; - - ut.expect(l_actual).to_equal(l_expected); - end; - - - procedure update_modified_test_package is - l_actual_cache_id integer; - l_actual sys_refcursor; - l_expected sys_refcursor; - l_start_date date; - begin - --Arrange - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - l_start_date := sysdate; - modify_dummy_test_package(); - --Act - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - --Assert - select max(cache_id) - into l_actual_cache_id - from ut3.ut_annotation_cache_info - where object_owner = user and object_type = 'PACKAGE' and object_name = 'DUMMY_TEST_PACKAGE' - and parse_time >= l_start_date; - - ut.expect(l_actual_cache_id).to_be_not_null; - - open l_actual for - select annotation_position, annotation_name, annotation_text, subobject_name - from ut3.ut_annotation_cache where cache_id = l_actual_cache_id - order by annotation_position; - - open l_expected for - select 2 as annotation_position, 'suite' as annotation_name, - 'dummy_test_suite' as annotation_text, to_char(null) as subobject_name - from dual union all - select 4, 'test' , 'dummy_test', 'some_dummy_test_procedure' as subobject_name - from dual; - - ut.expect(l_actual).to_equal(l_expected); - end; - - - procedure keep_dropped_data_in_cache is - l_actual_cache_id integer; - l_actual sys_refcursor; - l_expected sys_refcursor; - l_start_date date; - begin - parse_dummy_test_as_ut3$user#(); - l_start_date := sysdate; - drop_dummy_test_package(); - --Act - parse_dummy_test_as_ut3$user#(); - --Assert - select max(cache_id) - into l_actual_cache_id - from ut3.ut_annotation_cache_info - where object_owner = user and object_type = 'PACKAGE' and object_name = 'DUMMY_TEST_PACKAGE' - and parse_time >= l_start_date; - - ut.expect(l_actual_cache_id).not_to_be_null(); - - open l_actual for - select annotation_position, annotation_name, annotation_text, subobject_name - from ut3.ut_annotation_cache where cache_id = l_actual_cache_id - order by annotation_position; - - open l_expected for - select 2 as annotation_position, 'suite' as annotation_name, - 'dummy_test_suite' as annotation_text, '' as subobject_name - from dual union all - select 3, 'rollback' , 'manual', '' as subobject_name - from dual union all - select 5, 'test' , 'dummy_test', 'some_dummy_test_procedure' as subobject_name - from dual union all - select 6, 'beforetest' , 'some_procedure', 'some_dummy_test_procedure' as subobject_name - from dual; - - ut.expect(l_actual).to_equal(l_expected); - end; - - procedure no_data_for_dropped_object is - l_actual sys_refcursor; - begin - --Arrange - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - drop_dummy_test_package(); - --Act - open l_actual for - select * from table(ut3.ut_annotation_manager.get_annotated_objects(user,'PACKAGE')) - where object_name = 'DUMMY_TEST_PACKAGE'; - --Assert - ut.expect(l_actual).to_be_empty(); - end; - - procedure cleanup_dropped_data_in_cache is - l_cache_count integer; - l_actual sys_refcursor; - l_expected sys_refcursor; - l_start_date date; - begin - --Arrange - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - l_start_date := sysdate; - drop_dummy_test_package(); - --Act - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - --Assert - select count(1) - into l_cache_count - from ut3.ut_annotation_cache_info - where object_owner = user - and object_type = 'PACKAGE' - and object_name = 'DUMMY_TEST_PACKAGE'; - - ut.expect(l_cache_count).to_equal(0); - - end; - -end test_annotation_manager; -/ diff --git a/test/core/annotations/test_annotation_manager.pks b/test/core/annotations/test_annotation_manager.pks deleted file mode 100644 index 0726c8256..000000000 --- a/test/core/annotations/test_annotation_manager.pks +++ /dev/null @@ -1,55 +0,0 @@ -create or replace package test_annotation_manager is - - --%suite(ut_annotation_manager) - --%suitepath(utplsql.core.annotations) - - --%aftereach - procedure cleanup_annotation_cache; - - procedure create_dummy_package; - - procedure drop_dummy_package; - - procedure create_dummy_test_package; - - procedure create_parse_proc_as_ut3$user#; - - procedure drop_parse_proc_as_ut3$user#; - - procedure drop_dummy_test_package; - - --%test(Adds new package to annotation cache info) - --%beforetest(create_dummy_package) - --%aftertest(drop_dummy_package) - procedure add_new_package; - - --%test(Updates annotation cache info for modified package) - --%beforetest(create_dummy_package) - --%aftertest(drop_dummy_package) - procedure update_modified_package; - - --%test(Adds annotations to cache for unit test package) - --%beforetest(create_dummy_test_package) - --%aftertest(drop_dummy_test_package) - procedure add_new_test_package; - - --%test(Updates annotations in cache for modified test package) - --%beforetest(create_dummy_test_package) - --%aftertest(drop_dummy_test_package) - procedure update_modified_test_package; - - --%test(Keeps annotations in cache when object was removed but user can't see whole schema) - --%beforetest(create_dummy_test_package,create_parse_proc_as_ut3$user#) - --%aftertest(drop_parse_proc_as_ut3$user#) - procedure keep_dropped_data_in_cache; - - --%test(Does not return data for dropped object) - --%beforetest(create_dummy_test_package) - procedure no_data_for_dropped_object; - - --%test(Remove object from cache when object dropped and user can see whole schema) - --%beforetest(create_dummy_test_package) - procedure cleanup_dropped_data_in_cache; - -end test_annotation_manager; -/ diff --git a/test/core/annotations/test_annotation_parser.pkb b/test/core/annotations/test_annotation_parser.pkb deleted file mode 100644 index 5345e3a50..000000000 --- a/test/core/annotations/test_annotation_parser.pkb +++ /dev/null @@ -1,461 +0,0 @@ -create or replace package body test_annotation_parser is - - procedure test_proc_comments is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - - begin - l_source := 'PACKAGE test_tt AS - -- %suite - -- %displayname(Name of suite) - -- %suitepath(all.globaltests) - - -- %ann1(Name of suite) - -- wrong line - -- %ann2(some_value) - procedure foo; - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - - l_expected := ut3.ut_annotations( - ut3.ut_annotation(2,'suite',null, null), - ut3.ut_annotation(3,'displayname','Name of suite',null), - ut3.ut_annotation(4,'suitepath','all.globaltests',null), - ut3.ut_annotation(6,'ann1','Name of suite',null), - ut3.ut_annotation(8,'ann2','some_value','foo') - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - end; - - procedure include_floating_annotations is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - begin - l_source := 'PACKAGE test_tt AS - -- %suite - -- %displayname(Name of suite) - -- %suitepath(all.globaltests) - - -- %ann1(Name of suite) - -- %ann2(all.globaltests) - - --%test - procedure foo; - - -- %ann3(Name of suite) - -- %ann4(all.globaltests) - - --%test - procedure bar; - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 2, 'suite', null, null ), - ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), - ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ), - ut3.ut_annotation( 6, 'ann1', 'Name of suite', null ), - ut3.ut_annotation( 7, 'ann2', 'all.globaltests', null ), - ut3.ut_annotation( 9, 'test', null, 'foo'), - ut3.ut_annotation( 12, 'ann3', 'Name of suite', null ), - ut3.ut_annotation( 13, 'ann4', 'all.globaltests', null ), - ut3.ut_annotation( 15, 'test', null, 'bar') - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - end; - - procedure parse_complex_with_functions is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - - begin - l_source := 'PACKAGE test_tt AS - -- %suite - -- %displayname(Name of suite) - -- %suitepath(all.globaltests) - - --%test - procedure foo; - - - --%beforeeach - procedure foo2; - - --test comment - -- wrong comment - - - /* - describtion of the procedure - */ - --%beforeeach(key=testval) - PROCEDURE foo3(a_value number default null); - - --%all - function foo4(a_val number default null - , a_par varchar2 default := ''asdf''); - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 2, 'suite', null, null ), - ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), - ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ), - ut3.ut_annotation( 6, 'test', null, 'foo' ), - ut3.ut_annotation( 10, 'beforeeach', null,'foo2' ), - ut3.ut_annotation( 20, 'beforeeach', 'key=testval','foo3' ), - ut3.ut_annotation( 23, 'all', null,'foo4' ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - end; - - procedure no_procedure_annotation is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - - begin - l_source := 'PACKAGE test_tt AS - -- %suite - -- %displayname(Name of suite) - -- %suitepath(all.globaltests) - - procedure foo; - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 2, 'suite', null, null ), - ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), - ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - end; - - procedure parse_accessible_by is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - - begin - l_source := 'PACKAGE test_tt accessible by (foo) AS - -- %suite - -- %displayname(Name of suite) - -- %suitepath(all.globaltests) - - procedure foo; - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 2, 'suite', null, null ), - ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), - ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - end; - - procedure complex_package_declaration is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - - begin - l_source := 'PACKAGE test_tt - ACCESSIBLE BY (calling_proc) - authid current_user - AS - -- %suite - -- %displayname(Name of suite) - -- %suitepath(all.globaltests) - - procedure foo; - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 5, 'suite', null, null ), - ut3.ut_annotation( 6, 'displayname', 'Name of suite', null ), - ut3.ut_annotation( 7, 'suitepath', 'all.globaltests', null ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - end; - - procedure complex_text is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - - begin - l_source := 'PACKAGE test_tt AS - -- %suite - --%displayname(name = Name of suite) - -- %suitepath(key=all.globaltests,key2=foo,"--%some text") - - procedure foo; - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 2, 'suite', null, null ), - ut3.ut_annotation( 3, 'displayname', 'name = Name of suite', null ), - ut3.ut_annotation( 4, 'suitepath', 'key=all.globaltests,key2=foo,"--%some text"', null ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - end; - - procedure ignore_annotations_in_comments is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - - begin - l_source := 'PACKAGE test_tt AS - /* - Some comment - -- inlined - -- %ignored - */ - -- %suite - --%displayname(Name of suite) - -- %suitepath(all.globaltests) - - procedure foo; - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 7, 'suite', null, null ), - ut3.ut_annotation( 8, 'displayname', 'Name of suite', null ), - ut3.ut_annotation( 9, 'suitepath', 'all.globaltests', null ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - end; - - procedure ignore_wrapped_package is - l_source dbms_preprocessor.source_lines_t; - l_actual ut3.ut_annotations; - begin - --Arrange - l_source(1) := 'create or replace PACKAGE tst_wrapped_pck wrapped -a000000 -369 -abcd -abcd -abcd -abcd -abcd -abcd -abcd -abcd -abcd -abcd -abcd -abcd -abcd -abcd -abcd -9 -34 6d -bg9Jaf2KguofrwaqloE8yvbggKcwg5m49TOf9b9cFj7R9JaW8lYWWi70llr/K6V0iwlp5+eb -v58yvbLAXLi9gYHwoIvAgccti+Cmpg0DKLY= --- %some_annotation_like_text -'; - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - --Assert - ut.expect(anydata.convertCollection(l_actual)).to_be_empty(); - end; - - procedure brackets_in_desc is - - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - begin - l_source := 'PACKAGE test_tt AS - -- %suite(Name of suite (including some brackets) and some more text) -END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 2, 'suite', 'Name of suite (including some brackets) and some more text', null ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - end; - - procedure test_space_before_annot_params is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - - begin - l_source := 'PACKAGE test_tt AS - /* - Some comment - -- inlined - */ - -- %suite - -- %suitepath (all.globaltests) - - procedure foo; -END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 6, 'suite', null, null ), - ut3.ut_annotation( 7, 'suitepath', 'all.globaltests', null ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - end; - - procedure test_windows_newline - as - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - begin - l_source := 'PACKAGE test_tt AS - -- %suite - -- %displayname(Name of suite)' || chr(13) || chr(10) - || ' -- %suitepath(all.globaltests) - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 2, 'suite', null, null ), - ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), - ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - end; - - procedure test_annot_very_long_name - as - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - begin - l_source := 'PACKAGE very_long_procedure_name_valid_for_oracle_12_so_utPLSQL_should_allow_it_definitely_well_still_not_reached_128_but_wait_we_did_it AS - -- %suite - -- %displayname(Name of suite) - -- %suitepath(all.globaltests) - - --%test - procedure very_long_procedure_name_valid_for_oracle_12_so_utPLSQL_should_allow_it_definitely_well_still_not_reached_128_but_wait_we_dit_it; - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 2, 'suite', null, null ), - ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), - ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ), - ut3.ut_annotation( 6, 'test', null, 'very_long_procedure_name_valid_for_oracle_12_so_utPLSQL_should_allow_it_definitely_well_still_not_reached_128_but_wait_we_dit_it' ) - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - end; - - procedure test_upper_annot is - l_source clob; - l_actual ut3.ut_annotations; - l_expected ut3.ut_annotations; - begin - l_source := 'PACKAGE test_tt AS - -- %SUITE - -- %DISPLAYNAME(Name of suite) - -- %SUITEPATH(all.globaltests) - - -- %ANN1(Name of suite) - -- %ANN2(all.globaltests) - - --%TEST - procedure foo; - - -- %ANN3(Name of suite) - -- %ANN4(all.globaltests) - - --%TEST - procedure bar; - END;'; - - --Act - l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); - - --Assert - l_expected := ut3.ut_annotations( - ut3.ut_annotation( 2, 'suite', null, null ), - ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), - ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ), - ut3.ut_annotation( 6, 'ann1', 'Name of suite', null ), - ut3.ut_annotation( 7, 'ann2', 'all.globaltests', null ), - ut3.ut_annotation( 9, 'test', null, 'foo'), - ut3.ut_annotation( 12, 'ann3', 'Name of suite', null ), - ut3.ut_annotation( 13, 'ann4', 'all.globaltests', null ), - ut3.ut_annotation( 15, 'test', null, 'bar') - ); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - end; - -end test_annotation_parser; -/ diff --git a/test/core/annotations/test_annotation_parser.pks b/test/core/annotations/test_annotation_parser.pks deleted file mode 100644 index 19b98ae63..000000000 --- a/test/core/annotations/test_annotation_parser.pks +++ /dev/null @@ -1,42 +0,0 @@ -create or replace package test_annotation_parser is - - --%suite(ut_annotation_parser) - --%suitepath(utplsql.core.annotations) - - --%test(Treats procedure level annotations as package level, if mixed with comments) - procedure test_proc_comments; - --%test(Includes floating annotations between procedures and package) - procedure include_floating_annotations; - --%test(Parses complex annotations on procedures and functions) - procedure parse_complex_with_functions; - --%test(Parses package annotations without any procedure annotations) - procedure no_procedure_annotation; - --%test(Parses package level annotations with Accessible by) - procedure parse_accessible_by; - --%test(Parses package level annotations with multiline declaration) - procedure complex_package_declaration; - --%test(Parses complex text in annotation) - procedure complex_text; - --%test(Ignores content of multi-line comments) - procedure ignore_annotations_in_comments; - - --%test(Ignores wrapped package and does not raise exception) - procedure ignore_wrapped_package; - - --%test(Parses package level annotations with annotation params containing brackets) - procedure brackets_in_desc; - - --%test(Parses annotation text even with spaces before brackets) - procedure test_space_before_annot_params; - - -- %test(Parses source-code with Windows-style newline) - procedure test_windows_newline; - - -- %test(Parses annotations with very long object names) - procedure test_annot_very_long_name; - - -- %test(Parses upper case annotations) - procedure test_upper_annot; - -end test_annotation_parser; -/ diff --git a/test/core/expectations.pkb b/test/core/expectations.pkb deleted file mode 100644 index cc2bae436..000000000 --- a/test/core/expectations.pkb +++ /dev/null @@ -1,67 +0,0 @@ -create or replace package body expectations is - - function unary_expectation_block( - a_matcher_name varchar2, - a_data_type varchar2, - a_data_value varchar2 - ) return varchar2 is - l_execute varchar2(32000); - begin - l_execute := ' - declare - l_expected '||a_data_type||' := '||a_data_value||'; - begin - --act - execute the expectation - ut3.ut.expect(l_expected).'||a_matcher_name||'(); - end;'; - return l_execute; - end; - - function unary_expectation_object_block( - a_matcher_name varchar2, - a_object_name varchar2, - a_object_value varchar2, - a_object_type varchar2 - ) return varchar2 is - begin - return ' - declare - l_object '||a_object_name||' := '||a_object_value||'; - begin - ut3.ut.expect(anydata.convert'||a_object_type||'(l_object)).'||a_matcher_name||'(); - end;'; - end; - - function binary_expectation_block( - a_matcher_name varchar2, - a_actual_data_type varchar2, - a_actual_data varchar2, - a_expected_data_type varchar2, - a_expected_data varchar2 - ) return varchar2 - is - l_execute varchar2(32000); - begin - l_execute := ' - declare - l_actual '||a_actual_data_type||' := '||a_actual_data||'; - l_expected '||a_expected_data_type||' := '||a_expected_data||'; - begin - --act - execute the expectation - ut3.ut.expect( l_actual ).'||a_matcher_name||'(l_expected); - end;'; - return l_execute; - end; - - function failed_expectations_data return anydata is - begin - return anydata.convertCollection(ut3.ut_expectation_processor.get_failed_expectations()); - end; - - procedure cleanup_expectations is - begin - ut3.ut_expectation_processor.clear_expectations(); - end; - -end expectations; -/ diff --git a/test/core/expectations.pks b/test/core/expectations.pks deleted file mode 100644 index 9abc29400..000000000 --- a/test/core/expectations.pks +++ /dev/null @@ -1,29 +0,0 @@ -create or replace package expectations is - - function unary_expectation_block( - a_matcher_name varchar2, - a_data_type varchar2, - a_data_value varchar2 - ) return varchar2; - - function unary_expectation_object_block( - a_matcher_name varchar2, - a_object_name varchar2, - a_object_value varchar2, - a_object_type varchar2 - ) return varchar2; - - function binary_expectation_block( - a_matcher_name varchar2, - a_actual_data_type varchar2, - a_actual_data varchar2, - a_expected_data_type varchar2, - a_expected_data varchar2 - ) return varchar2; - - function failed_expectations_data return anydata; - - procedure cleanup_expectations; - -end expectations; -/ diff --git a/test/core/expectations/binary/test_be_greater_or_equal.pkb b/test/core/expectations/binary/test_be_greater_or_equal.pkb deleted file mode 100644 index f41878643..000000000 --- a/test/core/expectations/binary/test_be_greater_or_equal.pkb +++ /dev/null @@ -1,263 +0,0 @@ -create or replace package body test_be_greater_or_equal is - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - function to_greater_equal_block( - a_data_type varchar2, - a_actual varchar2, - a_expected varchar2 - ) return varchar2 is - begin - return expectations.binary_expectation_block( - 'to_be_greater_or_equal', a_data_type, a_actual, a_data_type, a_expected - ); - end; - - function not_to_greater_equal_block( - a_data_type varchar2, - a_actual varchar2, - a_expected varchar2 - ) return varchar2 is - begin - return expectations.binary_expectation_block( - 'not_to_be_greater_or_equal', a_data_type, a_actual, a_data_type, a_expected - ); - end; - - procedure actual_date_greater is - begin - --Act - execute immediate to_greater_equal_block('date', 'sysdate', 'sysdate-1'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_number_greater is - begin - --Act - execute immediate to_greater_equal_block('number', '2.0', '1.99'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_interval_ym_greater is - begin - --Act - execute immediate to_greater_equal_block('interval year to month', '''2-1''', '''2-0'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_interval_ds_greater is - begin - --Act - execute immediate to_greater_equal_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_greater is - begin - --Act - execute immediate to_greater_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_tz_greater is - begin - --Act - execute immediate to_greater_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_ltz_greater is - begin - --Act - execute immediate to_greater_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_date_equal is - begin - --Act - execute immediate to_greater_equal_block('date', 'sysdate', 'sysdate'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_number_equal is - begin - --Act - execute immediate to_greater_equal_block('number', '2.0', '2.00'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_interval_ym_equal is - begin - --Act - execute immediate to_greater_equal_block('interval year to month', '''2-1''', '''2-1'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_interval_ds_equal is - begin - --Act - execute immediate to_greater_equal_block('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_equal is - begin - --Act - execute immediate to_greater_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_tz_equal is - begin - --Act - execute immediate to_greater_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_ltz_equal is - begin - --Act - execute immediate to_greater_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_date_less is - begin - --Act - execute immediate to_greater_equal_block('date', 'sysdate-1', 'sysdate'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_number_less is - begin - --Act - execute immediate to_greater_equal_block('number', '1.0', '1.01'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ym_less is - begin - --Act - execute immediate to_greater_equal_block('interval year to month', '''2-1''', '''2-2'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ds_less is - begin - --Act - execute immediate to_greater_equal_block('interval day to second', '''2 00:59:58''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_less is - begin - --Act - execute immediate to_greater_equal_block('timestamp', 'to_timestamp(''1997 12'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_tz_less is - begin - --Act - execute immediate to_greater_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_ltz_less is - begin - --Act - execute immediate to_greater_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_date_greater is - begin - --Act - execute immediate not_to_greater_equal_block('date', 'sysdate', 'sysdate-1'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_number_greater is - begin - --Act - execute immediate not_to_greater_equal_block('number', '2.0', '1.99'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_interval_ym_greater is - begin - --Act - execute immediate not_to_greater_equal_block('interval year to month', '''2-1''', '''2-0'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_interval_ds_greater is - begin - --Act - execute immediate not_to_greater_equal_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_timestamp_greater is - begin - --Act - execute immediate not_to_greater_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_timestamp_tz_gretr is - begin - --Act - execute immediate not_to_greater_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_timestamp_ltz_gretr is - begin - --Act - execute immediate not_to_greater_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_clob is - begin - --Act - ut3.ut.expect(to_clob('3')).to_( ut3.be_greater_or_equal(3) ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - -end; -/ diff --git a/test/core/expectations/binary/test_be_greater_or_equal.pks b/test/core/expectations/binary/test_be_greater_or_equal.pks deleted file mode 100644 index 077dff59c..000000000 --- a/test/core/expectations/binary/test_be_greater_or_equal.pks +++ /dev/null @@ -1,97 +0,0 @@ -create or replace package test_be_greater_or_equal is - - --%suite((not)to_be_greater_or_equal) - --%suitepath(utplsql.core.expectations.binary) - - --%aftereach - procedure cleanup_expectations; - - --%test(Gives success when actual date is greater than expected) - procedure actual_date_greater; - - --%test(Gives success when actual number is greater than expected) - procedure actual_number_greater; - - --%test(Gives success when actual interval year to month is greater than expected) - procedure actual_interval_ym_greater; - - --%test(Gives success when actual interval day to second is greater than expected) - procedure actual_interval_ds_greater; - - --%test(Gives success when actual timestamp is greater than expected) - procedure actual_timestamp_greater; - - --%test(Gives success when actual timestamp with time zone is greater than expected) - procedure actual_timestamp_tz_greater; - - --%test(Gives success when actual timestamp with local time zone is greater than expected) - procedure actual_timestamp_ltz_greater; - - --%test(Gives success when actual date is equal expected) - procedure actual_date_equal; - - --%test(Gives success when actual number is equal expected) - procedure actual_number_equal; - - --%test(Gives success when actual interval year to month is equal expected) - procedure actual_interval_ym_equal; - - --%test(Gives success when actual interval day to second is equal expected) - procedure actual_interval_ds_equal; - - --%test(Gives success when actual timestamp is equal expected) - procedure actual_timestamp_equal; - - --%test(Gives success when actual timestamp with time zone is equal expected) - procedure actual_timestamp_tz_equal; - - --%test(Gives success when actual timestamp with local time zone is equal expected) - procedure actual_timestamp_ltz_equal; - - --%test(Gives failure when actual date is less than expected) - procedure actual_date_less; - - --%test(Gives failure when actual number is less than expected) - procedure actual_number_less; - - --%test(Gives failure when actual interval year to month is less than expected) - procedure actual_interval_ym_less; - - --%test(Gives failure when actual interval day to second is less than expected) - procedure actual_interval_ds_less; - - --%test(Gives failure when actual timestamp is less than expected) - procedure actual_timestamp_less; - - --%test(Gives failure when actual timestamp with time zone is less than expected) - procedure actual_timestamp_tz_less; - - --%test(Gives failure when actual timestamp with local time zone is less than expected) - procedure actual_timestamp_ltz_less; - - --%test(Negated - Gives failure when actual date is greater than expected) - procedure not_actual_date_greater; - - --%test(Negated - Gives failure when actual number is greater than expected) - procedure not_actual_number_greater; - - --%test(Negated - Gives failure when actual interval year to month is greater than expected) - procedure not_actual_interval_ym_greater; - - --%test(Negated - Gives failure when actual interval day to second is greater than expected) - procedure not_actual_interval_ds_greater; - - --%test(Negated - Gives failure when actual timestamp is greater than expected) - procedure not_actual_timestamp_greater; - - --%test(Negated - Gives failure when actual timestamp with time zone is greater than expected) - procedure not_actual_timestamp_tz_gretr; - - --%test(Negated - Gives failure when actual timestamp with local time zone is greater than expected) - procedure not_actual_timestamp_ltz_gretr; - - --%test(Gives failure when running against CLOB) - procedure actual_clob; - -end; -/ diff --git a/test/core/expectations/binary/test_be_greater_than.pkb b/test/core/expectations/binary/test_be_greater_than.pkb deleted file mode 100644 index 5863b11b1..000000000 --- a/test/core/expectations/binary/test_be_greater_than.pkb +++ /dev/null @@ -1,263 +0,0 @@ -create or replace package body test_be_greater_than is - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - function to_greater_than_block( - a_data_type varchar2, - a_actual varchar2, - a_expected varchar2 - ) return varchar2 is - begin - return expectations.binary_expectation_block( - 'to_be_greater_than', a_data_type, a_actual, a_data_type, a_expected - ); - end; - - function not_to_greater_than_block( - a_data_type varchar2, - a_actual varchar2, - a_expected varchar2 - ) return varchar2 is - begin - return expectations.binary_expectation_block( - 'not_to_be_greater_than', a_data_type, a_actual, a_data_type, a_expected - ); - end; - - procedure actual_date_greater is - begin - --Act - execute immediate to_greater_than_block('date', 'sysdate', 'sysdate-1'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_number_greater is - begin - --Act - execute immediate to_greater_than_block('number', '2.0', '1.99'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_interval_ym_greater is - begin - --Act - execute immediate to_greater_than_block('interval year to month', '''2-1''', '''2-0'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_interval_ds_greater is - begin - --Act - execute immediate to_greater_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_greater is - begin - --Act - execute immediate to_greater_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_tz_greater is - begin - --Act - execute immediate to_greater_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_ltz_greater is - begin - --Act - execute immediate to_greater_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_date_equal is - begin - --Act - execute immediate to_greater_than_block('date', 'sysdate', 'sysdate'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_number_equal is - begin - --Act - execute immediate to_greater_than_block('number', '2.0', '2.00'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ym_equal is - begin - --Act - execute immediate to_greater_than_block('interval year to month', '''2-1''', '''2-1'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ds_equal is - begin - --Act - execute immediate to_greater_than_block('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_equal is - begin - --Act - execute immediate to_greater_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_tz_equal is - begin - --Act - execute immediate to_greater_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_ltz_equal is - begin - --Act - execute immediate to_greater_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_date_less is - begin - --Act - execute immediate to_greater_than_block('date', 'sysdate-1', 'sysdate'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_number_less is - begin - --Act - execute immediate to_greater_than_block('number', '1.0', '1.01'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ym_less is - begin - --Act - execute immediate to_greater_than_block('interval year to month', '''2-1''', '''2-2'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ds_less is - begin - --Act - execute immediate to_greater_than_block('interval day to second', '''2 00:59:58''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_less is - begin - --Act - execute immediate to_greater_than_block('timestamp', 'to_timestamp(''1997 12'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_tz_less is - begin - --Act - execute immediate to_greater_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_ltz_less is - begin - --Act - execute immediate to_greater_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_date_greater is - begin - --Act - execute immediate not_to_greater_than_block('date', 'sysdate', 'sysdate-1'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_number_greater is - begin - --Act - execute immediate not_to_greater_than_block('number', '2.0', '1.99'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_interval_ym_greater is - begin - --Act - execute immediate not_to_greater_than_block('interval year to month', '''2-1''', '''2-0'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_interval_ds_greater is - begin - --Act - execute immediate not_to_greater_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_timestamp_greater is - begin - --Act - execute immediate not_to_greater_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_timestamp_tz_gretr is - begin - --Act - execute immediate not_to_greater_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_actual_timestamp_ltz_gretr is - begin - --Act - execute immediate not_to_greater_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_clob is - begin - --Act - ut3.ut.expect(to_clob('3')).to_( ut3.be_greater_than(2) ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - -end; -/ diff --git a/test/core/expectations/binary/test_be_greater_than.pks b/test/core/expectations/binary/test_be_greater_than.pks deleted file mode 100644 index 6a1dfcc3e..000000000 --- a/test/core/expectations/binary/test_be_greater_than.pks +++ /dev/null @@ -1,97 +0,0 @@ -create or replace package test_be_greater_than is - - --%suite((not)to_be_greater_than) - --%suitepath(utplsql.core.expectations.binary) - - --%aftereach - procedure cleanup_expectations; - - --%test(Gives success when actual date is greater than expected) - procedure actual_date_greater; - - --%test(Gives success when actual number is greater than expected) - procedure actual_number_greater; - - --%test(Gives success when actual interval year to month is greater than expected) - procedure actual_interval_ym_greater; - - --%test(Gives success when actual interval day to second is greater than expected) - procedure actual_interval_ds_greater; - - --%test(Gives success when actual timestamp is greater than expected) - procedure actual_timestamp_greater; - - --%test(Gives success when actual timestamp with time zone is greater than expected) - procedure actual_timestamp_tz_greater; - - --%test(Gives success when actual timestamp with local time zone is greater than expected) - procedure actual_timestamp_ltz_greater; - - --%test(Gives failure when actual date is equal expected) - procedure actual_date_equal; - - --%test(Gives failure when actual number is equal expected) - procedure actual_number_equal; - - --%test(Gives failure when actual interval year to month is equal expected) - procedure actual_interval_ym_equal; - - --%test(Gives failure when actual interval day to second is equal expected) - procedure actual_interval_ds_equal; - - --%test(Gives failure when actual timestamp is equal expected) - procedure actual_timestamp_equal; - - --%test(Gives failure when actual timestamp with time zone is equal expected) - procedure actual_timestamp_tz_equal; - - --%test(Gives failure when actual timestamp with local time zone is equal expected) - procedure actual_timestamp_ltz_equal; - - --%test(Gives failure when actual date is less than expected) - procedure actual_date_less; - - --%test(Gives failure when actual number is less than expected) - procedure actual_number_less; - - --%test(Gives failure when actual interval year to month is less than expected) - procedure actual_interval_ym_less; - - --%test(Gives failure when actual interval day to second is less than expected) - procedure actual_interval_ds_less; - - --%test(Gives failure when actual timestamp is less than expected) - procedure actual_timestamp_less; - - --%test(Gives failure when actual timestamp with time zone is less than expected) - procedure actual_timestamp_tz_less; - - --%test(Gives failure when actual timestamp with local time zone is less than expected) - procedure actual_timestamp_ltz_less; - - --%test(Negated - Gives failure when actual date is greater than expected) - procedure not_actual_date_greater; - - --%test(Negated - Gives failure when actual number is greater than expected) - procedure not_actual_number_greater; - - --%test(Negated - Gives failure when actual interval year to month is greater than expected) - procedure not_actual_interval_ym_greater; - - --%test(Negated - Gives failure when actual interval day to second is greater than expected) - procedure not_actual_interval_ds_greater; - - --%test(Negated - Gives failure when actual timestamp is greater than expected) - procedure not_actual_timestamp_greater; - - --%test(Negated - Gives failure when actual timestamp with time zone is greater than expected) - procedure not_actual_timestamp_tz_gretr; - - --%test(Negated - Gives failure when actual timestamp with local time zone is greater than expected) - procedure not_actual_timestamp_ltz_gretr; - - --%test(Gives failure when running against CLOB) - procedure actual_clob; - -end; -/ diff --git a/test/core/expectations/binary/test_be_less_or_equal.pkb b/test/core/expectations/binary/test_be_less_or_equal.pkb deleted file mode 100644 index c72e0039b..000000000 --- a/test/core/expectations/binary/test_be_less_or_equal.pkb +++ /dev/null @@ -1,263 +0,0 @@ -create or replace package body test_be_less_or_equal is - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - function to_less_or_equal_block( - a_data_type varchar2, - a_actual varchar2, - a_expected varchar2 - ) return varchar2 is - begin - return expectations.binary_expectation_block( - 'to_be_less_or_equal', a_data_type, a_actual, a_data_type, a_expected - ); - end; - - function not_to_less_or_equal_block( - a_data_type varchar2, - a_actual varchar2, - a_expected varchar2 - ) return varchar2 is - begin - return expectations.binary_expectation_block( - 'not_to_be_less_or_equal', a_data_type, a_actual, a_data_type, a_expected - ); - end; - - procedure actual_date_greater is - begin - --Act - execute immediate to_less_or_equal_block('date', 'sysdate', 'sysdate-1'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty(); - end; - - procedure actual_number_greater is - begin - --Act - execute immediate to_less_or_equal_block('number', '2.0', '1.99'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty(); - end; - - procedure actual_interval_ym_greater is - begin - --Act - execute immediate to_less_or_equal_block('interval year to month', '''2-1''', '''2-0'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty(); - end; - - procedure actual_interval_ds_greater is - begin - --Act - execute immediate to_less_or_equal_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty(); - end; - - procedure actual_timestamp_greater is - begin - --Act - execute immediate to_less_or_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty(); - end; - - procedure actual_timestamp_tz_greater is - begin - --Act - execute immediate to_less_or_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty(); - end; - - procedure actual_timestamp_ltz_greater is - begin - --Act - execute immediate to_less_or_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty(); - end; - - procedure actual_date_equal is - begin - --Act - execute immediate to_less_or_equal_block('date', 'sysdate', 'sysdate'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_number_equal is - begin - --Act - execute immediate to_less_or_equal_block('number', '2.0', '2.00'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_interval_ym_equal is - begin - --Act - execute immediate to_less_or_equal_block('interval year to month', '''2-1''', '''2-1'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_interval_ds_equal is - begin - --Act - execute immediate to_less_or_equal_block('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_timestamp_equal is - begin - --Act - execute immediate to_less_or_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_timestamp_tz_equal is - begin - --Act - execute immediate to_less_or_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_timestamp_ltz_equal is - begin - --Act - execute immediate to_less_or_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_date_less is - begin - --Act - execute immediate to_less_or_equal_block('date', 'sysdate-1', 'sysdate'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_number_less is - begin - --Act - execute immediate to_less_or_equal_block('number', '1.0', '1.01'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_interval_ym_less is - begin - --Act - execute immediate to_less_or_equal_block('interval year to month', '''2-1''', '''2-2'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_interval_ds_less is - begin - --Act - execute immediate to_less_or_equal_block('interval day to second', '''2 00:59:58''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_timestamp_less is - begin - --Act - execute immediate to_less_or_equal_block('timestamp', 'to_timestamp(''1997 12'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_timestamp_tz_less is - begin - --Act - execute immediate to_less_or_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_timestamp_ltz_less is - begin - --Act - execute immediate to_less_or_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure not_actual_date_greater is - begin - --Act - execute immediate not_to_less_or_equal_block('date', 'sysdate', 'sysdate-1'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure not_actual_number_greater is - begin - --Act - execute immediate not_to_less_or_equal_block('number', '2.0', '1.99'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure not_actual_interval_ym_greater is - begin - --Act - execute immediate not_to_less_or_equal_block('interval year to month', '''2-1''', '''2-0'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure not_actual_interval_ds_greater is - begin - --Act - execute immediate not_to_less_or_equal_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure not_actual_timestamp_greater is - begin - --Act - execute immediate not_to_less_or_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure not_actual_timestamp_tz_gretr is - begin - --Act - execute immediate not_to_less_or_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure not_actual_timestamp_ltz_gretr is - begin - --Act - execute immediate not_to_less_or_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - end; - - procedure actual_clob is - begin - --Act - ut3.ut.expect(to_clob('3')).to_( ut3.be_less_or_equal(3) ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - -end; -/ diff --git a/test/core/expectations/binary/test_be_less_or_equal.pks b/test/core/expectations/binary/test_be_less_or_equal.pks deleted file mode 100644 index a6ab01664..000000000 --- a/test/core/expectations/binary/test_be_less_or_equal.pks +++ /dev/null @@ -1,97 +0,0 @@ -create or replace package test_be_less_or_equal is - - --%suite((not)to_be_less_or_equal) - --%suitepath(utplsql.core.expectations.binary) - - --%aftereach - procedure cleanup_expectations; - - --%test(Gives failure when actual date is greater than expected) - procedure actual_date_greater; - - --%test(Gives failure when actual number is greater than expected) - procedure actual_number_greater; - - --%test(Gives failure when actual interval year to month is greater than expected) - procedure actual_interval_ym_greater; - - --%test(Gives failure when actual interval day to second is greater than expected) - procedure actual_interval_ds_greater; - - --%test(Gives failure when actual timestamp is greater than expected) - procedure actual_timestamp_greater; - - --%test(Gives failure when actual timestamp with time zone is greater than expected) - procedure actual_timestamp_tz_greater; - - --%test(Gives failure when actual timestamp with local time zone is greater than expected) - procedure actual_timestamp_ltz_greater; - - --%test(Gives success when actual date is equal expected) - procedure actual_date_equal; - - --%test(Gives success when actual number is equal expected) - procedure actual_number_equal; - - --%test(Gives success when actual interval year to month is equal expected) - procedure actual_interval_ym_equal; - - --%test(Gives success when actual interval day to second is equal expected) - procedure actual_interval_ds_equal; - - --%test(Gives success when actual timestamp is equal expected) - procedure actual_timestamp_equal; - - --%test(Gives success when actual timestamp with time zone is equal expected) - procedure actual_timestamp_tz_equal; - - --%test(Gives success when actual timestamp with local time zone is equal expected) - procedure actual_timestamp_ltz_equal; - - --%test(Gives success when actual date is less than expected) - procedure actual_date_less; - - --%test(Gives success when actual number is less than expected) - procedure actual_number_less; - - --%test(Gives success when actual interval year to month is less than expected) - procedure actual_interval_ym_less; - - --%test(Gives success when actual interval day to second is less than expected) - procedure actual_interval_ds_less; - - --%test(Gives success when actual timestamp is less than expected) - procedure actual_timestamp_less; - - --%test(Gives success when actual timestamp with time zone is less than expected) - procedure actual_timestamp_tz_less; - - --%test(Gives success when actual timestamp with local time zone is less than expected) - procedure actual_timestamp_ltz_less; - - --%test(Negated - Gives success when actual date is greater than expected) - procedure not_actual_date_greater; - - --%test(Negated - Gives success when actual number is greater than expected) - procedure not_actual_number_greater; - - --%test(Negated - Gives success when actual interval year to month is greater than expected) - procedure not_actual_interval_ym_greater; - - --%test(Negated - Gives success when actual interval day to second is greater than expected) - procedure not_actual_interval_ds_greater; - - --%test(Negated - Gives success when actual timestamp is greater than expected) - procedure not_actual_timestamp_greater; - - --%test(Negated - Gives success when actual timestamp with time zone is greater than expected) - procedure not_actual_timestamp_tz_gretr; - - --%test(Negated - Gives success when actual timestamp with local time zone is greater than expected) - procedure not_actual_timestamp_ltz_gretr; - - --%test(Gives failure when running against CLOB) - procedure actual_clob; - -end; -/ diff --git a/test/core/expectations/binary/test_equal.pkb b/test/core/expectations/binary/test_equal.pkb deleted file mode 100644 index dd7dd7a82..000000000 --- a/test/core/expectations/binary/test_equal.pkb +++ /dev/null @@ -1,264 +0,0 @@ -create or replace package body test_equal is - - procedure reset_nulls_equal is - begin - ut3.ut_expectation_processor.nulls_Are_equal(ut3.ut_expectation_processor.gc_default_nulls_are_equal); - end; - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - function to_equal_block( - a_matcher_name varchar2, - a_actual_type varchar2, - a_expected_type varchar2, - a_actual varchar2, - a_expected varchar2, - a_nulls_equal boolean := null - ) return varchar2 is - l_nulls_equal varchar2(10); - begin - l_nulls_equal := case when a_nulls_equal then 'true' when not a_nulls_equal then 'false' else 'null' end; - return ' - declare - l_actual '||a_actual_type||' := '||a_actual||'; - l_expected '||a_expected_type||' := '||a_expected||'; - begin - ut3.ut.expect( l_actual ).'||a_matcher_name||'(l_expected, a_nulls_are_equal=>'||l_nulls_equal||'); - end;'; - end; - - procedure test_to_equal_success( - a_actual_type varchar2, - a_expected_type varchar2, - a_actual varchar2, - a_expected varchar2, - a_nulls_equal boolean := null - ) is - begin - execute immediate - to_equal_block( 'to_equal', a_actual_type, a_expected_type, a_actual, a_expected, a_nulls_equal ); - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty(); - cleanup_expectations; - end; - - procedure test_to_equal_success( - a_actual_type varchar2, - a_actual varchar2, - a_expected varchar2, - a_nulls_equal boolean := null - ) is - begin - test_to_equal_success(a_actual_type, a_actual_type, a_actual, a_expected, a_nulls_equal); - end; - - - procedure test_to_equal_fail( - a_actual_type varchar2, - a_expected_type varchar2, - a_actual varchar2, - a_expected varchar2, - a_nulls_equal boolean := null - ) is - begin - execute immediate - to_equal_block( 'to_equal', a_actual_type, a_expected_type, a_actual, a_expected, a_nulls_equal ); - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty(); - cleanup_expectations; - end; - - procedure test_not_to_equal_fail( - a_actual_type varchar2, - a_expected_type varchar2, - a_actual varchar2, - a_expected varchar2, - a_nulls_equal boolean := null - ) is - begin - execute immediate - to_equal_block( 'not_to_equal', a_actual_type, a_expected_type, a_actual, a_expected, a_nulls_equal ); - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty(); - cleanup_expectations; - end; - - procedure test_to_equal_fail( - a_actual_type varchar2, - a_actual varchar2, - a_expected varchar2, - a_nulls_equal boolean := null - ) is - begin - test_to_equal_fail(a_actual_type, a_actual_type, a_actual, a_expected, a_nulls_equal); - end; - - procedure equal_fail_on_type_diff is - begin - test_to_equal_fail('boolean', 'integer', 'true', '1'); - test_to_equal_fail('integer', 'boolean', '1', 'true'); - test_to_equal_fail('blob', 'clob', 'to_blob(''ABC'')', '''ABC'''); - test_to_equal_fail('clob', 'blob', '''ABC''', 'to_blob(''ABC'')'); - test_to_equal_fail('clob', 'anydata', '''ABC''', 'null'); - test_to_equal_fail('anydata', 'sys_refcursor', 'null', 'null'); - test_to_equal_fail('sys_refcursor', 'anydata', 'null', 'null'); - test_to_equal_fail('clob', 'varchar2(4000)', '''Abc''', '''Abc'''); - test_to_equal_fail('date', 'timestamp', 'sysdate', 'sysdate'); - test_to_equal_fail('date', 'timestamp with local time zone', 'sysdate', 'sysdate'); - test_to_equal_fail('timestamp', 'date', 'sysdate', 'sysdate'); - test_to_equal_fail('timestamp with local time zone', 'timestamp', 'sysdate', 'sysdate'); - test_to_equal_fail('timestamp with local time zone', 'timestamp with time zone', 'sysdate', 'sysdate'); - test_to_equal_fail('number', 'varchar2(4000)', '1', '''1'''); - test_to_equal_fail('varchar2(4000)', 'number', '''1''', '1'); - test_to_equal_fail('varchar2(4000)', 'boolean', '''true''', 'true'); - test_to_equal_fail('interval day to second', 'interval year to month', '''2 01:00:00''', '''1-1'''); - test_to_equal_fail('interval year to month', 'interval day to second', '''1-1''', '''2 01:00:00'''); - end; - - procedure not_equal_fail_on_type_diff is - begin - test_not_to_equal_fail('boolean', 'integer', 'true', '1'); - test_not_to_equal_fail('integer', 'boolean', '1', 'true'); - test_not_to_equal_fail('blob', 'clob', 'to_blob(''ABC'')', '''ABC'''); - test_not_to_equal_fail('clob', 'blob', '''ABC''', 'to_blob(''ABC'')'); - test_not_to_equal_fail('clob', 'anydata', '''ABC''', 'null'); - test_not_to_equal_fail('anydata', 'sys_refcursor', 'null', 'null'); - test_not_to_equal_fail('sys_refcursor', 'anydata', 'null', 'null'); - test_not_to_equal_fail('clob', 'varchar2(4000)', '''Abc''', '''Abc'''); - test_not_to_equal_fail('date', 'timestamp', 'sysdate', 'sysdate'); - test_not_to_equal_fail('date', 'timestamp with local time zone', 'sysdate', 'sysdate'); - test_not_to_equal_fail('timestamp', 'date', 'sysdate', 'sysdate'); - test_not_to_equal_fail('timestamp with local time zone', 'timestamp', 'sysdate', 'sysdate'); - test_not_to_equal_fail('timestamp with local time zone', 'timestamp with time zone', 'sysdate', 'sysdate'); - test_not_to_equal_fail('number', 'varchar2(4000)', '1', '''1'''); - test_not_to_equal_fail('varchar2(4000)', 'number', '''1''', '1'); - test_not_to_equal_fail('varchar2(4000)', 'boolean', '''true''', 'true'); - test_not_to_equal_fail('interval day to second', 'interval year to month', '''2 01:00:00''', '''1-1'''); - test_not_to_equal_fail('interval year to month', 'interval day to second', '''1-1''', '''2 01:00:00'''); - end; - - procedure failure_on_data_diff is - begin - test_to_equal_fail('blob', 'to_blob(''abc'')', 'to_blob(''abd'')'); - test_to_equal_fail('boolean', 'false', 'true'); - test_to_equal_fail('boolean', 'true', 'false'); - test_to_equal_fail('clob', '''Abc''', '''abc'''); - test_to_equal_fail('date', 'sysdate', 'sysdate-1'); - test_to_equal_fail('number', '0.1', '0.3'); - test_to_equal_fail('timestamp', 'systimestamp', 'systimestamp'); - test_to_equal_fail('timestamp with local time zone', 'systimestamp', 'systimestamp'); - test_to_equal_fail('timestamp with time zone', 'systimestamp', 'systimestamp'); - test_to_equal_fail('varchar2(4000)', '''Abc''', '''abc'''); - test_to_equal_fail('interval day to second', '''2 01:00:00''', '''2 01:00:01'''); - test_to_equal_fail('interval year to month', '''1-1''', '''1-2'''); - end; - - procedure failure_on_actual_null is - begin - test_to_equal_fail('blob', 'NULL', 'to_blob(''abc'')'); - test_to_equal_fail('boolean', 'NULL', 'true'); - test_to_equal_fail('clob', 'NULL', '''abc'''); - test_to_equal_fail('date', 'NULL', 'sysdate'); - test_to_equal_fail('number', 'NULL', '1'); - test_to_equal_fail('timestamp', 'NULL', 'systimestamp'); - test_to_equal_fail('timestamp with local time zone', 'NULL', 'systimestamp'); - test_to_equal_fail('timestamp with time zone', 'NULL', 'systimestamp'); - test_to_equal_fail('varchar2(4000)', 'NULL', '''abc'''); - test_to_equal_fail('interval day to second', 'NULL', '''2 01:00:00'''); - test_to_equal_fail('interval year to month', 'NULL', '''1-1'''); - end; - - procedure failure_on_expected_null is - begin - test_to_equal_fail('blob', 'to_blob(''abc'')', 'NULL'); - test_to_equal_fail('boolean', 'true', 'NULL'); - test_to_equal_fail('clob', '''abc''', 'NULL'); - test_to_equal_fail('date', 'sysdate', 'NULL'); - test_to_equal_fail('number', '1234', 'NULL'); - test_to_equal_fail('timestamp', 'systimestamp', 'NULL'); - test_to_equal_fail('timestamp with local time zone', 'systimestamp', 'NULL'); - test_to_equal_fail('timestamp with time zone', 'systimestamp', 'NULL'); - test_to_equal_fail('varchar2(4000)', '''abc''', 'NULL'); - test_to_equal_fail('interval day to second', '''2 01:00:00''', 'NULL'); - test_to_equal_fail('interval year to month', '''1-1''', 'NULL'); - end; - - procedure failure_on_both_null_with_parm is - begin - test_to_equal_fail('blob', 'NULL', 'NULL', false); - test_to_equal_fail('boolean', 'NULL', 'NULL', false); - test_to_equal_fail('clob', 'NULL', 'NULL', false); - test_to_equal_fail('date', 'NULL', 'NULL', false); - test_to_equal_fail('number', 'NULL', 'NULL', false); - test_to_equal_fail('timestamp', 'NULL', 'NULL', false); - test_to_equal_fail('timestamp with local time zone', 'NULL', 'NULL', false); - test_to_equal_fail('timestamp with time zone', 'NULL', 'NULL', false); - test_to_equal_fail('varchar2(4000)', 'NULL', 'NULL', false); - test_to_equal_fail('interval day to second', 'NULL', 'NULL', false); - test_to_equal_fail('interval year to month', 'NULL', 'NULL', false); - end; - - procedure failure_on_both_null_with_conf is - begin - ut3.ut_expectation_processor.nulls_Are_equal(false); - test_to_equal_fail('blob', 'NULL', 'NULL'); - test_to_equal_fail('boolean', 'NULL', 'NULL'); - test_to_equal_fail('clob', 'NULL', 'NULL'); - test_to_equal_fail('date', 'NULL', 'NULL'); - test_to_equal_fail('number', 'NULL', 'NULL'); - test_to_equal_fail('timestamp', 'NULL', 'NULL'); - test_to_equal_fail('timestamp with local time zone', 'NULL', 'NULL'); - test_to_equal_fail('timestamp with time zone', 'NULL', 'NULL'); - test_to_equal_fail('varchar2(4000)', 'NULL', 'NULL'); - test_to_equal_fail('interval day to second', 'NULL', 'NULL'); - test_to_equal_fail('interval year to month', 'NULL', 'NULL'); - end; - - procedure success_on_equal_data is - begin - test_to_equal_success('blob', 'to_blob(''Abc'')', 'to_blob(''abc'')'); - test_to_equal_success('boolean', 'true', 'true'); - test_to_equal_success('clob', '''Abc''', '''Abc'''); - test_to_equal_success('date', 'sysdate', 'sysdate'); - test_to_equal_success('number', '12345', '12345'); - test_to_equal_success('timestamp(9)', 'to_Timestamp(''2016 123456789'',''yyyy ff'')', 'to_Timestamp(''2016 123456789'',''yyyy ff'')'); - test_to_equal_success('timestamp(9) with local time zone', 'to_Timestamp(''2016 123456789'',''yyyy ff'')', 'to_Timestamp(''2016 123456789'',''yyyy ff'')'); - test_to_equal_success('timestamp(9) with time zone', 'to_Timestamp(''2016 123456789'',''yyyy ff'')', 'to_Timestamp(''2016 123456789'',''yyyy ff'')'); - test_to_equal_success('varchar2(4000)', '''Abc''', '''Abc'''); - test_to_equal_success('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); - test_to_equal_success('interval year to month', '''1-1''', '''1-1'''); - end; - - procedure success_on_both_null is - begin - test_to_equal_success('blob', 'NULL', 'NULL'); - test_to_equal_success('boolean', 'NULL', 'NULL'); - test_to_equal_success('clob', 'NULL', 'NULL'); - test_to_equal_success('date', 'NULL', 'NULL'); - test_to_equal_success('number', 'NULL', 'NULL'); - test_to_equal_success('timestamp', 'NULL', 'NULL'); - test_to_equal_success('timestamp with local time zone', 'NULL', 'NULL'); - test_to_equal_success('timestamp with time zone', 'NULL', 'NULL'); - test_to_equal_success('varchar2(4000)', 'NULL', 'NULL'); - test_to_equal_success('interval day to second', 'NULL', 'NULL'); - test_to_equal_success('interval year to month', 'NULL', 'NULL'); - end; - - procedure success_on_both_null_with_parm is - begin - ut3.ut_expectation_processor.nulls_Are_equal(false); - test_to_equal_success('blob', 'NULL', 'NULL', true); - test_to_equal_success('boolean', 'NULL', 'NULL', true); - test_to_equal_success('clob', 'NULL', 'NULL', true); - test_to_equal_success('date', 'NULL', 'NULL', true); - test_to_equal_success('number', 'NULL', 'NULL', true); - test_to_equal_success('timestamp', 'NULL', 'NULL', true); - test_to_equal_success('timestamp with local time zone', 'NULL', 'NULL', true); - test_to_equal_success('timestamp with time zone', 'NULL', 'NULL', true); - test_to_equal_success('varchar2(4000)', 'NULL', 'NULL', true); - test_to_equal_success('interval day to second', 'NULL', 'NULL', true); - test_to_equal_success('interval year to month', 'NULL', 'NULL', true); - end; - -end; -/ diff --git a/test/core/expectations/binary/test_equal.pks b/test/core/expectations/binary/test_equal.pks deleted file mode 100644 index c0280c288..000000000 --- a/test/core/expectations/binary/test_equal.pks +++ /dev/null @@ -1,38 +0,0 @@ -create or replace package test_equal is - - --%suite((not)to_be_equal) - --%suitepath(utplsql.core.expectations.binary) - - procedure reset_nulls_equal; - - --%aftereach - procedure cleanup_expectations; - - --%test(Gives failure for different data types) - procedure equal_fail_on_type_diff; - --%test(Negated - gives failure for different data types) - procedure not_equal_fail_on_type_diff; - --%test(Gives failure for different data values) - procedure failure_on_data_diff; - --%test(Gives failure when actual is null) - procedure failure_on_actual_null; - --%test(Gives failure when expected is null) - procedure failure_on_expected_null; - --%test(Gives failure when both values are null and argument nulls_are_equal is false) - procedure failure_on_both_null_with_parm; - - --%test(Gives failure when both values are null and configuration nulls_are_equal is false) - --%aftertest(reset_nulls_equal) - procedure failure_on_both_null_with_conf; - - --%test(Gives success for equal values) - procedure success_on_equal_data; - --%test(Gives success when both values are null) - procedure success_on_both_null; - - --%test(Gives success when both values are null and argument nulls_are_equal is true) - --%aftertest(reset_nulls_equal) - procedure success_on_both_null_with_parm; - -end; -/ diff --git a/test/core/expectations/binary/test_expect_to_be_less_than.pkb b/test/core/expectations/binary/test_expect_to_be_less_than.pkb deleted file mode 100644 index 8f1278db4..000000000 --- a/test/core/expectations/binary/test_expect_to_be_less_than.pkb +++ /dev/null @@ -1,263 +0,0 @@ -create or replace package body test_expect_to_be_less_than is - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - function to_be_less_than_block( - a_data_type varchar2, - a_actual varchar2, - a_expected varchar2 - ) return varchar2 is - begin - return expectations.binary_expectation_block( - 'to_be_less_than', a_data_type, a_actual, a_data_type, a_expected - ); - end; - - function not_to_be_less_than_block( - a_data_type varchar2, - a_actual varchar2, - a_expected varchar2 - ) return varchar2 is - begin - return expectations.binary_expectation_block( - 'not_to_be_less_than', a_data_type, a_actual, a_data_type, a_expected - ); - end; - - procedure actual_date_greater is - begin - --Act - execute immediate to_be_less_than_block('date', 'sysdate', 'sysdate-1'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_number_greater is - begin - --Act - execute immediate to_be_less_than_block('number', '2.0', '1.99'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ym_greater is - begin - --Act - execute immediate to_be_less_than_block('interval year to month', '''2-1''', '''2-0'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ds_greater is - begin - --Act - execute immediate to_be_less_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_greater is - begin - --Act - execute immediate to_be_less_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_tz_greater is - begin - --Act - execute immediate to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_ltz_greater is - begin - --Act - execute immediate to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_date_equal is - begin - --Act - execute immediate to_be_less_than_block('date', 'sysdate', 'sysdate'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_number_equal is - begin - --Act - execute immediate to_be_less_than_block('number', '2.0', '2.00'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ym_equal is - begin - --Act - execute immediate to_be_less_than_block('interval year to month', '''2-1''', '''2-1'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_interval_ds_equal is - begin - --Act - execute immediate to_be_less_than_block('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_equal is - begin - --Act - execute immediate to_be_less_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_tz_equal is - begin - --Act - execute immediate to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_timestamp_ltz_equal is - begin - --Act - execute immediate to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure actual_date_less is - begin - --Act - execute immediate to_be_less_than_block('date', 'sysdate-1', 'sysdate'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_number_less is - begin - --Act - execute immediate to_be_less_than_block('number', '1.0', '1.01'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_interval_ym_less is - begin - --Act - execute immediate to_be_less_than_block('interval year to month', '''2-1''', '''2-2'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_interval_ds_less is - begin - --Act - execute immediate to_be_less_than_block('interval day to second', '''2 00:59:58''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_less is - begin - --Act - execute immediate to_be_less_than_block('timestamp', 'to_timestamp(''1997 12'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_tz_less is - begin - --Act - execute immediate to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_timestamp_ltz_less is - begin - --Act - execute immediate to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure not_actual_date_greater is - begin - --Act - execute immediate not_to_be_less_than_block('date', 'sysdate', 'sysdate-1'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure not_actual_number_greater is - begin - --Act - execute immediate not_to_be_less_than_block('number', '2.0', '1.99'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure not_actual_interval_ym_greater is - begin - --Act - execute immediate not_to_be_less_than_block('interval year to month', '''2-1''', '''2-0'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure not_actual_interval_ds_greater is - begin - --Act - execute immediate not_to_be_less_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure not_actual_timestamp_greater is - begin - --Act - execute immediate not_to_be_less_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure not_actual_timestamp_tz_gretr is - begin - --Act - execute immediate not_to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure not_actual_timestamp_ltz_gretr is - begin - --Act - execute immediate not_to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure actual_clob is - begin - --Act - ut3.ut.expect(to_clob('3')).to_( ut3.be_less_than(4) ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - -end; -/ diff --git a/test/core/expectations/binary/test_expect_to_be_less_than.pks b/test/core/expectations/binary/test_expect_to_be_less_than.pks deleted file mode 100644 index 67e6b8776..000000000 --- a/test/core/expectations/binary/test_expect_to_be_less_than.pks +++ /dev/null @@ -1,97 +0,0 @@ -create or replace package test_expect_to_be_less_than is - - --%suite((not)to_be_less_than) - --%suitepath(utplsql.core.expectations.binary) - - --%aftereach - procedure cleanup_expectations; - - --%test(Gives failure when actual date is greater than expected) - procedure actual_date_greater; - - --%test(Gives failure when actual number is greater than expected) - procedure actual_number_greater; - - --%test(Gives failure when actual interval year to month is greater than expected) - procedure actual_interval_ym_greater; - - --%test(Gives failure when actual interval day to second is greater than expected) - procedure actual_interval_ds_greater; - - --%test(Gives failure when actual timestamp is greater than expected) - procedure actual_timestamp_greater; - - --%test(Gives failure when actual timestamp with time zone is greater than expected) - procedure actual_timestamp_tz_greater; - - --%test(Gives failure when actual timestamp with local time zone is greater than expected) - procedure actual_timestamp_ltz_greater; - - --%test(Gives failure when actual date is equal expected) - procedure actual_date_equal; - - --%test(Gives failure when actual number is equal expected) - procedure actual_number_equal; - - --%test(Gives failure when actual interval year to month is equal expected) - procedure actual_interval_ym_equal; - - --%test(Gives failure when actual interval day to second is equal expected) - procedure actual_interval_ds_equal; - - --%test(Gives failure when actual timestamp is equal expected) - procedure actual_timestamp_equal; - - --%test(Gives failure when actual timestamp with time zone is equal expected) - procedure actual_timestamp_tz_equal; - - --%test(Gives failure when actual timestamp with local time zone is equal expected) - procedure actual_timestamp_ltz_equal; - - --%test(Gives success when actual date is less than expected) - procedure actual_date_less; - - --%test(Gives success when actual number is less than expected) - procedure actual_number_less; - - --%test(Gives success when actual interval year to month is less than expected) - procedure actual_interval_ym_less; - - --%test(Gives success when actual interval day to second is less than expected) - procedure actual_interval_ds_less; - - --%test(Gives success when actual timestamp is less than expected) - procedure actual_timestamp_less; - - --%test(Gives success when actual timestamp with time zone is less than expected) - procedure actual_timestamp_tz_less; - - --%test(Gives success when actual timestamp with local time zone is less than expected) - procedure actual_timestamp_ltz_less; - - --%test(Negated - Gives success when actual date is greater than expected) - procedure not_actual_date_greater; - - --%test(Negated - Gives success when actual number is greater than expected) - procedure not_actual_number_greater; - - --%test(Negated - Gives success when actual interval year to month is greater than expected) - procedure not_actual_interval_ym_greater; - - --%test(Negated - Gives success when actual interval day to second is greater than expected) - procedure not_actual_interval_ds_greater; - - --%test(Negated - Gives success when actual timestamp is greater than expected) - procedure not_actual_timestamp_greater; - - --%test(Negated - Gives success when actual timestamp with time zone is greater than expected) - procedure not_actual_timestamp_tz_gretr; - - --%test(Negated - Gives success when actual timestamp with local time zone is greater than expected) - procedure not_actual_timestamp_ltz_gretr; - - --%test(Gives failure when running against CLOB) - procedure actual_clob; - -end; -/ diff --git a/test/core/expectations/test_expectation_anydata.pkb b/test/core/expectations/test_expectation_anydata.pkb deleted file mode 100644 index 0b3a93261..000000000 --- a/test/core/expectations/test_expectation_anydata.pkb +++ /dev/null @@ -1,974 +0,0 @@ -create or replace package body test_expectation_anydata is - - g_test_expected anydata; - g_test_actual anydata; - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - procedure cleanup is - begin - g_test_expected := null; - g_test_actual := null; - cleanup_expectations(); - end; - - procedure fail_on_different_type_null is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertObject( cast(null as test_dummy_object) ); - g_test_actual := anydata.convertObject( cast(null as other_dummy_object) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_expected_message := q'[%Actual (ut3_tester.other_dummy_object) cannot be compared to Expected (ut3_tester.test_dummy_object) using matcher 'equal'.]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure fail_on_different_type is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - g_test_actual := anydata.convertObject( other_dummy_object(1, 'A', '0') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_expected_message := q'[%Actual (ut3_tester.other_dummy_object) cannot be compared to Expected (ut3_tester.test_dummy_object) using matcher 'equal'.]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure fail_on_different_object_data is - begin - --Arrange - g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - g_test_actual := anydata.convertObject( test_dummy_object(1, null, '0') ); - --Act - ut3.ut.expect( g_test_actual ).not_to_equal( g_test_expected ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_on_one_object_null is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - g_test_actual := anydata.convertObject( cast(null as test_dummy_object) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_expected_message := q'[%Actual: ut3_tester.test_dummy_object was expected to equal: ut3_tester.test_dummy_object -%Diff: -%Rows: [ 1 differences ] -%Row No. 1 - Missing: 1A0]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - - end; - - procedure fail_on_collection_vs_object is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - g_test_actual := anydata.convertCollection( test_dummy_object_list(test_dummy_object(1, 'A', '0')) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_expected_message := q'[%Actual (ut3_tester.test_dummy_object_list) cannot be compared to Expected (ut3_tester.test_dummy_object) using matcher 'equal'.]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure fail_on_null_vs_empty_coll is - l_null_list test_dummy_object_list; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertCollection( test_dummy_object_list() ); - g_test_actual := anydata.convertCollection( l_null_list ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_expected_message := q'[%Actual: ut3_tester.test_dummy_object_list [ count = ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 0 ] -%Diff: -%Rows: [ all different ] -%All rows are different as the columns position is not matching.]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - - end; - - procedure fail_on_one_collection_null is - l_null_list test_dummy_object_list; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertCollection( test_dummy_object_list(test_dummy_object(1, 'A', '0')) ); - g_test_actual := anydata.convertCollection( l_null_list ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_expected_message := q'[%Actual: ut3_tester.test_dummy_object_list [ count = ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 1 ] -%Diff: -%Rows: [ 1 differences ] -%Row No. 1 - Missing: 1A0]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure fail_on_one_collection_empty is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertCollection( test_dummy_object_list(test_dummy_object(1, 'A', '0')) ); - g_test_actual := anydata.convertCollection( test_dummy_object_list() ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_expected_message := q'[%Actual: ut3_tester.test_dummy_object_list [ count = 0 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 1 ] -%Diff: -%Rows: [ 1 differences ] -%Row No. 1 - Missing: 1A0]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - - end; - - procedure fail_on_different_coll_data is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - l_obj test_dummy_object := test_dummy_object(1, 'A', '0'); - begin - --Arrange - g_test_expected := anydata.convertCollection( test_dummy_object_list(l_obj) ); - g_test_actual := anydata.convertCollection( test_dummy_object_list(l_obj, l_obj) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_expected_message := q'[%Actual: ut3_tester.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 1 ] -%Diff: -%Rows: [ 1 differences ] -%Row No. 2 - Extra: 1A0]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - --%test(Gives success when both anydata are NULL) - procedure success_on_both_anydata_null is - --Arrange - l_null_anydata anydata; - begin - --Act - ut3.ut.expect( l_null_anydata ).to_equal( l_null_anydata ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure success_on_both_object_null is - --Arrange - l_null_object test_dummy_object; - l_anydata anydata := anydata.convertObject(l_null_object); - begin - --Act - ut3.ut.expect( l_anydata ).to_equal( l_anydata ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure success_on_both_coll_null is - --Arrange - l_null_collection test_dummy_object_list; - l_anydata anydata := anydata.convertCollection(l_null_collection); - begin - --Act - ut3.ut.expect( l_anydata ).to_equal( l_anydata ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure success_on_same_coll_data is - begin - --Arrange - g_test_expected := anydata.convertCollection( test_dummy_object_list(test_dummy_object(1, 'A', '0')) ); - g_test_actual := anydata.convertCollection( test_dummy_object_list(test_dummy_object(1, 'A', '0')) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_on_coll_different_order is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - l_first_obj test_dummy_object := test_dummy_object(1, 'A', '0'); - l_second_obj test_dummy_object := test_dummy_object(2, 'b', '1'); - begin - --Arrange - g_test_expected := anydata.convertCollection( test_dummy_object_list(l_first_obj, l_second_obj) ); - g_test_actual := anydata.convertCollection( test_dummy_object_list(l_second_obj, l_first_obj) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure success_on_same_object_data is - begin - --Arrange - g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - g_test_actual := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure exclude_attributes_as_list is - l_list ut3.ut_varchar2_list; - begin - --Arrange - l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','/TEST_DUMMY_OBJECT/ID'); - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>3, "name"=>'A',"Value"=>'1') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_list ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure exclude_attributes_as_csv is - l_list varchar2(100); - begin - --Arrange - l_list := 'TEST_DUMMY_OBJECT/Value,TEST_DUMMY_OBJECT/ID'; - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>2, "name"=>'A',"Value"=>'1') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_list ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure exclude_attributes_xpath is - l_xpath varchar2(100); - begin - --Arrange - l_xpath := '//TEST_DUMMY_OBJECT/Value|//TEST_DUMMY_OBJECT/ID'; - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>2, "name"=>'A',"Value"=>'1') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_xpath ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure exclude_ignores_invalid_attrib is - l_exclude varchar2(100); - begin - --Arrange - l_exclude := 'BadAttributeName'; - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_exclude ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure include_attributes_as_list is - l_list ut3.ut_varchar2_list; - begin - --Arrange - l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','TEST_DUMMY_OBJECT/ID'); - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>1, "name"=>'b',"Value"=>'0') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_list ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure include_attributes_as_csv is - l_xpath varchar2(100); - begin - --Arrange - l_xpath := 'TEST_DUMMY_OBJECT/key,TEST_DUMMY_OBJECT/ID'; - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_xpath ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure include_attributes_xpath is - l_xpath varchar2(100); - begin - --Arrange - l_xpath := '//TEST_DUMMY_OBJECT/key|//TEST_DUMMY_OBJECT/ID'; - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_xpath ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure include_ignores_invalid_attrib is - l_include varchar2(100); - begin - --Arrange - l_include := ' BadAttributeName, TEST_DUMMY_OBJECT/ID '; - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'B',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_include ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure include_exclude_attributes_csv is - l_exclude varchar2(100); - l_include varchar2(100); - begin - --Arrange - l_include := 'TEST_DUMMY_OBJECT/key,TEST_DUMMY_OBJECT/ID,TEST_DUMMY_OBJECT/Value'; - l_exclude := '//TEST_DUMMY_OBJECT/key|//TEST_DUMMY_OBJECT/Value'; - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'B',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).exclude( l_exclude ).include( l_include ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure include_exclude_attrib_list is - l_exclude ut3.ut_varchar2_list; - l_include ut3.ut_varchar2_list; - l_expected varchar2(32767); - l_actual varchar2(32767); - begin - --Arrange - l_include := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/key','TEST_DUMMY_OBJECT/ID','TEST_DUMMY_OBJECT/Value'); - l_exclude := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/key','TEST_DUMMY_OBJECT/Value'); - g_test_expected := anydata.convertObject( test_dummy_object(id=>1, "name"=>'B',"Value"=>'0') ); - g_test_actual := anydata.convertObject( test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).exclude( l_exclude ).include( l_include ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure reports_diff_attribute is - l_expected varchar2(32767); - l_actual varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - g_test_actual := anydata.convertObject( test_dummy_object(1, NULL, '0') ); - l_expected := q'[Actual: ut3_tester.test_dummy_object was expected to equal: ut3_tester.test_dummy_object -Diff: -Rows: [ 1 differences ] - Row No. 1 - Actual: - Row No. 1 - Expected: A]'; - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_actual := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - ut.expect(l_actual).to_be_like(l_expected); - end; - - - procedure reports_diff_structure is - l_obj test_dummy_object := test_dummy_object(1, 'A', '0'); - l_expected varchar2(32767); - l_actual varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertCollection( test_dummy_object_list(l_obj) ); - g_test_actual := anydata.convertCollection( test_dummy_object_list(l_obj, l_obj) ); - l_expected := q'[Actual: ut3_tester.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 1 ] -Diff: -Rows: [ 1 differences ] - Row No. 2 - Extra: 1A0]'; - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - --Assert - l_actual := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - ut.expect(l_actual).to_be_like(l_expected); - end; - - function get_anydata return anydata is - begin - return anydata.convertObject( test_dummy_object(1, 'B', '0') ); - end; - - procedure deprec_to_equal_excl_varch is - begin - --Act - ut3.ut.expect(get_anydata()).to_equal(get_anydata(), a_exclude => 'A_COLUMN,Some_Col'); - --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); - end; - - procedure deprec_to_equal_excl_list is - begin - --Act - ut3.ut.expect(get_anydata()).to_equal(get_anydata(), a_exclude => ut3.ut_varchar2_list('A_COLUMN','Some_Col')); - --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); - end; - - procedure deprec_not_to_equal_excl_varch is - begin - --Act - ut3.ut.expect(get_anydata()).not_to_equal(get_anydata(), a_exclude => 'A_COLUMN,Some_Col'); - --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); - end; - - procedure deprec_not_to_equal_excl_list is - begin - --Act - ut3.ut.expect(get_anydata()).not_to_equal(get_anydata(), a_exclude => ut3.ut_varchar2_list('A_COLUMN','Some_Col')); - --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); - end; - - procedure deprec_equal_excl_varch is - begin - --Act - ut3.ut.expect(get_anydata()).to_(ut3.equal(get_anydata(), a_exclude => 'A_COLUMN,Some_Col')); - --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); - end; - - procedure deprec_equal_excl_list is - begin - --Act - ut3.ut.expect(get_anydata()).to_(ut3.equal(get_anydata(), a_exclude => ut3.ut_varchar2_list('A_COLUMN','Some_Col'))); - --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); - end; - - procedure data_diff_on_atr_data_mismatch is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_actual - from dual connect by level <=2; - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=2 - order by rownum desc; - --Act - ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - l_expected_message := q'[Actual: ut3_tester.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 2 ] -Diff: -Rows: [ 2 differences ] - Row No. 1 - Actual: 1Something 11 - Row No. 1 - Expected: 2Something 22 - Row No. 2 - Actual: 2Something 22 - Row No. 2 - Expected: 1Something 11]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure data_diff_on_20_rows_only is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - select test_dummy_object( rn, 'Something '||rn, rn1) - bulk collect into l_actual - from (select rownum * case when mod(rownum,2) = 0 then -1 else 1 end rn, - rownum * case when mod(rownum,4) = 0 then -1 else 1 end rn1 - from dual connect by level <=100); - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=110; - --Act - ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - - l_expected_message := q'[Actual: ut3_tester.test_dummy_object_list [ count = 100 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 110 ] -Diff: -Rows: [ 60 differences, showing first 20 ] - Row No. 2 - Actual: -2Something -2 - Row No. 2 - Expected: 2Something 2 - Row No. 4 - Actual: -4Something -4-4 - Row No. 4 - Expected: 4Something 44 - % - Row No. 38 - Actual: -38Something -38 - Row No. 38 - Expected: 38Something 38 - Row No. 40 - Actual: -40Something -40-40 - Row No. 40 - Expected: 40Something 4040]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure collection_include_list is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - l_list ut3.ut_varchar2_list; - begin - l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','TEST_DUMMY_OBJECT/ID'); - --Arrange - select test_dummy_object( rownum, 'SomethingsDifferent '||rownum, rownum) - bulk collect into l_actual - from dual connect by level <=2; - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=2; - --Act - ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).include( l_list ); - - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure collection_exclude_list is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - l_list ut3.ut_varchar2_list; - begin - l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','TEST_DUMMY_OBJECT/ID'); - --Arrange - select test_dummy_object( rownum*2, 'Something '||rownum, rownum*2) - bulk collect into l_actual - from dual connect by level <=2; - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=2; - --Act - ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).exclude( l_list ); - - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure collection_include_list_fail is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - l_list ut3.ut_varchar2_list; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/name'); - --Arrange - select test_dummy_object( rownum, 'SomethingsDifferent '||rownum, rownum) - bulk collect into l_actual - from dual connect by level <=2; - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=2; - --Act - ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).include( l_list ); - - l_expected_message := q'[%Actual: ut3_tester.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 2 ] -%Diff: -%Rows: [ 2 differences ] -%All rows are different as the columns are not matching.]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure array_same_data is - begin - --Arrange - g_test_expected := anydata.convertCollection( t_tab_varchar('A') ); - g_test_actual := anydata.convertCollection( t_tab_varchar('A') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure array_diff_data is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertCollection( t_tab_varchar('A') ); - g_test_actual := anydata.convertCollection( t_tab_varchar('B') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - l_expected_message := q'[%Actual: ut3_tester.t_tab_varchar [ count = 1 ] was expected to equal: ut3_tester.t_tab_varchar [ count = 1 ] -%Diff: -%Rows: [ 1 differences ] -%Row No. 1 - Actual: B -%Row No. 1 - Expected: A]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure array_is_null is - l_is_null t_tab_varchar ; - begin - ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_be_null; - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure array_null_equal_array_null is - l_is_null t_tab_varchar ; - l_is_null_bis t_tab_varchar ; - begin - ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_equal(anydata.convertCollection( l_is_null_bis )); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure array_null_equal_array_notnull is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - l_is_null t_tab_varchar ; - begin - --Arrange - g_test_expected := anydata.convertCollection( l_is_null ); - g_test_actual := anydata.convertCollection( t_tab_varchar('A') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - l_expected_message := q'[%Actual: ut3_tester.t_tab_varchar [ count = 1 ] was expected to equal: ut3_tester.t_tab_varchar [ count = ] -%Diff: -%Rows: [ 1 differences ] -%Row No. 1 - Extra: A]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure empty_array_have_zero_elem is - begin - ut3.ut.expect( anydata.convertCollection(t_tab_varchar())).to_have_count(0); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure array_empty_equal_array_empty is - begin - --Arrange - g_test_expected := anydata.convertCollection(t_tab_varchar()); - g_test_actual := anydata.convertCollection(t_tab_varchar()); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure arr_empty_equal_arr_notempty is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - l_is_null t_tab_varchar ; - begin - --Arrange - g_test_expected := anydata.convertCollection( t_tab_varchar() ); - g_test_actual := anydata.convertCollection( t_tab_varchar('A') ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - l_expected_message := q'[%Actual: ut3_tester.t_tab_varchar [ count = 1 ] was expected to equal: ut3_tester.t_tab_varchar [ count = 0 ] -%Diff: -%Rows: [ 1 differences ] -%Row No. 1 - Extra: A]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure collection_is_null is - l_null_list test_dummy_object_list; - begin - --Arrange - g_test_actual := anydata.convertCollection( l_null_list ); - --Act - ut3.ut.expect( g_test_actual ).to_be_null; - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure collection_is_empty is - begin - --Arrange - g_test_actual := anydata.convertCollection( test_dummy_object_list() ); - --Act - ut3.ut.expect( g_test_actual ).to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - - end; - - procedure varray_same_data is - begin - --Arrange - g_test_expected := anydata.convertCollection( t_varray(1) ); - g_test_actual := anydata.convertCollection( t_varray(1) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure varray_diff_data is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - g_test_expected := anydata.convertCollection( t_varray(1) ); - g_test_actual := anydata.convertCollection( t_varray(2) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - l_expected_message := q'[%Actual: ut3_tester.t_varray [ count = 1 ] was expected to equal: ut3_tester.t_varray [ count = 1 ] -%Diff: -%Rows: [ 1 differences ] -%Row No. 1 - Actual: 2 -%Row No. 1 - Expected: 1]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure varray_is_null is - l_is_null t_varray ; - begin - ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_be_null; - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure varray_null_equal_varray_null is - l_is_null t_varray ; - l_is_null_bis t_varray ; - begin - ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_equal(anydata.convertCollection( l_is_null_bis )); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure varr_null_equal_varr_notnull is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - l_is_null t_varray ; - begin - --Arrange - g_test_expected := anydata.convertCollection( l_is_null ); - g_test_actual := anydata.convertCollection( t_varray(1) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - l_expected_message := q'[%Actual: ut3_tester.t_varray [ count = 1 ] was expected to equal: ut3_tester.t_varray [ count = ] -%Diff: -%Rows: [ 1 differences ] -%Row No. 1 - Extra: 1]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure empty_varray_have_zero_elem is - begin - ut3.ut.expect( anydata.convertCollection(t_varray())).to_have_count(0); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure varr_empty_equal_varr_empty is - begin - --Arrange - g_test_expected := anydata.convertCollection(t_varray()); - g_test_actual := anydata.convertCollection(t_varray()); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure varr_empty_equal_varr_notempty is - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - l_is_null t_varray ; - begin - --Arrange - g_test_expected := anydata.convertCollection( t_varray() ); - g_test_actual := anydata.convertCollection( t_varray(1) ); - --Act - ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - l_expected_message := q'[%Actual: ut3_tester.t_varray [ count = 1 ] was expected to equal: ut3_tester.t_varray [ count = 0 ] -%Diff: -%Rows: [ 1 differences ] -%Row No. 1 - Extra: 1]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure collection_join_by is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_actual - from dual connect by level <=2; - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=2 - order by rownum desc; - --Act - ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).join_by('TEST_DUMMY_OBJECT/ID'); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure collection_join_by_fail is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_actual - from dual connect by level <=2; - select test_dummy_object( rownum * 2, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=2 - order by rownum desc; - --Act - ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).join_by('TEST_DUMMY_OBJECT/ID'); - l_expected_message := q'[%Actual: ut3_tester.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 2 ] -%Diff: -%Rows: [ 3 differences ] -%PK 2 - Actual: Something 2 -%PK 2 - Actual: 2 -%PK 2 - Expected: Something 1 -%PK 2 - Expected: 1 -%PK 1 - Extra: 1Something 11 -%PK 4 - Missing: 4Something 22]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure collection_unordered is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - begin - --Arrange - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_actual - from dual connect by level <=3; - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=3 - order by rownum desc; - --Act - ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).unordered; - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure collection_unordered_fail is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_actual - from dual connect by level <=2; - select test_dummy_object( rownum * 2, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=2 - order by rownum desc; - - l_expected_message := q'[%Actual: ut3_tester.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 2 ] -%Diff: -%Rows: [ 4 differences ] -%Extra: 1Something 11 -%Extra: 2Something 22 -%Missing: 4Something 22 -%Missing: 2Something 11]'; - - ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).unordered; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure object_join_by is - begin - --Arrange - g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - g_test_actual := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - - --Act - ut3.ut.expect(g_test_actual).to_equal(g_test_expected).join_by('TEST_DUMMY_OBJECT/ID'); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure object_unordered is - begin - g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - g_test_actual := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - - --Act - ut3.ut.expect(g_test_actual).to_equal(g_test_expected).unordered; - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure collection_to_contain is - l_actual test_dummy_object_list; - l_expected test_dummy_object_list; - begin - --Arrange - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_actual - from dual connect by level <=4; - select test_dummy_object( rownum, 'Something '||rownum, rownum) - bulk collect into l_expected - from dual connect by level <=2 - order by rownum desc; - --Act - ut3.ut.expect(anydata.convertCollection(l_actual)).to_contain(anydata.convertCollection(l_expected)); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure object_to_contain is - begin - --Arrange - g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - g_test_actual := anydata.convertObject( test_dummy_object(1, 'A', '0') ); - - --Act - ut3.ut.expect(g_test_actual).to_contain(g_test_expected); - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - -end; -/ \ No newline at end of file diff --git a/test/core/expectations/test_expectation_anydata.pks b/test/core/expectations/test_expectation_anydata.pks deleted file mode 100644 index b9fbda93b..000000000 --- a/test/core/expectations/test_expectation_anydata.pks +++ /dev/null @@ -1,202 +0,0 @@ -create or replace package test_expectation_anydata is - - --%suite(equal on anydata) - --%suitepath(utplsql.core.expectations) - - --%aftereach - procedure cleanup; - - --%test(Gives failure when comparing NULL objects of different type) - procedure fail_on_different_type_null; - - --%test(Gives failure when comparing objects of different type) - procedure fail_on_different_type; - - --%test(Gives failure when objects holds different data) - procedure fail_on_different_object_data; - - --%test(Gives failure when one of objects is NULL) - procedure fail_on_one_object_null; - - --%test(Gives failure when comparing object to collection) - procedure fail_on_collection_vs_object; - - --%test(Gives failure when comparing empty collection to NULL collection) - procedure fail_on_null_vs_empty_coll; - - --%test(Gives failure when one of collections is NULL) - procedure fail_on_one_collection_null; - - --%test(Gives failure when one of collections is empty) - procedure fail_on_one_collection_empty; - - --%test(Gives failure when collections holds different data) - procedure fail_on_different_coll_data; - - --%test(Gives success when both anydata are NULL) - procedure success_on_both_anydata_null; - - --%test(Gives success when both objects are null) - procedure success_on_both_object_null; - - --%test(Gives success when both collections are null) - procedure success_on_both_coll_null; - - --%test(Gives success when both collections are of same type contain identical data) - procedure success_on_same_coll_data; - - --%test(Gives failure when both collections contain the same data in different order) - procedure fail_on_coll_different_order; - - --%test(Gives success when both objects are of same type and hold the same data) - procedure success_on_same_object_data; - - --%test(List of attributes to exclude is case sensitive) - procedure exclude_attributes_as_list; - - --%test(Comma separated list of attributes to exclude is case sensitive) - procedure exclude_attributes_as_csv; - - --%test(Exclude attributes by XPath is case sensitive) - procedure exclude_attributes_xpath; - - --%test(Excludes existing attributes when some of attributes on exclude are not valid column names) - procedure exclude_ignores_invalid_attrib; - - --%test(List of attributes to include is case sensitive) - procedure include_attributes_as_list; - - --%test(Comma separated list of attributes to include is case sensitive) - procedure include_attributes_as_csv; - - --%test(Include attributes by XPath is case sensitive) - procedure include_attributes_xpath; - - --%test(Includes existing attributes when some of attributes on exclude are not valid column names) - procedure include_ignores_invalid_attrib; - - --%test(Includes only attributes that are not excluded) - procedure include_exclude_attributes_csv; - - --%test(Includes only attributes that are not on exclude list) - procedure include_exclude_attrib_list; - - --%test(Reports diff on incorrect attributes of an object type) - procedure reports_diff_attribute; - - --%test(Reports diff on incorrect rows and attributes of a collection type) - procedure reports_diff_structure; - - --%test(Adds a warning when using depreciated syntax to_equal( a_expected anydata, a_exclude varchar2 )) - procedure deprec_to_equal_excl_varch; - - --%test(Adds a warning when using depreciated syntax to_equal( a_expected anydata, a_exclude ut_varchar2_list )) - procedure deprec_to_equal_excl_list; - - --%test(Adds a warning when using depreciated syntax not_to_equal( a_expected anydata, a_exclude varchar2 )) - procedure deprec_not_to_equal_excl_varch; - - --%test(Adds a warning when using depreciated syntax not_to_equal( a_expected anydata, a_exclude ut_varchar2_list )) - procedure deprec_not_to_equal_excl_list; - - --%test(Adds a warning when using depreciated syntax to_( equal( a_expected anydata, a_exclude varchar2 ) )) - procedure deprec_equal_excl_varch; - - --%test(Adds a warning when using depreciated syntax to_( equal( a_expected anydata, a_exclude ut_varchar2_list )) ) - procedure deprec_equal_excl_list; - - --%test(Reports only mismatched attributes on row data mismatch) - procedure data_diff_on_atr_data_mismatch; - - --%test(Reports only first 20 rows of diff and gives a full diff count) - procedure data_diff_on_20_rows_only; - - --%test(Validate include list on collections of objects) - procedure collection_include_list; - - --%test(Validate exclude list on collections of objects) - procedure collection_exclude_list; - - --%test(Validate include list on collections of objects fail) - procedure collection_include_list_fail; - - --%test(Two ARRAYS with same data) - procedure array_same_data; - - --%test(Two ARRAYS with different data) - procedure array_diff_data; - - --%test(ARRAY is atomically null) - procedure array_is_null; - - --%test(Compare two null ARRAYs) - procedure array_null_equal_array_null; - - --%test(Compare null ARRAY to ARRAY with data) - procedure array_null_equal_array_notnull; - - --%test(Empty ARRAY have count of 0) - procedure empty_array_have_zero_elem; - - --%test(Compare two empty ARRAYs) - procedure array_empty_equal_array_empty; - - --%test(Compare empty ARRAY to ARRAY with data) - procedure arr_empty_equal_arr_notempty; - - --%test(Collection is atomically NULL) - procedure collection_is_null; - - --%test(Collection is empty) - procedure collection_is_empty; - - --%test(Two VARRAYS with same data) - procedure varray_same_data; - - --%test(Two VARRAYS with different data) - procedure varray_diff_data; - - --%test(VARRAY is atomically null) - procedure varray_is_null; - - --%test(Compare two null VARRAYs) - procedure varray_null_equal_varray_null; - - --%test(Compare null VARRAY to VARRAY with data) - procedure varr_null_equal_varr_notnull; - - --%test(Empty VARRAY have count of 0) - procedure empty_varray_have_zero_elem; - - --%test(Compare two empty VARRAYs) - procedure varr_empty_equal_varr_empty; - - --%test(Compare empty VARRAY to VARRAY with data) - procedure varr_empty_equal_varr_notempty; - - --%test( Anydata collection using joinby ) - procedure collection_join_by; - - --%test( Anydata collection using joinby fail) - procedure collection_join_by_fail; - - --%test( Anydata collection unordered ) - procedure collection_unordered; - - --%test( Anydata collection unordered fail ) - procedure collection_unordered_fail; - - --%test( Anydata object using joinby ) - procedure object_join_by; - - --%test( Anydata object unordered ) - procedure object_unordered; - - --%test( Success when anydata collection contains data from another anydata collection) - procedure collection_to_contain; - - --%test( Success when anydata object contains data from another anydata) - procedure object_to_contain; - -end; -/ diff --git a/test/core/expectations/test_expectation_processor.pkb b/test/core/expectations/test_expectation_processor.pkb deleted file mode 100644 index 17ffbec3c..000000000 --- a/test/core/expectations/test_expectation_processor.pkb +++ /dev/null @@ -1,71 +0,0 @@ -create or replace package body test_expectation_processor is - - procedure who_called_expectation is - l_stack_trace varchar2(4000); - l_source_line varchar2(4000); - begin - l_stack_trace := q'[----- PL/SQL Call Stack ----- - object line object - handle number name -34f88e4420 124 package body SCH_TEST.UT_EXPECTATION_PROCESSOR -353dfeb2f8 26 SCH_TEST.UT_EXPECTATION_RESULT -cba249ce0 112 SCH_TEST.UT_EXPECTATION -3539881cf0 21 SCH_TEST.UT_EXPECTATION_NUMBER -351a608008 28 package body SCH_TEST.TPKG_PRIOR_YEAR_GENERATION -351a6862b8 6 anonymous block -351fe31010 1825 package body SYS.DBMS_SQL -20befbe4d8 129 SCH_TEST.UT_EXECUTABLE -20befbe4d8 65 SCH_TEST.UT_EXECUTABLE -34f8ab7cd8 80 SCH_TEST.UT_TEST -34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM -34f8ab9b10 74 SCH_TEST.UT_SUITE -34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM -cba24bfd0 75 SCH_TEST.UT_LOGICAL_SUITE -353dfecf30 59 SCH_TEST.UT_RUN -34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM -357f5421e8 77 package body SCH_TEST.UT_RUNNER -357f5421e8 111 package body SCH_TEST.UT_RUNNER -20be951ab0 292 package body SCH_TEST.UT -20be951ab0 320 package body SCH_TEST.UT -]'; - ut.expect( - ut3.ut_expectation_processor.who_called_expectation(l_stack_trace) - ).to_be_like('at "SCH_TEST.TPKG_PRIOR_YEAR_GENERATION", line 28 %'); - end; - - - procedure who_called_expectation_0x is - l_stack_trace varchar2(4000); - l_source_line varchar2(4000); - begin - l_stack_trace := q'[----- PL/SQL Call Stack ----- - object line object - handle number name -34f88e4420 124 package body SCH_TEST.UT_EXPECTATION_PROCESSOR -353dfeb2f8 26 SCH_TEST.UT_EXPECTATION_RESULT -cba249ce0 112 SCH_TEST.UT_EXPECTATION -3539881cf0 21 SCH_TEST.UT_EXPECTATION_NUMBER -351a608008 28 package body SCH_TEST.TPKG_PRIOR_YEAR_GENERATION -351a6862b8 6 anonymous block -351fe31010 1825 package body SYS.DBMS_SQL -20befbe4d8 129 SCH_TEST.UT_EXECUTABLE -20befbe4d8 65 SCH_TEST.UT_EXECUTABLE -34f8ab7cd8 80 SCH_TEST.UT_TEST -34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM -34f8ab9b10 74 SCH_TEST.UT_SUITE -34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM -cba24bfd0 75 SCH_TEST.UT_LOGICAL_SUITE -353dfecf30 59 SCH_TEST.UT_RUN -34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM -357f5421e8 77 package body SCH_TEST.UT_RUNNER -357f5421e8 111 package body SCH_TEST.UT_RUNNER -20be951ab0 292 package body SCH_TEST.UT -20be951ab0 320 package body SCH_TEST.UT -]'; - ut.expect( - ut3.ut_expectation_processor.who_called_expectation(l_stack_trace) - ).to_be_like('at "SCH_TEST.TPKG_PRIOR_YEAR_GENERATION", line 28 %'); - end; - -end; -/ diff --git a/test/core/expectations/test_expectation_processor.pks b/test/core/expectations/test_expectation_processor.pks deleted file mode 100644 index ecde48153..000000000 --- a/test/core/expectations/test_expectation_processor.pks +++ /dev/null @@ -1,17 +0,0 @@ -create or replace package test_expectation_processor is - - --%suite(expectation_processor) - --%suitepath(utplsql.core.expectations) - - --%context(who_called_expectation) - - --%test(parses stack trace and returns object and line that called expectation) - procedure who_called_expectation; - - --%test(parses stack trace containing 0x and returns object and line that called expectation) - procedure who_called_expectation_0x; - - --%endcontext - -end; -/ diff --git a/test/core/expectations/test_matchers.pkb b/test/core/expectations/test_matchers.pkb deleted file mode 100644 index 1a15986b9..000000000 --- a/test/core/expectations/test_matchers.pkb +++ /dev/null @@ -1,270 +0,0 @@ -create or replace package body test_matchers is - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - procedure exec_matcher(a_type varchar2, a_actual_value varchar2, a_expected_value varchar2, a_matcher varchar2, a_result integer, a_prefix varchar2 := null) is - l_statement varchar2(32767); - begin - l_statement := ' - declare - l_actual '||a_type||' := '||a_actual_value||'; - l_expected '||a_type||' := '||a_expected_value||'; - begin - ut3.ut.expect( l_actual ).'||a_prefix||'to_'||a_matcher||'( l_expected ); - end;'; - execute immediate l_statement; - if a_result = ut3.ut_utils.gc_success then - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - else - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end if; - cleanup_expectations(); - end exec_matcher; - - procedure exec_be_between(a_type varchar2, a_actual_value varchar2, a_expected1_value varchar2, a_expected2_value varchar2,a_result integer) is - l_statement varchar2(32767); - begin - l_statement := ' - declare - l_actual_value '||a_type||' := '||a_actual_value||'; - l_lower '||a_type||' := '||a_expected1_value||'; - l_higher '||a_type||' := '||a_expected2_value||'; - begin - ut3.ut.expect(l_actual_value).to_be_between(l_lower, l_higher); - end;'; - execute immediate l_statement; - if a_result = ut3.ut_utils.gc_success then - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - else - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end if; - cleanup_expectations(); - end exec_be_between; - - procedure exec_be_between2(a_type varchar2, a_actual_value varchar2, a_expected1_value varchar2, a_expected2_value varchar2,a_result integer, a_not_prefix varchar2 default null) is - l_statement varchar2(32767); - begin - l_statement := ' - declare - l_actual_value '||a_type||' := '||a_actual_value||'; - l_value1 '||a_type||' := '||a_expected1_value||'; - l_value2 '||a_type||' := '||a_expected2_value||'; - begin - ut3.ut.expect(l_actual_value).'||a_not_prefix||'to_be_between(l_value1, l_value2); - end;'; - execute immediate l_statement; - if a_result = ut3.ut_utils.gc_success then - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - else - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end if; - cleanup_expectations(); - end exec_be_between2; - - procedure exec_be_like(a_type varchar2, a_value varchar2, a_pattern varchar2, a_escape varchar2, a_result integer, a_prefix varchar2 default null) is - begin - execute immediate - 'declare - l_actual ' || a_type || ' := '||a_value||'; - l_pattern varchar2(32767) := :pattern; - l_escape_char varchar2(32767) := :a_escape; - l_result integer; - begin - ut3.ut.expect( l_actual ).' || a_prefix ||q'[to_be_like(l_pattern, l_escape_char); - end;]' - using a_pattern, a_escape; - if a_result = ut3.ut_utils.gc_success then - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - else - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end if; - cleanup_expectations(); - end; - procedure exec_match(a_type varchar2, a_actual_value varchar2, a_pattern varchar2, a_modifiers varchar2, a_result integer, a_not_prefix varchar2 default null) is - l_statement varchar2(32767); - begin - l_statement := - 'declare - l_actual '||a_type||' := '||a_actual_value||'; - l_pattern varchar2(32767) := :a_pattern; - l_modifiers varchar2(32767) := :a_modifiers; - l_result integer; - begin - ut3.ut.expect( l_actual ).'||a_not_prefix||'to_match(l_pattern, l_modifiers); - end;'; - execute immediate l_statement using a_pattern, a_modifiers; - if a_result = ut3.ut_utils.gc_success then - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - else - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end if; - cleanup_expectations(); - end; - - procedure test_be_between2 is - begin - - --failure when value out of range - exec_be_between2('date', 'sysdate', 'sysdate-2', 'sysdate-1', ut3.ut_utils.gc_failure, ''); - exec_be_between2('number', '2.0', '1.99', '1.999', ut3.ut_utils.gc_failure, ''); - exec_be_between2('varchar2(1)', '''c''', '''a''', '''b''', ut3.ut_utils.gc_failure, ''); - exec_be_between2('timestamp', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3.ut_utils.gc_failure, ''); - exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3.ut_utils.gc_failure, ''); - exec_be_between2('timestamp with time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3.ut_utils.gc_failure, ''); - exec_be_between2('interval year to month', '''2-2''', '''2-0''', '''2-1''', ut3.ut_utils.gc_failure, ''); - exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 00:59:59''', ut3.ut_utils.gc_failure, ''); - - --success when value in range - exec_be_between2('date', 'sysdate', 'sysdate-1', 'sysdate+1', ut3.ut_utils.gc_success, ''); - exec_be_between2('number', '2.0', '1.99', '2.01', ut3.ut_utils.gc_success, ''); - exec_be_between2('varchar2(1)', '''b''', '''a''', '''c''', ut3.ut_utils.gc_success, ''); - exec_be_between2('timestamp', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3.ut_utils.gc_success, ''); - exec_be_between2('timestamp with local time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3.ut_utils.gc_success, ''); - exec_be_between2('timestamp with time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3.ut_utils.gc_success, ''); - exec_be_between2('interval year to month', '''2-1''', '''2-0''', '''2-2''', ut3.ut_utils.gc_success, ''); - exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 01:00:01''', ut3.ut_utils.gc_success, ''); - - --success when value not in range - exec_be_between2('date', 'sysdate', 'sysdate-2', 'sysdate-1', ut3.ut_utils.gc_success, 'not_'); - exec_be_between2('number', '2.0', '1.99', '1.999', ut3.ut_utils.gc_success, 'not_'); - exec_be_between2('varchar2(1)', '''c''', '''a''', '''b''', ut3.ut_utils.gc_success, 'not_'); - exec_be_between2('timestamp', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3.ut_utils.gc_success, 'not_'); - exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3.ut_utils.gc_success, 'not_'); - exec_be_between2('timestamp with time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3.ut_utils.gc_success, 'not_'); - exec_be_between2('interval year to month', '''2-2''', '''2-0''', '''2-1''', ut3.ut_utils.gc_success, 'not_'); - exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 00:59:59''', ut3.ut_utils.gc_success, 'not_'); - - --failure when value not out of range - exec_be_between2('date', 'sysdate', 'sysdate-1', 'sysdate+1', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('number', '2.0', '1.99', '2.01', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('varchar2(1)', '''b''', '''a''', '''c''', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('timestamp', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('timestamp with local time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('timestamp with time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('interval year to month', '''2-1''', '''2-0''', '''2-2''', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 01:00:01''', ut3.ut_utils.gc_failure, 'not_'); - - --failure when value is null - exec_be_between2('date', 'null', 'sysdate-1', 'sysdate+1', ut3.ut_utils.gc_failure, ''); - exec_be_between2('number', 'null', '1.99', '2.01', ut3.ut_utils.gc_failure, ''); - exec_be_between2('varchar2(1)', 'null', '''a''', '''c''', ut3.ut_utils.gc_failure, ''); - exec_be_between2('timestamp', 'null', 'systimestamp-1', 'systimestamp+1', ut3.ut_utils.gc_failure, ''); - exec_be_between2('timestamp with local time zone', 'null', 'systimestamp-1', 'systimestamp+1', ut3.ut_utils.gc_failure, ''); - exec_be_between2('timestamp with time zone', 'null', 'systimestamp-1', 'systimestamp+1', ut3.ut_utils.gc_failure, ''); - exec_be_between2('interval year to month', 'null', '''2-0''', '''2-2''', ut3.ut_utils.gc_failure, ''); - exec_be_between2('interval day to second', 'null', '''2 00:59:58''', '''2 01:00:01''', ut3.ut_utils.gc_failure, ''); - - exec_be_between2('date', 'null', 'sysdate-2', 'sysdate-1', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('number', 'null', '1.99', '1.999', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('varchar2(1)', 'null', '''a''', '''b''', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('timestamp', 'null', 'systimestamp-1', 'systimestamp', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('timestamp with local time zone', 'null', 'systimestamp-1', 'systimestamp', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('timestamp with time zone', 'null', 'systimestamp-1', 'systimestamp', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('interval year to month', 'null', '''2-0''', '''2-1''', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('interval day to second', 'null', '''2 00:59:58''', '''2 00:59:59''', ut3.ut_utils.gc_failure, 'not_'); - - --failure when lower bound is null - exec_be_between2('date', 'sysdate', 'null', 'sysdate+1', ut3.ut_utils.gc_failure, ''); - exec_be_between2('number', '2.0', 'null', '2.01', ut3.ut_utils.gc_failure, ''); - exec_be_between2('varchar2(1)', '''b''', 'null', '''c''', ut3.ut_utils.gc_failure, ''); - exec_be_between2('timestamp', 'systimestamp', 'null', 'systimestamp+1', ut3.ut_utils.gc_failure, ''); - exec_be_between2('timestamp with local time zone', 'systimestamp', 'null', 'systimestamp+1', ut3.ut_utils.gc_failure, ''); - exec_be_between2('timestamp with time zone', 'systimestamp', 'null', 'systimestamp+1', ut3.ut_utils.gc_failure, ''); - exec_be_between2('interval year to month', '''2-1''', 'null', '''2-2''', ut3.ut_utils.gc_failure, ''); - exec_be_between2('interval day to second', '''2 01:00:00''', 'null', '''2 01:00:01''', ut3.ut_utils.gc_failure, ''); - - exec_be_between2('date', 'sysdate', 'null', 'sysdate-1', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('number', '2.0', 'null', '1.999', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('varchar2(1)', '''b''', 'null', '''b''', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('timestamp', 'systimestamp+1', 'null', 'systimestamp', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'null', 'systimestamp', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('timestamp with time zone', 'systimestamp+1', 'null', 'systimestamp', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('interval year to month', '''2-2''', 'null', '''2-1''', ut3.ut_utils.gc_failure, 'not_'); - exec_be_between2('interval day to second', '''2 01:00:00''', 'null', '''2 00:59:59''', ut3.ut_utils.gc_failure, 'not_'); - --Fails for unsupported data-type - exec_be_between2('clob', '''b''', '''a''', '''c''', ut3.ut_utils.gc_failure, ''); - end; - - procedure test_match is - begin - exec_match('varchar2(100)', '''Stephen''', '^Ste(v|ph)en$', '', ut3.ut_utils.gc_success); - exec_match('varchar2(100)', '''sTEPHEN''', '^Ste(v|ph)en$', 'i', ut3.ut_utils.gc_success); - exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', 'Ste(v|ph)en$', '', ut3.ut_utils.gc_success); - exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', 'Ste(v|ph)en$', 'i', ut3.ut_utils.gc_success); - - exec_match('varchar2(100)', '''Stephen''', '^Steven$', '', ut3.ut_utils.gc_failure); - exec_match('varchar2(100)', '''sTEPHEN''', '^Steven$', 'i', ut3.ut_utils.gc_failure); - exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', '^Stephen', '', ut3.ut_utils.gc_failure); - exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', '^Stephen', 'i', ut3.ut_utils.gc_failure); - - exec_match('varchar2(100)', '''Stephen''', '^Ste(v|ph)en$', '', ut3.ut_utils.gc_failure, 'not_'); - exec_match('varchar2(100)', '''sTEPHEN''', '^Ste(v|ph)en$', 'i', ut3.ut_utils.gc_failure, 'not_'); - exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', 'Ste(v|ph)en$', '', ut3.ut_utils.gc_failure, 'not_'); - exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', 'Ste(v|ph)en$', 'i', ut3.ut_utils.gc_failure, 'not_'); - - exec_match('varchar2(100)', '''Stephen''', '^Steven$', '', ut3.ut_utils.gc_success, 'not_'); - exec_match('varchar2(100)', '''sTEPHEN''', '^Steven$', 'i', ut3.ut_utils.gc_success, 'not_'); - exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', '^Stephen', '', ut3.ut_utils.gc_success, 'not_'); - exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', '^Stephen', 'i', ut3.ut_utils.gc_success, 'not_'); - --Fails for unsupported data-type - exec_match('number', '12345', '^123.*', 'i', ut3.ut_utils.gc_failure); - end; - - procedure test_be_like is - begin - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en%', '', ut3.ut_utils.gc_success); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en\_K%', '\', ut3.ut_utils.gc_success); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en%', '', ut3.ut_utils.gc_success); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en\_K%', '\', ut3.ut_utils.gc_success); - - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste_en%', '', ut3.ut_utils.gc_failure); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Stephe\__%', '\', ut3.ut_utils.gc_failure); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste_en%', '', ut3.ut_utils.gc_failure); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Stephe\__%', '\', ut3.ut_utils.gc_failure); - - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en%', '', ut3.ut_utils.gc_failure, 'not_'); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en\_K%', '\', ut3.ut_utils.gc_failure, 'not_'); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en%', '', ut3.ut_utils.gc_failure, 'not_'); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en\_K%', '\', ut3.ut_utils.gc_failure, 'not_'); - - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste_en%', '', ut3.ut_utils.gc_success, 'not_'); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Stephe\__%', '\', ut3.ut_utils.gc_success, 'not_'); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste_en%', '', ut3.ut_utils.gc_success, 'not_'); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Stephe\__%', '\', ut3.ut_utils.gc_success, 'not_'); - - --Fails for unsupported data-type - exec_be_like('number', '12345', '123%', '', ut3.ut_utils.gc_failure); - end; - - procedure test_timestamp_between is - l_value timestamp := to_timestamp('1997-01-31 09:26:50.13','YYYY-MM-DD HH24.MI.SS.FF'); - l_value_lower timestamp := to_timestamp('1997-01-31 09:26:50.11','YYYY-MM-DD HH24.MI.SS.FF'); - l_value_upper timestamp := to_timestamp('1997-01-31 09:26:50.14','YYYY-MM-DD HH24.MI.SS.FF'); - begin - ut3.ut.expect(l_value).to_be_between(l_value_lower, l_value_upper); - ut3.ut.expect(l_value).not_to_be_between(l_value_upper, l_value_lower); - end; - - procedure test_timestamp_ltz_between is - l_value timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +02:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); - l_value_lower timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +03:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); - l_value_upper timestamp with local time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +01:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); - begin - ut3.ut.expect(l_value).to_be_between(l_value_lower, l_value_upper); - ut3.ut.expect(l_value).not_to_be_between(l_value_upper, l_value_lower); - end; - - procedure test_timestamp_tz_between is - l_value timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +02:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); - l_value_lower timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +03:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); - l_value_upper timestamp with time zone := to_timestamp_tz('1997-01-31 09:26:50.12 +01:00','YYYY-MM-DD HH24.MI.SS.FF TZR'); - begin - ut3.ut.expect(l_value).to_be_between(l_value_lower, l_value_upper); - ut3.ut.expect(l_value).not_to_be_between(l_value_upper, l_value_lower); - end; - -end test_matchers; -/ diff --git a/test/core/expectations/test_matchers.pks b/test/core/expectations/test_matchers.pks deleted file mode 100644 index 0fa0953d4..000000000 --- a/test/core/expectations/test_matchers.pks +++ /dev/null @@ -1,27 +0,0 @@ -create or replace package test_matchers is - - --%suite(matchers) - --%suitepath(utplsql.core.expectations) - - --%aftereach - procedure cleanup_expectations; - - --%test - procedure test_be_between2; - --%test - procedure test_match; - - --%test - procedure test_be_like; - - --%test - procedure test_timestamp_between; - - --%test - procedure test_timestamp_ltz_between; - - --%test - procedure test_timestamp_tz_between; - -end test_matchers; -/ diff --git a/test/core/expectations/unary/test_expect_not_to_be_null.pkb b/test/core/expectations/unary/test_expect_not_to_be_null.pkb deleted file mode 100644 index 45ce4f697..000000000 --- a/test/core/expectations/unary/test_expect_not_to_be_null.pkb +++ /dev/null @@ -1,265 +0,0 @@ -create or replace package body test_expect_not_to_be_null -is - gc_object_name constant varchar2(30) := 't_not_to_be_null_test'; - gc_nested_table_name constant varchar2(30) := 'tt_not_to_be_null_test'; - gc_varray_name constant varchar2(30) := 'tv_not_to_be_null_test'; - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - procedure create_types is - pragma autonomous_transaction; - begin - execute immediate 'create type ' || gc_object_name || ' is object (dummy number)'; - execute immediate 'create type ' || gc_nested_table_name || ' is table of number'; - execute immediate 'create type ' || gc_varray_name || ' is varray(1) of number'; - end; - - procedure drop_types is - pragma autonomous_transaction; - begin - execute immediate 'drop type ' || gc_object_name; - execute immediate 'drop type ' || gc_nested_table_name; - execute immediate 'drop type ' || gc_varray_name; - end; - - procedure blob_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'blob', 'to_blob(''abc'')' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure blob_0_length is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'blob', 'empty_blob()' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure boolean_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'boolean', 'true' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure clob_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'clob', 'to_clob(''abc'')' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - - procedure clob_0_length is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'clob', 'empty_clob()' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure date_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'date', 'sysdate' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure number_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'number', '1234' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure timestamp_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'timestamp', 'systimestamp' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure timestamp_with_ltz_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( - 'not_to_be_null', 'timestamp with local time zone', 'systimestamp' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure timestamp_with_tz_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'timestamp with time zone', - 'systimestamp' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure varchar2_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'varchar2(4000)', '''abc''' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure initialized_object is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'not_to_be_null', gc_object_name, gc_object_name || '(1)', 'object' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure initialized_nested_table is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'not_to_be_null', gc_nested_table_name, gc_nested_table_name || '()', 'collection' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure initialized_varray is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'not_to_be_null', gc_varray_name, gc_varray_name || '()', 'collection' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_blob is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'blob', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure null_boolean is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'boolean', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure null_clob is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'clob', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure null_date is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'date', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure null_number is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'number', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure null_timestamp is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'timestamp', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure null_timestamp_with_ltz is - begin - --Act - execute immediate expectations.unary_expectation_block( - 'not_to_be_null', 'timestamp with local time zone', 'null' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure null_timestamp_with_tz is - begin - --Act - execute immediate expectations.unary_expectation_block( - 'not_to_be_null', 'timestamp with time zone', 'null' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure null_varchar2 is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'varchar2(4000)', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure null_anydata is - begin - --Act - execute immediate expectations.unary_expectation_block( 'not_to_be_null', 'anydata', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure uninit_object_in_anydata is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'not_to_be_null', gc_object_name, 'null', 'object' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure uninit_nested_table_in_anydata is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'not_to_be_null', gc_nested_table_name, 'null', 'collection' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure uninit_varray_in_anydata is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'not_to_be_null', gc_varray_name, 'null', 'collection' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - -end test_expect_not_to_be_null; -/ diff --git a/test/core/expectations/unary/test_expect_not_to_be_null.pks b/test/core/expectations/unary/test_expect_not_to_be_null.pks deleted file mode 100644 index fa2d6193f..000000000 --- a/test/core/expectations/unary/test_expect_not_to_be_null.pks +++ /dev/null @@ -1,97 +0,0 @@ -create or replace package test_expect_not_to_be_null -is - --%suite(not_to_be_null) - --%suitepath(utplsql.core.expectations.unary) - - --%aftereach - procedure cleanup_expectations; - - --%beforeall - procedure create_types; - - --%afterall - procedure drop_types; - - --%test(Gives success for not null blob) - procedure blob_not_null; - - --%test(Gives success for blob with length 0) - procedure blob_0_length; - - --%test(Gives success for not null boolean) - procedure boolean_not_null; - - --%test(Gives success for not null clob) - procedure clob_not_null; - - --%test(Gives success for clob with length 0) - procedure clob_0_length; - - --%test(Gives success for not null date) - procedure date_not_null; - - --%test(Gives success for not null number) - procedure number_not_null; - - --%test(Gives success for not null timestamp) - procedure timestamp_not_null; - - --%test(Gives success for not null timestamp with local time zone) - procedure timestamp_with_ltz_not_null; - - --%test(Gives success for not null timestamp with time zone) - procedure timestamp_with_tz_not_null; - - --%test(Gives success for not null varchar2) - procedure varchar2_not_null; - - --%test(Gives success for initialized object within anydata) - procedure initialized_object; - - --%test(Gives success for initialized nested table within anydata) - procedure initialized_nested_table; - - --%test(Gives success for initialized varray within anydata) - procedure initialized_varray; - - --%test(Gives failure with null blob) - procedure null_blob; - - --%test(Gives failure with null boolean) - procedure null_boolean; - - --%test(Gives failure with null clob) - procedure null_clob; - - --%test(Gives failure with null date) - procedure null_date; - - --%test(Gives failure with null number) - procedure null_number; - - --%test(Gives failure null timestamp) - procedure null_timestamp; - - --%test(Gives failure with null timestamp with local time zone) - procedure null_timestamp_with_ltz; - - --%test(Gives failure with null timestamp with time zone) - procedure null_timestamp_with_tz; - - --%test(Gives failure with null varchar2) - procedure null_varchar2; - - --%test(Gives failure with null anydata) - procedure null_anydata; - - --%test(Gives failure with uninitialized object within anydata) - procedure uninit_object_in_anydata; - - --%test(Gives failure with uninitialized nested table within anydata) - procedure uninit_nested_table_in_anydata; - - --%test(Gives failure with uninitialized varray within anydata) - procedure uninit_varray_in_anydata; - -end test_expect_not_to_be_null; -/ diff --git a/test/core/expectations/unary/test_expect_to_be_empty.pkb b/test/core/expectations/unary/test_expect_to_be_empty.pkb deleted file mode 100644 index 0db499906..000000000 --- a/test/core/expectations/unary/test_expect_to_be_empty.pkb +++ /dev/null @@ -1,271 +0,0 @@ -create or replace package body test_expect_to_be_empty is - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - procedure success_be_empty_cursor is - l_cursor sys_refcursor; - begin - --Arrange - open l_cursor for select * from dual where 1 = 2; - --Act - ut3.ut.expect(l_cursor).to_be_empty; - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_be_empty_cursor is - l_cursor sys_refcursor; - begin - --Arrange - open l_cursor for select * from dual; - --Act - ut3.ut.expect(l_cursor).to_be_empty; - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_be_empty_cursor_report is - l_cursor sys_refcursor; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - open l_cursor for select * from dual; - --Act - ut3.ut.expect(l_cursor).to_be_empty; - - l_expected_message := q'[Actual: (refcursor [ count = 1 ])% - X% -was expected to be empty%%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure success_not_be_empty_cursor is - l_cursor sys_refcursor; - begin - --Arrange - open l_cursor for select * from dual; - --Act - ut3.ut.expect(l_cursor).not_to_be_empty; - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_not_be_empty_cursor is - l_cursor sys_refcursor; - begin - --Arrange - open l_cursor for select * from dual where 1 = 2; - --Act - ut3.ut.expect(l_cursor).not_to_be_empty; - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure success_be_empty_collection is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertcollection(ora_mining_varchar2_nt()); - -- Act - ut3.ut.expect(l_actual).to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_be_empty_collection is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertcollection(ora_mining_varchar2_nt('a')); - -- Act - ut3.ut.expect(l_actual).to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure success_not_be_empty_coll is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertcollection(ora_mining_varchar2_nt('a')); - -- Act - ut3.ut.expect(l_actual).not_to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_not_be_empty_collection is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertcollection(ora_mining_varchar2_nt()); - -- Act - ut3.ut.expect(l_actual).not_to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_be_empty_null_collection is - l_actual anydata; - l_data ora_mining_varchar2_nt; - begin - --Arrange - l_actual := anydata.convertcollection(l_data); - -- Act - ut3.ut.expect(l_actual).to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_not_be_empty_null_coll is - l_actual anydata; - l_data ora_mining_varchar2_nt; - begin - --Arrange - l_actual := anydata.convertcollection(l_data); - -- Act - ut3.ut.expect(l_actual).not_to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_be_empty_object is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertObject(ut3.ut_data_value_number(1)); - -- Act - ut3.ut.expect(l_actual).to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_be_empty_null_object is - l_actual anydata; - l_data ut3.ut_data_value_number; - begin - --Arrange - l_actual := anydata.convertObject(l_data); - -- Act - ut3.ut.expect(l_actual).to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_be_empty_number is - begin - -- Act - ut3.ut.expect( 1 ).to_( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - /** - * https://docs.oracle.com/en/database/oracle/oracle-database/18/adobj/declaring-initializing-objects-in-plsql.html#GUID-23135172-82E2-4C3E-800D-E584B43B578E - * User-defined types, just like collections, are atomically null, until you initialize the object by calling the constructor for its object type. That is, the object itself is null, not just its attributes. - */ - procedure fail_not_be_empty_object is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertObject(ut3.ut_data_value_number(1)); - -- Act - ut3.ut.expect(l_actual).not_to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_not_be_empty_null_object is - l_actual anydata; - l_data ut3.ut_data_value_number; - begin - --Arrange - l_actual := anydata.convertObject(l_data); - -- Act - ut3.ut.expect(l_actual).not_to_be_empty(); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_not_be_empty_number is - begin - -- Act - ut3.ut.expect( 1 ).not_to( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure success_be_empty_clob is - begin - -- Act - ut3.ut.expect( empty_clob() ).to_( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_be_empty_clob is - begin - -- Act - ut3.ut.expect( to_clob(' ') ).to_( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure success_be_empty_blob is - begin - -- Act - ut3.ut.expect( empty_blob() ).to_( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_be_empty_blob is - begin - -- Act - ut3.ut.expect( to_blob('AA') ).to_( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - - procedure fail_not_be_empty_clob is - begin - -- Act - ut3.ut.expect( empty_clob() ).not_to( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure success_not_be_empty_clob is - begin - -- Act - ut3.ut.expect( to_clob(' ') ).not_to( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_not_be_empty_blob is - begin - -- Act - ut3.ut.expect( empty_blob() ).not_to( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure success_not_be_empty_blob is - begin - -- Act - ut3.ut.expect( to_blob('AA') ).not_to( ut3.be_empty() ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - -end; -/ \ No newline at end of file diff --git a/test/core/expectations/unary/test_expect_to_be_empty.pks b/test/core/expectations/unary/test_expect_to_be_empty.pks deleted file mode 100644 index 92a7e0bef..000000000 --- a/test/core/expectations/unary/test_expect_to_be_empty.pks +++ /dev/null @@ -1,93 +0,0 @@ -create or replace package test_expect_to_be_empty is - - --%suite - --%suitepath(utplsql.core.expectations.unary) - - --%aftereach - procedure cleanup_expectations; - - --%context(to_be_empty) - - --%test(Gives success for an empty cursor) - procedure success_be_empty_cursor; - - --%test(Gives failure for a non empty cursor) - procedure fail_be_empty_cursor; - - --%test(Reports the content of cursor when cursor is not empty) - procedure fail_be_empty_cursor_report; - - --%test(Gives success for an empty collection) - procedure success_be_empty_collection; - - --%test(Gives failure for a non empty collection) - procedure fail_be_empty_collection; - - --%test(Gives failure for a NULL collection) - procedure fail_be_empty_null_collection; - - --%test(Gives failure for an object) - procedure fail_be_empty_object; - - --%test(Gives failure for a null object) - procedure fail_be_empty_null_object; - - --%test(Gives failure for number) - procedure fail_be_empty_number; - - --%test(Gives success for an empty CLOB) - procedure success_be_empty_clob; - - --%test(Gives failure for a non empty CLOB) - procedure fail_be_empty_clob; - - --%test(Gives success for an empty BLOB) - procedure success_be_empty_blob; - - --%test(Gives failure for a non empty BLOB) - procedure fail_be_empty_blob; - - --%endcontext - - --%context(not_to_be_empty) - - --%test(Gives failure for an empty cursor) - procedure fail_not_be_empty_cursor; - - --%test(Gives success for a non empty cursor) - procedure success_not_be_empty_cursor; - - --%test(Gives success for a non empty collection) - procedure success_not_be_empty_coll; - - --%test(Gives failure for an empty collection) - procedure fail_not_be_empty_collection; - - --%test(Gives failure for an empty collection) - procedure fail_not_be_empty_null_coll; - - --%test(Gives failure for an empty object) - procedure fail_not_be_empty_object; - - --%test(Gives failure for a null object) - procedure fail_not_be_empty_null_object; - - --%test(Gives failure for number) - procedure fail_not_be_empty_number; - - --%test(Gives failure for an empty CLOB) - procedure fail_not_be_empty_clob; - - --%test(Gives success for a non empty CLOB) - procedure success_not_be_empty_clob; - - --%test(Gives failure for an empty BLOB) - procedure fail_not_be_empty_blob; - - --%test(Gives success for a non empty BLOB) - procedure success_not_be_empty_blob; - - --%endcontext - -end; -/ diff --git a/test/core/expectations/unary/test_expect_to_be_not_null.pkb b/test/core/expectations/unary/test_expect_to_be_not_null.pkb deleted file mode 100644 index be6b3f2f8..000000000 --- a/test/core/expectations/unary/test_expect_to_be_not_null.pkb +++ /dev/null @@ -1,264 +0,0 @@ -create or replace package body test_expect_to_be_not_null -is - gc_object_name constant varchar2(30) := 't_to_be_not_null_test'; - gc_nested_table_name constant varchar2(30) := 'tt_to_be_not_null_test'; - gc_varray_name constant varchar2(30) := 'tv_to_be_not_null_test'; - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations(); - end; - - procedure create_types is - pragma autonomous_transaction; - begin - execute immediate 'create type '||gc_object_name||' is object (dummy number)'; - execute immediate 'create type '||gc_nested_table_name||' is table of number'; - execute immediate 'create type '||gc_varray_name||' is varray(1) of number'; - end; - - procedure drop_types is - pragma autonomous_transaction; - begin - execute immediate 'drop type '||gc_object_name; - execute immediate 'drop type '||gc_nested_table_name; - execute immediate 'drop type '||gc_varray_name; - end; - - procedure blob_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'blob', 'to_blob(''abc'')'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure empty_blob is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'blob', 'empty_blob()'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure boolean_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'boolean', 'true'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure clob_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'clob', 'to_clob(''abc'')'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure empty_clob is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'clob', 'empty_clob()'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure date_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'date', 'sysdate'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure number_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'number', '1234'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure timestamp_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'timestamp', 'systimestamp'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure timestamp_with_ltz_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'timestamp with local time zone', 'systimestamp'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure timestamp_with_tz_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'timestamp with time zone', 'systimestamp'); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure varchar2_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'varchar2(4000)', '''abc'''); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure initialized_object is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_not_null', gc_object_name, gc_object_name||'(1)', 'object' - ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure initialized_nested_table is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_not_null', gc_nested_table_name, gc_nested_table_name||'()', 'collection' - ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure initialized_varray is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_not_null', gc_varray_name, gc_varray_name||'()', 'collection' - ); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure null_blob is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'blob', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure null_boolean is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'boolean', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - - procedure null_clob is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'clob', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - - procedure null_date is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'date', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - - procedure null_number is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'number', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - - procedure null_timestamp is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'timestamp', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - - procedure null_timestamp_with_ltz is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'timestamp with local time zone', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - - procedure null_timestamp_with_tz is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'timestamp with time zone', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - - procedure null_varchar2 is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'varchar2(4000)', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure null_anydata is - begin - --Act - execute immediate expectations.unary_expectation_block('to_be_not_null', 'anydata', 'null'); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure uninit_object_in_anydata is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_not_null', gc_object_name, 'null', 'object' - ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure uninit_nested_table_in_anydata is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_not_null', gc_nested_table_name, 'null', 'collection' - ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure uninit_varray_in_anydata is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_not_null', gc_varray_name, 'null', 'collection' - ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - -end test_expect_to_be_not_null; -/ diff --git a/test/core/expectations/unary/test_expect_to_be_not_null.pks b/test/core/expectations/unary/test_expect_to_be_not_null.pks deleted file mode 100644 index 351482fee..000000000 --- a/test/core/expectations/unary/test_expect_to_be_not_null.pks +++ /dev/null @@ -1,97 +0,0 @@ -create or replace package test_expect_to_be_not_null -is - --%suite(to_be_not_null) - --%suitepath(utplsql.core.expectations.unary) - - --%aftereach - procedure cleanup_expectations; - - --%beforeall - procedure create_types; - - --%afterall - procedure drop_types; - - --%test(Gives success for not null blob) - procedure blob_not_null; - - --%test(Gives success for empty blob) - procedure empty_blob; - - --%test(Gives success for not null boolean) - procedure boolean_not_null; - - --%test(Gives success for not null clob) - procedure clob_not_null; - - --%test(Gives success for empty clob) - procedure empty_clob; - - --%test(Gives success for not null date) - procedure date_not_null; - - --%test(Gives success for not null number) - procedure number_not_null; - - --%test(Gives success for not null timestamp) - procedure timestamp_not_null; - - --%test(Gives success for not null timestamp with local time zone) - procedure timestamp_with_ltz_not_null; - - --%test(Gives success for not null timestamp with time zone) - procedure timestamp_with_tz_not_null; - - --%test(Gives success for not null varchar2) - procedure varchar2_not_null; - - --%test(Gives success for initialized object within anydata) - procedure initialized_object; - - --%test(Gives success for initialized nested table within anydata) - procedure initialized_nested_table; - - --%test(Gives success for initialized varray within anydata) - procedure initialized_varray; - - --%test(Gives failure with null blob) - procedure null_blob; - - --%test(Gives failure with null boolean) - procedure null_boolean; - - --%test(Gives failure with null clob) - procedure null_clob; - - --%test(Gives failure with null date) - procedure null_date; - - --%test(Gives failure with null number) - procedure null_number; - - --%test(Gives failure null timestamp) - procedure null_timestamp; - - --%test(Gives failure with null timestamp with local time zone) - procedure null_timestamp_with_ltz; - - --%test(Gives failure with null timestamp with time zone) - procedure null_timestamp_with_tz; - - --%test(Gives failure with null varchar2) - procedure null_varchar2; - - --%test(Gives failure with null anydata) - procedure null_anydata; - - --%test(Gives failure with uninitialized object within anydata) - procedure uninit_object_in_anydata; - - --%test(Gives failure with uninitialized nested table within anydata) - procedure uninit_nested_table_in_anydata; - - --%test(Gives failure with uninitialized varray within anydata) - procedure uninit_varray_in_anydata; - -end test_expect_to_be_not_null; -/ diff --git a/test/core/expectations/unary/test_expect_to_be_null.pkb b/test/core/expectations/unary/test_expect_to_be_null.pkb deleted file mode 100644 index 4179bfbe6..000000000 --- a/test/core/expectations/unary/test_expect_to_be_null.pkb +++ /dev/null @@ -1,260 +0,0 @@ -create or replace package body test_expect_to_be_null -is - gc_object_name constant varchar2(30) := 't_to_be_null_test'; - gc_nested_table_name constant varchar2(30) := 'tt_to_be_null_test'; - gc_varray_name constant varchar2(30) := 'tv_to_be_null_test'; - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - procedure create_types is - pragma autonomous_transaction; - begin - execute immediate 'create type ' || gc_object_name || ' is object (dummy number)'; - execute immediate 'create type ' || gc_nested_table_name || ' is table of number'; - execute immediate 'create type ' || gc_varray_name || ' is varray(1) of number'; - end; - - procedure drop_types is - pragma autonomous_transaction; - begin - execute immediate 'drop type ' || gc_object_name; - execute immediate 'drop type ' || gc_nested_table_name; - execute immediate 'drop type ' || gc_varray_name; - end; - - procedure null_blob is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'blob', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_boolean is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'boolean', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_clob is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'clob', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_date is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'date', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_number is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'number', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_timestamp is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'timestamp', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_timestamp_with_ltz is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'timestamp with local time zone', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_timestamp_with_tz is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'timestamp with time zone', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_varchar2 is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'varchar2(4000)', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure null_anydata is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'anydata', 'null' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure uninit_object_in_anydata is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_null', gc_object_name, 'null', 'object' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure uninit_nested_table_in_anydata is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_null', gc_nested_table_name, 'null', 'collection' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure uninit_varray_in_anydata is - begin - --Act - execute immediate expectations.unary_expectation_object_block( 'to_be_null', gc_varray_name, - 'null', 'collection' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure blob_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'blob', 'to_blob(''abc'')' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure empty_blob is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'blob', 'empty_blob()' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure boolean_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'boolean', 'true' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure clob_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'clob', 'to_clob(''abc'')' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure empty_clob is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'clob', 'empty_clob()' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure date_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'date', 'sysdate' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure number_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'number', '1234' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure timestamp_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'timestamp', 'systimestamp' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure timestamp_with_ltz_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( - 'to_be_null', 'timestamp with local time zone', 'systimestamp' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure timestamp_with_tz_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( - 'to_be_null', 'timestamp with time zone', 'systimestamp' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure varchar2_not_null is - begin - --Act - execute immediate expectations.unary_expectation_block( 'to_be_null', 'varchar2(4000)', '''abc''' ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure initialized_object is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_null', gc_object_name, gc_object_name || '(1)', 'object' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure initialized_nested_table is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_null', gc_nested_table_name, gc_nested_table_name || '()', 'collection' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure initialized_varray is - begin - --Act - execute immediate expectations.unary_expectation_object_block( - 'to_be_null', gc_varray_name, gc_varray_name || '()', 'collection' - ); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - -end test_expect_to_be_null; -/ diff --git a/test/core/expectations/unary/test_expect_to_be_null.pks b/test/core/expectations/unary/test_expect_to_be_null.pks deleted file mode 100644 index 8b34e1279..000000000 --- a/test/core/expectations/unary/test_expect_to_be_null.pks +++ /dev/null @@ -1,97 +0,0 @@ -create or replace package test_expect_to_be_null -is - --%suite(to_be_null) - --%suitepath(utplsql.core.expectations.unary) - - --%aftereach - procedure cleanup_expectations; - - --%beforeall - procedure create_types; - - --%afterall - procedure drop_types; - - --%test(Gives success with null blob) - procedure null_blob; - - --%test(Gives success with null boolean) - procedure null_boolean; - - --%test(Gives success with null clob) - procedure null_clob; - - --%test(Gives success with null date) - procedure null_date; - - --%test(Gives success with null number) - procedure null_number; - - --%test(Gives success null timestamp) - procedure null_timestamp; - - --%test(Gives success with null timestamp with local time zone) - procedure null_timestamp_with_ltz; - - --%test(Gives success with null timestamp with time zone) - procedure null_timestamp_with_tz; - - --%test(Gives success with null varchar2) - procedure null_varchar2; - - --%test(Gives success with null anydata) - procedure null_anydata; - - --%test(Gives success with uninitialized object within anydata) - procedure uninit_object_in_anydata; - - --%test(Gives success with uninitialized nested table within anydata) - procedure uninit_nested_table_in_anydata; - - --%test(Gives success with uninitialized varray within anydata) - procedure uninit_varray_in_anydata; - - --%test(Gives failure for not null blob) - procedure blob_not_null; - - --%test(Gives failure with empty blob) - procedure empty_blob; - - --%test(Gives failure for not null boolean) - procedure boolean_not_null; - - --%test(Gives failure for not null clob) - procedure clob_not_null; - - --%test(Gives failure with empty clob) - procedure empty_clob; - - --%test(Gives failure for not null date) - procedure date_not_null; - - --%test(Gives failure for not null number) - procedure number_not_null; - - --%test(Gives failure for not null timestamp) - procedure timestamp_not_null; - - --%test(Gives failure for not null timestamp with local time zone) - procedure timestamp_with_ltz_not_null; - - --%test(Gives failure for not null timestamp with time zone) - procedure timestamp_with_tz_not_null; - - --%test(Gives failure for not null varchar2) - procedure varchar2_not_null; - - --%test(Gives failure for initialized object within anydata) - procedure initialized_object; - - --%test(Gives failure for initialized nested table within anydata) - procedure initialized_nested_table; - - --%test(Gives failure for initialized varray within anydata) - procedure initialized_varray; - -end test_expect_to_be_null; -/ diff --git a/test/core/expectations/unary/test_expect_to_be_true_false.pkb b/test/core/expectations/unary/test_expect_to_be_true_false.pkb deleted file mode 100644 index 32ef58a7d..000000000 --- a/test/core/expectations/unary/test_expect_to_be_true_false.pkb +++ /dev/null @@ -1,139 +0,0 @@ -create or replace package body test_expect_to_be_true_false -is - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - procedure to_be_true_null_boolean is - begin - --Act - ut3.ut.expect( 1=null ).to_be_true(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure to_be_true_success is - begin - --Act - ut3.ut.expect( 1=1 ).to_be_true(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure to_be_true_failure is - begin - --Act - ut3.ut.expect( 1=2 ).to_be_true(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure to_be_true_bad_type is - begin - --Act - ut3.ut.expect( 1 ).to_be_true(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_to_be_true_null_boolean is - begin - --Act - ut3.ut.expect( 1=null ).not_to_be_true(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_to_be_true_success is - begin - --Act - ut3.ut.expect( 1=2 ).not_to_be_true(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure not_to_be_true_failure is - begin - --Act - ut3.ut.expect( 1=1 ).not_to_be_true(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - - procedure not_to_be_true_bad_type is - begin - --Act - ut3.ut.expect( 1 ).not_to_be_true(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure to_be_false_null_boolean is - begin - --Act - ut3.ut.expect( 1=null ).to_be_false(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure to_be_false_success is - begin - --Act - ut3.ut.expect( 1=2 ).to_be_false(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure to_be_false_failure is - begin - --Act - ut3.ut.expect( 1=1 ).to_be_false(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure to_be_false_bad_type is - begin - --Act - ut3.ut.expect( 1 ).to_be_false(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_to_be_false_null_boolean is - begin - --Act - ut3.ut.expect( 1=null ).not_to_be_false(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_to_be_false_success is - begin - --Act - ut3.ut.expect( 1=1 ).not_to_be_false(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).to_be_empty( ); - end; - - procedure not_to_be_false_failure is - begin - --Act - ut3.ut.expect( 1=2 ).not_to_be_false(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - - procedure not_to_be_false_bad_type is - begin - --Act - ut3.ut.expect( 1 ).not_to_be_false(); - --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); - end; - -end; -/ diff --git a/test/core/expectations/unary/test_expect_to_be_true_false.pks b/test/core/expectations/unary/test_expect_to_be_true_false.pks deleted file mode 100644 index abdbf44b6..000000000 --- a/test/core/expectations/unary/test_expect_to_be_true_false.pks +++ /dev/null @@ -1,58 +0,0 @@ -create or replace package test_expect_to_be_true_false -is - --%suite(to_be_true/false) - --%suitepath(utplsql.core.expectations.unary) - - --%aftereach - procedure cleanup_expectations; - - --%test(to_be_true - Gives failure with null boolean) - procedure to_be_true_null_boolean; - - --%test(to_be_true - Gives success with true expression) - procedure to_be_true_success; - - --%test(to_be_true - Gives failure with false expression) - procedure to_be_true_failure; - - --%test(to_be_true - Gives failure with non-boolean data type) - procedure to_be_true_bad_type; - - --%test(not_to_be_true - Gives failure with null boolean) - procedure not_to_be_true_null_boolean; - - --%test(not_to_be_true - Gives failure with true expression) - procedure not_to_be_true_success; - - --%test(not_to_be_true - Gives success with false expression) - procedure not_to_be_true_failure; - - --%test(not_to_be_true - Gives failure with non-boolean data type) - procedure not_to_be_true_bad_type; - - --%test(to_be_false - Gives failure with null boolean) - procedure to_be_false_null_boolean; - - --%test(to_be_false - Gives failure with true expression) - procedure to_be_false_success; - - --%test(to_be_false - Gives success with false expression) - procedure to_be_false_failure; - - --%test(to_be_false - Gives failure with non-boolean data type) - procedure to_be_false_bad_type; - - --%test(not_to_be_false - Gives failure with null boolean) - procedure not_to_be_false_null_boolean; - - --%test(not_to_be_false - Gives success with true expression) - procedure not_to_be_false_success; - - --%test(not_to_be_false - Gives failure with false expression) - procedure not_to_be_false_failure; - - --%test(not_to_be_false - Gives failure with non-boolean data type) - procedure not_to_be_false_bad_type; - -end; -/ diff --git a/test/core/expectations/unary/test_expect_to_have_count.pkb b/test/core/expectations/unary/test_expect_to_have_count.pkb deleted file mode 100644 index a95a6778a..000000000 --- a/test/core/expectations/unary/test_expect_to_have_count.pkb +++ /dev/null @@ -1,210 +0,0 @@ -create or replace package body test_expect_to_have_count is - - procedure cleanup_expectations is - begin - expectations.cleanup_expectations( ); - end; - - procedure success_have_count_cursor is - l_cursor sys_refcursor; - begin - --Arrange - open l_cursor for select * from dual connect by level <= 11; - --Act - ut3.ut.expect(l_cursor).to_have_count(11); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_have_count_cursor is - l_cursor sys_refcursor; - begin - --Arrange - open l_cursor for select * from dual where 0=1; - --Act - ut3.ut.expect(l_cursor).to_have_count(1); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_have_count_cursor_report is - l_cursor sys_refcursor; - l_actual_message varchar2(32767); - l_expected_message varchar2(32767); - begin - --Arrange - open l_cursor for select * from dual; - --Act - ut3.ut.expect(l_cursor).to_have_count(2); - - l_expected_message := q'[Actual: (refcursor [ count = 1 ]) was expected to have [ count = 2 ]%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure success_not_have_count_cursor is - l_cursor sys_refcursor; - begin - --Arrange - open l_cursor for select * from dual; - --Act - ut3.ut.expect(l_cursor).not_to_have_count(2); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_not_have_count_cursor is - l_cursor sys_refcursor; - begin - --Arrange - open l_cursor for select * from dual where 1 = 2; - --Act - ut3.ut.expect(l_cursor).not_to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure success_have_count_collection is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertcollection(ora_mining_varchar2_nt()); - -- Act - ut3.ut.expect(l_actual).to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_have_count_collection is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertcollection(ora_mining_varchar2_nt('a')); - -- Act - ut3.ut.expect(l_actual).to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure success_not_have_count_coll is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertcollection(ora_mining_varchar2_nt('a')); - -- Act - ut3.ut.expect(l_actual).not_to_have_count(2); - --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); - end; - - procedure fail_not_have_count_coll is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertcollection(ora_mining_varchar2_nt()); - -- Act - ut3.ut.expect(l_actual).not_to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_have_count_null_coll is - l_actual anydata; - l_data ora_mining_varchar2_nt; - begin - --Arrange - l_actual := anydata.convertcollection(l_data); - -- Act - ut3.ut.expect(l_actual).to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_not_have_count_null_coll is - l_actual anydata; - l_data ora_mining_varchar2_nt; - begin - --Arrange - l_actual := anydata.convertcollection(l_data); - -- Act - ut3.ut.expect(l_actual).not_to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_have_count_object is - l_actual anydata; - begin - --Arrange - l_actual := anydata.convertObject(ut3.ut_data_value_number(1)); - -- Act - ut3.ut.expect(l_actual).to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_have_count_null_object is - l_actual anydata; - l_data ut3.ut_data_value_number; - begin - --Arrange - l_actual := anydata.convertObject(l_data); - -- Act - ut3.ut.expect(l_actual).to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_have_count_number is - l_expected_message varchar2(32767); - l_actual_message varchar2(32767); - begin - -- Act - ut3.ut.expect( 1 ).to_( ut3.have_count(0) ); - --Assert - l_expected_message := q'[%The matcher 'have count' cannot be used with data type (number).%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure fail_not_have_count_object is - l_actual anydata; - l_expected_message varchar2(32767); - l_actual_message varchar2(32767); - begin - --Arrange - l_actual := anydata.convertObject(ut3.ut_data_value_number(1)); - -- Act - ut3.ut.expect(l_actual).not_to_have_count(0); - --Assert - l_expected_message := q'[%The matcher 'have count' cannot be used with data type (ut3.ut_data_value_number).%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; - --Assert - ut.expect(l_actual_message).to_be_like(l_expected_message); - end; - - procedure fail_not_have_count_null_obj is - l_actual anydata; - l_data ut3.ut_data_value_number; - begin - --Arrange - l_actual := anydata.convertObject(l_data); - -- Act - ut3.ut.expect(l_actual).not_to_have_count(0); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - - procedure fail_not_have_count_number is - begin - -- Act - ut3.ut.expect( 1 ).not_to( ut3.have_count(0) ); - --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); - end; - -end; -/ \ No newline at end of file diff --git a/test/core/expectations/unary/test_expect_to_have_count.pks b/test/core/expectations/unary/test_expect_to_have_count.pks deleted file mode 100644 index 636f98ba4..000000000 --- a/test/core/expectations/unary/test_expect_to_have_count.pks +++ /dev/null @@ -1,61 +0,0 @@ -create or replace package test_expect_to_have_count is - - --%suite((not)to_have_count) - --%suitepath(utplsql.core.expectations.unary) - - --%aftereach - procedure cleanup_expectations; - - --%test(Gives success for an empty cursor) - procedure success_have_count_cursor; - - --%test(Gives failure for a non empty cursor) - procedure fail_have_count_cursor; - - --%test(Reports the content of cursor when cursor is not empty) - procedure fail_have_count_cursor_report; - - --%test(Negated - Gives success for a non empty cursor) - procedure success_not_have_count_cursor; - - --%test(Negated - Gives failure for an empty cursor) - procedure fail_not_have_count_cursor; - - --%test(Gives success for an empty collection) - procedure success_have_count_collection; - - --%test(Gives failure for a non empty collection) - procedure fail_have_count_collection; - - --%test(Negated - Gives success for a non empty collection) - procedure success_not_have_count_coll; - - --%test(Negated - Gives failure for an empty collection) - procedure fail_not_have_count_coll; - - --%test(Gives failure for a NULL collection) - procedure fail_have_count_null_coll; - - --%test(Negated - Gives failure for an empty collection) - procedure fail_not_have_count_null_coll; - - --%test(Gives failure for an object) - procedure fail_have_count_object; - - --%test(Gives failure for a null object) - procedure fail_have_count_null_object; - - --%test(Gives failure for number) - procedure fail_have_count_number; - - --%test(Negated - Gives failure for an object) - procedure fail_not_have_count_object; - - --%test(Negated - Gives failure for a null object) - procedure fail_not_have_count_null_obj; - - --%test(Negated - Gives failure for number) - procedure fail_not_have_count_number; - -end; -/ diff --git a/test/core/min_grant_user/test_min_grant_user.pkb b/test/core/min_grant_user/test_min_grant_user.pkb deleted file mode 100644 index 233cca67f..000000000 --- a/test/core/min_grant_user/test_min_grant_user.pkb +++ /dev/null @@ -1,71 +0,0 @@ -create or replace package body test_min_grant_user is - - procedure test_join_by_cursor is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_cursor_grants.run_test_join_by_cursor(); end;'; - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%execute join by test [% sec]' || - '%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%' ); - - end; - - procedure test_equal_cursor is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_cursor_grants.run_test_equal_cursor(); end;'; - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%execute equal test [% sec]' || - '%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%' ); - - end; - - procedure test_not_empty_cursor is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_cursor_grants.run_test_not_empty_cursor(); end;'; - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%execute not_empty test [% sec]' || - '%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%' ); - - end; - - - procedure test_have_count_cursor is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_cursor_grants.run_test_have_count_cursor(); end;'; - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%execute have_count test [% sec]' || - '%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%' ); - - end; - - procedure test_empty_cursor is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_cursor_grants.run_test_empty_cursor(); end;'; - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%execute empty test [% sec]' || - '%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%' ); - - end; - - procedure test_equal_non_diff_sql is - l_results clob; - begin - execute immediate 'begin ut3$user#.test_cursor_grants.run_test_equal_non_diff_sql(); end;'; - l_results := core.get_dbms_output_as_clob(); - --Assert - ut.expect( l_results ).to_be_like( '%execute test with non diff datatype [% sec]' || - '%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%' ); - - end; - -end; -/ diff --git a/test/core/min_grant_user/test_min_grant_user.pks b/test/core/min_grant_user/test_min_grant_user.pks deleted file mode 100644 index daf34b35d..000000000 --- a/test/core/min_grant_user/test_min_grant_user.pks +++ /dev/null @@ -1,25 +0,0 @@ -create or replace package test_min_grant_user is - - --%suite(minimum grant user tests) - --%suitepath(utplsql.core) - - --%test(execute join by test) - procedure test_join_by_cursor; - - --%test(execute equal test) - procedure test_equal_cursor; - - --%test(execute not_empty test) - procedure test_not_empty_cursor; - - --%test(execute have_count test) - procedure test_have_count_cursor; - - --%test(execute empty test) - procedure test_empty_cursor; - - --%test(execute test with non diff datatype) - procedure test_equal_non_diff_sql; - -end; -/ diff --git a/test/core/reporters.pkb b/test/core/reporters.pkb deleted file mode 100644 index abd9e6007..000000000 --- a/test/core/reporters.pkb +++ /dev/null @@ -1,150 +0,0 @@ -create or replace package body reporters is - - procedure create_test_helper_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package test_reporters -as - --%suite(A suite for testing different outcomes from reporters) - --%suitepath(org.utplsql.tests.helpers) - - --%beforeall - procedure beforeall; - - --%beforeeach - procedure beforeeach; - - --%context(some_context) - --%displayname(A description of some context) - - --%test - --%beforetest(beforetest) - --%aftertest(aftertest) - procedure passing_test; - - --%endcontext - - procedure beforetest; - - procedure aftertest; - - --%test(a test with failing assertion) - procedure failing_test; - - --%test(a test raising unhandled exception) - procedure erroring_test; - - --%test(a disabled test) - --%disabled - procedure disabled_test; - - --%aftereach - procedure aftereach; - - --%afterall - procedure afterall; - -end;]'; - - execute immediate q'[create or replace package body test_reporters -as - - procedure beforetest is - begin - dbms_output.put_line(''); - end; - - procedure aftertest - is - begin - dbms_output.put_line(''); - end; - - procedure beforeeach is - begin - dbms_output.put_line(''); - end; - - procedure aftereach is - begin - dbms_output.put_line(''); - end; - - procedure passing_test - is - begin - dbms_output.put_line(''); - ut3.ut.expect(1,'Test 1 Should Pass').to_equal(1); - end; - - procedure failing_test - is - begin - dbms_output.put_line(''); - ut3.ut.expect('number [1] ','Fails as values are different').to_equal('number [2] '); - end; - - procedure erroring_test - is - l_variable integer; - begin - dbms_output.put_line(''); - l_variable := 'a string'; - ut3.ut.expect(l_variable).to_equal(1); - end; - - procedure disabled_test - is - begin - dbms_output.put_line(''); - ut3.ut.expect(1,'this should not execute').to_equal(1); - end; - - procedure beforeall is - begin - dbms_output.put_line(''); - end; - - procedure afterall is - begin - dbms_output.put_line(''); - end; - -end;]'; - - end; - - procedure reporters_setup is - begin - create_test_helper_package; - end; - - procedure drop_test_helper_package is - begin - execute immediate 'drop package test_reporters'; - end; - - procedure reporters_cleanup is - pragma autonomous_transaction; - begin - drop_test_helper_package; - end; - - procedure check_xml_encoding_included( - a_reporter ut3.ut_output_reporter_base, - a_client_character_set varchar2 - ) is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('test_reporters', a_reporter, a_client_character_set => a_client_character_set)); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%'); - end; - -end reporters; -/ diff --git a/test/core/reporters.pks b/test/core/reporters.pks deleted file mode 100644 index 229e4e9b1..000000000 --- a/test/core/reporters.pks +++ /dev/null @@ -1,18 +0,0 @@ -create or replace package reporters is - - --%suite - --%suitepath(utplsql.core) - - --%beforeall - procedure reporters_setup; - - --%afterall - procedure reporters_cleanup; - - procedure check_xml_encoding_included( - a_reporter ut3.ut_output_reporter_base, - a_client_character_set varchar2 - ); - -end reporters; -/ diff --git a/test/core/reporters/test_coverage.pkb b/test/core/reporters/test_coverage.pkb deleted file mode 100644 index 2c67dc8c9..000000000 --- a/test/core/reporters/test_coverage.pkb +++ /dev/null @@ -1,262 +0,0 @@ -create or replace package body test_coverage is - - function get_mock_run_id return integer is - v_result integer; - begin - select nvl(min(runid),0) - 1 into v_result - from ut3.plsql_profiler_runs; - return v_result; - end; - - procedure create_dummy_coverage_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package UT3.DUMMY_COVERAGE is - procedure do_stuff; - end;]'; - execute immediate q'[create or replace package body UT3.DUMMY_COVERAGE is - procedure do_stuff is - begin - if 1 = 2 then - dbms_output.put_line('should not get here'); - else - dbms_output.put_line('should get here'); - end if; - end; - end;]'; - end; - - procedure create_dummy_coverage_test is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package UT3.TEST_DUMMY_COVERAGE is - --%suite(dummy coverage test) - --%suitepath(coverage_testing) - - --%test - procedure test_do_stuff; - end;]'; - execute immediate q'[create or replace package body UT3.TEST_DUMMY_COVERAGE is - procedure test_do_stuff is - begin - dummy_coverage.do_stuff; - end; - end;]'; - end; - - procedure create_dummy_coverage_test_1 is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package UT3.DUMMY_COVERAGE_1 is - procedure do_stuff; - end;]'; - execute immediate q'[create or replace package body UT3.DUMMY_COVERAGE_1 is - procedure do_stuff is - begin - if 1 = 2 then - dbms_output.put_line('should not get here'); - else - dbms_output.put_line('should get here'); - end if; - end; - end;]'; - execute immediate q'[create or replace package UT3.TEST_DUMMY_COVERAGE_1 is - --%suite(dummy coverage test 1) - --%suitepath(coverage_testing) - - --%test - procedure test_do_stuff; - end;]'; - execute immediate q'[create or replace package body UT3.TEST_DUMMY_COVERAGE_1 is - procedure test_do_stuff is - begin - dummy_coverage_1.do_stuff; - end; - end;]'; - end; - - procedure drop_dummy_coverage_test_1 is - pragma autonomous_transaction; - begin - execute immediate q'[drop package UT3.DUMMY_COVERAGE_1]'; - execute immediate q'[drop package UT3.TEST_DUMMY_COVERAGE_1]'; - end; - - - procedure mock_coverage_data(a_run_id integer) is - c_unit_id constant integer := 1; - begin - insert into ut3.plsql_profiler_runs ( runid, run_owner, run_date, run_comment) - values(a_run_id, user, sysdate, 'unit testing utPLSQL'); - - insert into ut3.plsql_profiler_units ( runid, unit_number, unit_type, unit_owner, unit_name) - values(a_run_id, c_unit_id, 'PACKAGE BODY', 'UT3', 'DUMMY_COVERAGE'); - - insert into ut3.plsql_profiler_data ( runid, unit_number, line#, total_occur, total_time) - select a_run_id, c_unit_id, 4, 1, 1 from dual union all - select a_run_id, c_unit_id, 5, 0, 0 from dual union all - select a_run_id, c_unit_id, 7, 1, 1 from dual; - end; - - procedure create_dummy_coverage_pkg is - pragma autonomous_transaction; - begin - create_dummy_coverage_package(); - create_dummy_coverage_test(); - end; - - procedure setup_dummy_coverage is - pragma autonomous_transaction; - begin - g_run_id := get_mock_run_id(); - ut3.ut_coverage.mock_coverage_id(g_run_id, ut3.ut_coverage.gc_proftab_coverage); - mock_coverage_data(g_run_id); - commit; - end; - - procedure drop_dummy_coverage_pkg is - pragma autonomous_transaction; - begin - begin execute immediate q'[drop package ut3.test_dummy_coverage]'; exception when others then null; end; - begin execute immediate q'[drop package ut3.dummy_coverage]'; exception when others then null; end; - end; - - procedure cleanup_dummy_coverage is - pragma autonomous_transaction; - begin - delete from ut3.plsql_profiler_data where runid = g_run_id; - delete from ut3.plsql_profiler_units where runid = g_run_id; - delete from ut3.plsql_profiler_runs where runid = g_run_id; - commit; - end; - - procedure coverage_for_object is - l_expected clob; - l_actual clob; - l_results ut3.ut_varchar2_list; - begin - --Arrange - l_expected := '%%'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage' ) - ) - ); - --Assert - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure coverage_for_object_no_owner is - l_expected clob; - l_actual clob; - l_results ut3.ut_varchar2_list; - begin - --Arrange - l_expected := '%%'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_include_objects => ut3.ut_varchar2_list( 'dummy_coverage' ) - ) - ); - --Assert - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure coverage_for_schema is - l_expected clob; - l_actual clob; - l_results ut3.ut_varchar2_list; - begin - --Arrange - l_expected := ''; - l_expected := '%'||l_expected||'%'||l_expected||'%'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_coverage_schemes => ut3.ut_varchar2_list( 'ut3' ) - ) - ); - --Assert - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure coverage_for_file is - l_expected clob; - l_actual clob; - l_results ut3.ut_varchar2_list; - l_file_path varchar2(100); - begin - --Arrange - l_file_path := lower('test/ut3.dummy_coverage.pkb'); - l_expected := '%%'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_source_files => ut3.ut_varchar2_list( l_file_path ), - a_test_files => ut3.ut_varchar2_list( ) - ) - ); - --Assert - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure coverage_tmp_data_refresh is - l_actual clob; - l_results ut3.ut_varchar2_list; - begin - --Arrange - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3:coverage_testing', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage' ) - ) - ); - cleanup_dummy_coverage(); - drop_dummy_coverage_pkg(); - create_dummy_coverage_test_1; - - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3:coverage_testing', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage' ) - ) - ); - - --Assert - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_equal(to_clob(' - -')); - end; - -end; -/ diff --git a/test/core/reporters/test_coverage.pks b/test/core/reporters/test_coverage.pks deleted file mode 100644 index 51eb175ec..000000000 --- a/test/core/reporters/test_coverage.pks +++ /dev/null @@ -1,40 +0,0 @@ -create or replace package test_coverage is - - --%suite - --%suitepath(utplsql.core.reporters) - - g_run_id integer; - - --%beforeall - procedure create_dummy_coverage_pkg; - --%beforeall - procedure setup_dummy_coverage; - - - --%afterall - procedure drop_dummy_coverage_pkg; - --%afterall - procedure cleanup_dummy_coverage; - - - --%test(Coverage is gathered for specified object - default coverage type) - procedure coverage_for_object; - - --%test(Coverage is gathered for specified schema - default coverage type) - procedure coverage_for_object_no_owner; - - --%test(Coverage is gathered for specified schema) - procedure coverage_for_schema; - - --%test(Coverage is gathered for specified file - default coverage type) - procedure coverage_for_file; - - --%test(Coverage data is not cached between runs - issue #562 ) - --%aftertest(create_dummy_coverage_pkg) - --%aftertest(setup_dummy_coverage) - --%aftertest(drop_dummy_coverage_test_1) - procedure coverage_tmp_data_refresh; - - procedure drop_dummy_coverage_test_1; -end; -/ diff --git a/test/core/reporters/test_coverage/test_cov_cobertura_reporter.pkb b/test/core/reporters/test_coverage/test_cov_cobertura_reporter.pkb deleted file mode 100644 index cabf64e90..000000000 --- a/test/core/reporters/test_coverage/test_cov_cobertura_reporter.pkb +++ /dev/null @@ -1,45 +0,0 @@ -create or replace package body test_cov_cobertura_reporter is - - procedure report_on_file is - l_results ut3.ut_varchar2_list; - l_expected clob; - l_actual clob; - begin - --Arrange - l_expected := - q'[ - - - -test/ut3.dummy_coverage.pkb - - - - - - - - - - - - -]'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_cobertura_reporter( ), - a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), - a_test_files => ut3.ut_varchar2_list( ) - ) - ); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like(l_expected); - end; - -end; -/ diff --git a/test/core/reporters/test_coverage/test_cov_cobertura_reporter.pks b/test/core/reporters/test_coverage/test_cov_cobertura_reporter.pks deleted file mode 100644 index ac347fb9d..000000000 --- a/test/core/reporters/test_coverage/test_cov_cobertura_reporter.pks +++ /dev/null @@ -1,10 +0,0 @@ -create or replace package test_cov_cobertura_reporter is - - --%suite(ut_cov_cobertura_reporter) - --%suitepath(utplsql.core.reporters.test_coverage) - - --%test(reports on a project file mapped to database object) - procedure report_on_file; - -end test_cov_cobertura_reporter; -/ diff --git a/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pkb b/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pkb deleted file mode 100644 index 81b2c12f8..000000000 --- a/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pkb +++ /dev/null @@ -1,39 +0,0 @@ -create or replace package body test_coverage_sonar_reporter is - - procedure report_on_file is - l_results ut3.ut_varchar2_list; - l_expected clob; - l_actual clob; - begin - --Arrange - l_expected := ' - - - - - - -'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), - a_test_files => ut3.ut_varchar2_list( ) - ) - ); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_equal(l_expected); - end; - - procedure check_encoding_included is - begin - reporters.check_xml_encoding_included(ut3.ut_coverage_sonar_reporter(), 'UTF-8'); - end; - -end; -/ diff --git a/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pks b/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pks deleted file mode 100644 index 31cb358dd..000000000 --- a/test/core/reporters/test_coverage/test_coverage_sonar_reporter.pks +++ /dev/null @@ -1,13 +0,0 @@ -create or replace package test_coverage_sonar_reporter is - - --%suite(ut_coverge_sonar_reporter) - --%suitepath(utplsql.core.reporters.test_coverage) - - --%test(reports on a project file mapped to database object) - procedure report_on_file; - - --%test(Includes XML header with encoding when encoding provided) - procedure check_encoding_included; - -end; -/ diff --git a/test/core/reporters/test_coverage/test_coveralls_reporter.pkb b/test/core/reporters/test_coverage/test_coveralls_reporter.pkb deleted file mode 100644 index 774e796a0..000000000 --- a/test/core/reporters/test_coverage/test_coveralls_reporter.pkb +++ /dev/null @@ -1,85 +0,0 @@ -create or replace package body test_coveralls_reporter is - - procedure report_on_file is - l_results ut3.ut_varchar2_list; - l_expected clob; - l_actual clob; - begin - --Arrange - l_expected := q'[{"source_files":[ -{ "name": "test/ut3.dummy_coverage.pkb", -"coverage": [ -null, -null, -null, -1, -0, -null, -1 -] -} -]} - ]'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coveralls_reporter( ), - a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), - a_test_files => ut3.ut_varchar2_list( ) - ) - ); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_equal(l_expected); - end; - - procedure report_zero_coverage is - l_results ut3.ut_varchar2_list; - l_expected clob; - l_actual clob; - pragma autonomous_transaction; - begin - --Arrange - l_expected := q'[{"source_files":[ -{ "name": "ut3.dummy_coverage", -"coverage": [ -0, -0, -0, -0, -0, -0, -0, -0, -0, -0 -] -} -]} - ]'; - - test_coverage.cleanup_dummy_coverage; - - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - 'ut3.test_dummy_coverage', - ut3.ut_coveralls_reporter(), - a_include_objects => ut3.ut_varchar2_list('UT3.DUMMY_COVERAGE') - ) - ); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_equal(l_expected); - - test_coverage.setup_dummy_coverage; - - end; - -end; -/ diff --git a/test/core/reporters/test_coverage/test_coveralls_reporter.pks b/test/core/reporters/test_coverage/test_coveralls_reporter.pks deleted file mode 100644 index bf2b861f7..000000000 --- a/test/core/reporters/test_coverage/test_coveralls_reporter.pks +++ /dev/null @@ -1,13 +0,0 @@ -create or replace package test_coveralls_reporter is - - --%suite(ut_coveralls_reporter) - --%suitepath(utplsql.core.reporters.test_coverage) - - --%test(reports on a project file mapped to database object) - procedure report_on_file; - - --%test(reports zero coverage on each line of non-executed database object) - procedure report_zero_coverage; - -end; -/ diff --git a/test/core/reporters/test_coverage/test_html_extended_reporter.pkb b/test/core/reporters/test_coverage/test_html_extended_reporter.pkb deleted file mode 100644 index 19e1fe807..000000000 --- a/test/core/reporters/test_coverage/test_html_extended_reporter.pkb +++ /dev/null @@ -1,29 +0,0 @@ -create or replace package body test_html_extended_reporter is - - procedure report_on_file is - l_results ut3.ut_varchar2_list; - l_expected varchar2(32767); - l_actual clob; - l_charset varchar2(100) := 'ISO-8859-1'; - begin - --Arrange - l_expected := '%%

UT3.DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG

%4 relevant lines. 3 lines covered (including 1 lines partially covered ) and 1 lines missed%'; - - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_html_reporter(), - a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long.pkb' ), - a_test_files => ut3.ut_varchar2_list( ), - a_client_character_set => l_charset - ) - ); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like(l_expected); - end; - -end test_html_extended_reporter; -/ diff --git a/test/core/reporters/test_coverage/test_html_extended_reporter.pks b/test/core/reporters/test_coverage/test_html_extended_reporter.pks deleted file mode 100644 index cefa71d66..000000000 --- a/test/core/reporters/test_coverage/test_html_extended_reporter.pks +++ /dev/null @@ -1,10 +0,0 @@ -create or replace package test_html_extended_reporter is - - --%suite(ut_html_extended_reporter) - --%suitepath(utplsql.core.reporters.test_extended_coverage) - - --%test(reports on a project file mapped to database object in extended profiler coverage) - procedure report_on_file; - -end test_html_extended_reporter; -/ diff --git a/test/core/reporters/test_coverage/test_html_proftab_reporter.pkb b/test/core/reporters/test_coverage/test_html_proftab_reporter.pkb deleted file mode 100644 index c10af2869..000000000 --- a/test/core/reporters/test_coverage/test_html_proftab_reporter.pkb +++ /dev/null @@ -1,29 +0,0 @@ -create or replace package body test_html_proftab_reporter is - - procedure report_on_file is - l_results ut3.ut_varchar2_list; - l_expected varchar2(32767); - l_actual clob; - l_charset varchar2(100) := 'ISO-8859-1'; - begin - --Arrange - l_expected := '%%

UT3.DUMMY_COVERAGE

%3 relevant lines. 2 lines covered and 1 lines missed%'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_html_reporter(), - a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), - a_test_files => ut3.ut_varchar2_list( ), - a_client_character_set => l_charset - ) - ); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like(l_expected); - end; - -end test_html_proftab_reporter; -/ diff --git a/test/core/reporters/test_coverage/test_html_proftab_reporter.pks b/test/core/reporters/test_coverage/test_html_proftab_reporter.pks deleted file mode 100644 index d091510c6..000000000 --- a/test/core/reporters/test_coverage/test_html_proftab_reporter.pks +++ /dev/null @@ -1,10 +0,0 @@ -create or replace package test_html_proftab_reporter is - - --%suite(ut_html_proftab_reporter) - --%suitepath(utplsql.core.reporters.test_coverage) - - --%test(reports on a project file mapped to database object in profiler coverage) - procedure report_on_file; - -end test_html_proftab_reporter; -/ diff --git a/test/core/reporters/test_debug_reporter.pkb b/test/core/reporters/test_debug_reporter.pkb deleted file mode 100644 index d82685ac4..000000000 --- a/test/core/reporters/test_debug_reporter.pkb +++ /dev/null @@ -1,45 +0,0 @@ -create or replace package body test_debug_reporter as - - g_actual clob; - - procedure run_reporter is - l_results ut3.ut_varchar2_list; - begin - select * - bulk collect into l_results - from table( - ut3.ut.run( - 'test_reporters', - ut3.ut_debug_reporter() - ) - ); - g_actual := ut3.ut_utils.table_to_clob(l_results); - end; - - procedure includes_event_info is - l_expected varchar2(32767); - begin - l_expected := '\s+' || - '(\s+' || - '[0-9\-]+T[0-9:\.]+<\/TIMESTAMP>\s+' || - '[0-9 \+:\.]+<\/TIME_FROM_START>\s+' || - '[0-9 \+:\.]+<\/TIME_FROM_PREVIOUS>\s+' || - '\w+<\/EVENT_NAME>\s+' || - '(\s|\S)+?<\/CALL_STACK>(\s|\S)+?' || - '<\/DEBUG>\s+)+' || - '<\/DEBUG_LOG>'; - ut.expect( g_actual ).to_match( l_expected, 'm' ); - end; - - procedure includes_run_info is - l_expected varchar2(32767); - begin - l_expected := '(\s|\S)+?(\s|\S)+?<\/UT_RUN_INFO>\s+<\/DEBUG>'; - ut.expect( g_actual ).to_match( l_expected, 'm' ); - end; - - -end; -/ - - diff --git a/test/core/reporters/test_debug_reporter.pks b/test/core/reporters/test_debug_reporter.pks deleted file mode 100644 index d4ba20a62..000000000 --- a/test/core/reporters/test_debug_reporter.pks +++ /dev/null @@ -1,16 +0,0 @@ -create or replace package test_debug_reporter as - - --%suite(ut_debug_reporter) - --%suitepath(utplsql.core.reporters) - - --%beforeall - procedure run_reporter; - - --%test(Includes event info for every event) - procedure includes_event_info; - - --%test(Includes run info) - procedure includes_run_info; - -end; -/ diff --git a/test/core/reporters/test_documentation_reporter.pkb b/test/core/reporters/test_documentation_reporter.pkb deleted file mode 100644 index 7045aa7ca..000000000 --- a/test/core/reporters/test_documentation_reporter.pkb +++ /dev/null @@ -1 +0,0 @@ -create or replace package body test_documentation_reporter as procedure report_produces_expected_out is l_results ut3.ut_varchar2_list; l_actual clob; l_expected varchar2(32767):=q'[%org utplsql tests helpers A suite for testing different outcomes from reporters A description of some context passing_test [% sec] a test with failing assertion [% sec] (FAILED - 1) a test raising unhandled exception [% sec] (FAILED - 2) a disabled test [0 sec] (DISABLED) % Failures: % 1) failing_test "Fails as values are different" Actual: 'number [1] ' (varchar2) was expected to equal: 'number [2] ' (varchar2)% at "UT3_TESTER.TEST_REPORTERS%", line 36 ut3.ut.expect('number [1] ','Fails as values are different').to_equal('number [2] '); % % 2) erroring_test ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at "UT3_TESTER.TEST_REPORTERS", line 44% ORA-06512: at line 6 Finished in % seconds 4 tests, 1 failed, 1 errored, 1 disabled, 0 warning(s)%]'; begin select * bulk collect into l_results from table( ut3.ut.run( 'test_reporters', ut3.ut_documentation_reporter() ) ); l_actual := ut3.ut_utils.table_to_clob(l_results); ut.expect(l_actual).to_be_like(l_expected); end; procedure check_encoding_included is begin reporters.check_xml_encoding_included(ut3.ut_sonar_test_reporter(), 'UTF-8'); end; end; / \ No newline at end of file diff --git a/test/core/reporters/test_documentation_reporter.pks b/test/core/reporters/test_documentation_reporter.pks deleted file mode 100644 index 09835abdc..000000000 --- a/test/core/reporters/test_documentation_reporter.pks +++ /dev/null @@ -1,10 +0,0 @@ -create or replace package test_documentation_reporter as - - --%suite(ut_documentation_reporter) - --%suitepath(utplsql.core.reporters) - - --%test(Report produces expected output) - procedure report_produces_expected_out; - -end; -/ diff --git a/test/core/reporters/test_extended_coverage.pkb b/test/core/reporters/test_extended_coverage.pkb deleted file mode 100644 index a3719e503..000000000 --- a/test/core/reporters/test_extended_coverage.pkb +++ /dev/null @@ -1,188 +0,0 @@ -create or replace package body test_extended_coverage is - - g_run_id ut3.ut_coverage.tt_coverage_id_arr; - - function get_mock_block_run_id return integer is - v_result integer; - begin - select nvl(min(run_id),0) - 1 into v_result - from dbmspcc_runs; - return v_result; - end; - - function get_mock_proftab_run_id return integer is - v_result integer; - begin - select nvl(min(runid),0) - 1 into v_result - from ut3.plsql_profiler_runs; - return v_result; - end; - - procedure create_dummy_coverage_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package UT3.DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG is - procedure do_stuff(i_input in number); - end;]'; - execute immediate q'[create or replace package body UT3.DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG is - procedure do_stuff(i_input in number) is - begin - if i_input = 2 then - dbms_output.put_line('should not get here'); - else - dbms_output.put_line('should get here'); - end if; - end; - end;]'; - end; - - procedure create_dummy_coverage_test is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package UT3.TEST_DUMMY_COVERAGE is - --%suite(dummy coverage test) - --%suitepath(coverage_testing) - - --%test - procedure test_do_stuff; - end;]'; - execute immediate q'[create or replace package body UT3.TEST_DUMMY_COVERAGE is - procedure test_do_stuff is - begin - dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long.do_stuff(1); - ut.expect(1).to_equal(1); - end; - end;]'; - end; - - procedure mock_block_coverage_data(a_run_id integer) is - c_unit_id constant integer := 1; - begin - insert into dbmspcc_runs ( run_id, run_owner, run_timestamp, run_comment) - values(a_run_id, user, sysdate, 'unit testing utPLSQL'); - - insert into dbmspcc_units ( run_id, object_id, type, owner, name,last_ddl_time) - values(a_run_id, c_unit_id, 'PACKAGE BODY', 'UT3', 'DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG',sysdate); - - insert into dbmspcc_blocks ( run_id, object_id, line,block,col,covered,not_feasible) - select a_run_id, c_unit_id,4,1,1,1,0 from dual union all - select a_run_id, c_unit_id,4,2,2,0,0 from dual union all - select a_run_id, c_unit_id,5,3,0,1,0 from dual union all - select a_run_id, c_unit_id,7,4,1,1,0 from dual; - end; - - procedure mock_profiler_coverage_data(a_run_id integer) is - c_unit_id constant integer := 1; - begin - insert into ut3.plsql_profiler_runs ( runid, run_owner, run_date, run_comment) - values(a_run_id, user, sysdate, 'unit testing utPLSQL'); - - insert into ut3.plsql_profiler_units ( runid, unit_number, unit_type, unit_owner, unit_name) - values(a_run_id, c_unit_id, 'PACKAGE BODY', 'UT3', 'DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG'); - - insert into ut3.plsql_profiler_data ( runid, unit_number, line#, total_occur, total_time) - select a_run_id, c_unit_id, 4, 1, 1 from dual union all - select a_run_id, c_unit_id, 5, 0, 0 from dual union all - select a_run_id, c_unit_id, 6, 1, 0 from dual union all - select a_run_id, c_unit_id, 7, 1, 1 from dual; - end; - - procedure setup_dummy_coverage is - pragma autonomous_transaction; - begin - create_dummy_coverage_package(); - create_dummy_coverage_test(); - g_run_id(ut3.ut_coverage.gc_block_coverage) := get_mock_block_run_id(); - g_run_id(ut3.ut_coverage.gc_proftab_coverage) := get_mock_proftab_run_id(); - ut3.ut_coverage.mock_coverage_id(g_run_id); - mock_block_coverage_data(g_run_id(ut3.ut_coverage.gc_block_coverage)); - mock_profiler_coverage_data(g_run_id(ut3.ut_coverage.gc_proftab_coverage)); - commit; - end; - - procedure cleanup_dummy_coverage is - pragma autonomous_transaction; - begin - begin execute immediate q'[drop package ut3.test_dummy_coverage]'; exception when others then null; end; - begin execute immediate q'[drop package ut3.dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long]'; exception when others then null; end; - delete from dbmspcc_blocks where run_id = g_run_id(ut3.ut_coverage.gc_block_coverage); - delete from dbmspcc_units where run_id = g_run_id(ut3.ut_coverage.gc_block_coverage); - delete from dbmspcc_runs where run_id = g_run_id(ut3.ut_coverage.gc_block_coverage); - delete from ut3.plsql_profiler_data where runid = g_run_id(ut3.ut_coverage.gc_proftab_coverage); - delete from ut3.plsql_profiler_units where runid = g_run_id(ut3.ut_coverage.gc_proftab_coverage); - delete from ut3.plsql_profiler_runs where runid = g_run_id(ut3.ut_coverage.gc_proftab_coverage); - commit; - end; - - procedure coverage_for_object is - l_expected clob; - l_actual clob; - l_results ut3.ut_varchar2_list; - begin - --Arrange - l_expected := '%%%'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long' ) - ) - ); - --Assert - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure coverage_for_schema is - l_expected clob; - l_actual clob; - l_results ut3.ut_varchar2_list; - begin - --Arrange - l_expected := '%%%'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_coverage_schemes => ut3.ut_varchar2_list( 'ut3' ) - ) - ); - --Assert - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - ut.expect(l_actual).to_be_like('%%%'); - end; - - procedure coverage_for_file is - l_expected clob; - l_actual clob; - l_results ut3.ut_varchar2_list; - l_file_path varchar2(250); - begin - --Arrange - l_file_path := lower('test/ut3.dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long.pkb'); - l_expected := '%%%'; - --Act - select * - bulk collect into l_results - from table( - ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', - a_reporter=> ut3.ut_coverage_sonar_reporter( ), - a_source_files => ut3.ut_varchar2_list( l_file_path ), - a_test_files => ut3.ut_varchar2_list( ) - ) - ); - --Assert - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - -end; -/ diff --git a/test/core/reporters/test_extended_coverage.pks b/test/core/reporters/test_extended_coverage.pks deleted file mode 100644 index 6d85a4a30..000000000 --- a/test/core/reporters/test_extended_coverage.pks +++ /dev/null @@ -1,22 +0,0 @@ -create or replace package test_extended_coverage is - - --%suite - --%suitepath(utplsql.core.reporters) - - --%beforeall - procedure setup_dummy_coverage; - - --%afterall - procedure cleanup_dummy_coverage; - - --%test(Coverage is gathered for specified object - extended coverage type) - procedure coverage_for_object; - - --%test(Coverage is gathered for specified schema - extended coverage type) - procedure coverage_for_schema; - - --%test(Coverage is gathered for specified file - extended coverage type) - procedure coverage_for_file; - -end; -/ diff --git a/test/core/reporters/test_junit_reporter.pkb b/test/core/reporters/test_junit_reporter.pkb deleted file mode 100644 index e0a7ea00d..000000000 --- a/test/core/reporters/test_junit_reporter.pkb +++ /dev/null @@ -1,353 +0,0 @@ -create or replace package body test_junit_reporter as - - procedure create_a_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package check_junit_reporting is - --%suite(A suite with ) - - --%test(A test with ) - procedure test_do_stuff; - - end;]'; - execute immediate q'[create or replace package body check_junit_reporting is - procedure test_do_stuff is - begin - ut3.ut.expect(1).to_equal(1); - ut3.ut.expect(1).to_equal(2); - end; - - end;]'; - - execute immediate q'[create or replace package check_junit_rep_suitepath is - --%suitepath(core) - --%suite(check_junit_rep_suitepath) - --%displayname(Check junit Get path for suitepath) - - --%test(check_junit_rep_suitepath) - --%displayname(Check junit Get path for suitepath) - procedure check_junit_rep_suitepath; - end;]'; - execute immediate q'[create or replace package body check_junit_rep_suitepath is - procedure check_junit_rep_suitepath is - begin - ut3.ut.expect(1).to_equal(1); - end; - end;]'; - - - execute immediate q'[create or replace package tst_package_junit_nodesc as - --%suite(Suite name) - - --%test - procedure test1; - - --%test(Test name) - procedure test2; - end;]'; - - execute immediate q'[create or replace package body tst_package_junit_nodesc as - procedure test1 is begin ut.expect(1).to_equal(1); end; - procedure test2 is begin ut.expect(1).to_equal(1); end; - end;]'; - - execute immediate q'[create or replace package tst_package_junit_nosuite as - --%suite - - --%test(Test name) - procedure test1; - end;]'; - - execute immediate q'[create or replace package body tst_package_junit_nosuite as - procedure test1 is begin ut.expect(1).to_equal(1); end; - end;]'; - - execute immediate q'[create or replace package Tst_Fix_Case_Sensitive as - --%suite - - --%test(bugfix) - procedure bUgFiX; - end;]'; - - execute immediate q'[create or replace package body Tst_Fix_Case_Sensitive as - procedure bUgFiX is begin ut.expect(1).to_equal(1); end; - end;]'; - - execute immediate q'[create or replace package check_fail_escape is - --%suitepath(core) - --%suite(checkfailedescape) - --%displayname(Check JUNIT XML failure is escaped) - - --%test(Fail Miserably) - procedure fail_miserably; - - end;]'; - - execute immediate q'[create or replace package body check_fail_escape is - procedure fail_miserably is - begin - ut3.ut.expect('test').to_equal(''); - end; - end;]'; - - end; - - procedure escapes_special_chars is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).not_to_be_like('%%'); - ut.expect(l_actual).to_be_like('%<tag>%'); - end; - - procedure reports_only_failed_or_errored is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).not_to_be_like('%Actual: 1 (number) was expected to equal: 1 (number)%'); - ut.expect(l_actual).to_be_like('%Actual: 1 (number) was expected to equal: 2 (number)%'); - end; - - procedure reports_xunit_only_fail_or_err is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting',ut3.ut_xunit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).not_to_be_like('%Actual: 1 (number) was expected to equal: 1 (number)%'); - ut.expect(l_actual).to_be_like('%Actual: 1 (number) was expected to equal: 2 (number)%'); - end; - - procedure reports_failed_line is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%at "%.CHECK_JUNIT_REPORTING%", line %'); - end; - - procedure check_classname_suite is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%testcase classname="check_junit_reporting" assertions="%" name="%"%'); - end; - - procedure check_nls_number_formatting is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_nls_numeric_characters varchar2(30); - begin - --Arrange - select replace(nsp.value,'''','''''') into l_nls_numeric_characters - from nls_session_parameters nsp - where parameter = 'NLS_NUMERIC_CHARACTERS'; - execute immediate q'[alter session set NLS_NUMERIC_CHARACTERS=', ']'; - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting', ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_match('time="[0-9]*\.[0-9]{3,6}"'); - --Cleanup - execute immediate 'alter session set NLS_NUMERIC_CHARACTERS='''||l_nls_numeric_characters||''''; - end; - - procedure check_classname_suitepath is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_rep_suitepath',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%testcase classname="core.check_junit_rep_suitepath" assertions="%" name="%"%'); - end; - - procedure report_test_without_desc is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_expected varchar2(32767):= q'[ - - - - - - - - - - - - - -]'; - begin - select * - bulk collect into l_results - from table(ut3.ut.run('tst_package_junit_nodesc',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure report_suite_without_desc is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_expected varchar2(32767):= q'[ - - - - - - - - - -]'; - begin - select * - bulk collect into l_results - from table(ut3.ut.run('tst_package_junit_nosuite',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure reporort_produces_expected_out is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_expected varchar2(32767):=q'[ - - - - - - - - -% - - - - - - - -%Fails as values are different% - -% - - - - -%ORA-06502:% - -% - - - - - - - - -% - - - - - - - -]'; - - begin - select * - bulk collect into l_results - from table(ut3.ut.run('test_reporters',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure check_failure_escaped is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_fail_escape',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%Actual: 'test' (varchar2) was expected to equal: '<![CDATA[some stuff]]>' (varchar2)%'); - end; - - procedure check_classname_is_populated is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_expected varchar2(32767):= q'[ - - - - - - - - - -]'; - begin - select * - bulk collect into l_results - from table(ut3.ut.run('Tst_Fix_Case_Sensitive',ut3.ut_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure check_encoding_included is - begin - reporters.check_xml_encoding_included(ut3.ut_junit_reporter(), 'UTF-8'); - end; - - procedure remove_test_package is - pragma autonomous_transaction; - begin - execute immediate 'drop package check_junit_reporting'; - execute immediate 'drop package check_junit_rep_suitepath'; - execute immediate 'drop package tst_package_junit_nodesc'; - execute immediate 'drop package tst_package_junit_nosuite'; - execute immediate 'drop package check_fail_escape'; - execute immediate 'drop package Tst_Fix_Case_Sensitive'; - end; - -end; -/ diff --git a/test/core/reporters/test_junit_reporter.pks b/test/core/reporters/test_junit_reporter.pks deleted file mode 100644 index b39c5ff03..000000000 --- a/test/core/reporters/test_junit_reporter.pks +++ /dev/null @@ -1,51 +0,0 @@ -create or replace package test_junit_reporter as - - --%suite(ut_junit_reporter) - --%suitepath(utplsql.core.reporters) - - --%beforeall - procedure create_a_test_package; - - --%test(Escapes special characters from test and suite description) - procedure escapes_special_chars; - - --%test(Reports only failed expectations and exceptions) - procedure reports_only_failed_or_errored; - - --%test(Xunit Backward Compatibility - Reports only failed expectations and exceptions) - procedure reports_xunit_only_fail_or_err; - - --%test(Reports failed line of test) - procedure reports_failed_line; - - --%test(Check that classname is returned correct suite) - procedure check_classname_suite; - - --%test(Check that classname is returned correct suitepath) - procedure check_classname_suitepath; - - --%test(Reports duration according to XML specification for numbers) - procedure check_nls_number_formatting; - - --%test(Report on test without description) - procedure report_test_without_desc; - - --%test(Report on suite without description) - procedure report_suite_without_desc; - - --%test(Report produces expected output) - procedure reporort_produces_expected_out; - - --%test( Check classname is populated when procedure is mixed cased - bug #659) - procedure check_classname_is_populated; - - --%test( Validate that fail with special char are escaped ) - procedure check_failure_escaped; - - --%test(Includes XML header with encoding when encoding provided) - procedure check_encoding_included; - - --%afterall - procedure remove_test_package; -end; -/ diff --git a/test/core/reporters/test_realtime_reporter.pkb b/test/core/reporters/test_realtime_reporter.pkb deleted file mode 100644 index c4ceb9d5d..000000000 --- a/test/core/reporters/test_realtime_reporter.pkb +++ /dev/null @@ -1,401 +0,0 @@ -create or replace package body test_realtime_reporter as - - g_events test_event_list := test_event_list(); - - procedure create_test_suites_and_run is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package check_realtime_reporting1 is - --%suite(suite ) - --%suitepath(realtime_reporting) - - --%context(test context) - - --%test(test 1 - OK) - procedure test_1_ok; - - --%test(test 2 - NOK) - procedure test_2_nok; - - --%endcontext - end;]'; - execute immediate q'[create or replace package body check_realtime_reporting1 is - procedure test_1_ok is - begin - ut3.ut.expect(1).to_equal(1); - end; - - procedure test_2_nok is - begin - ut3.ut.expect(1).to_equal(2); - end; - end;]'; - - execute immediate q'[create or replace package check_realtime_reporting2 is - --%suite - --%suitepath(realtime_reporting) - - --%test - procedure test_3_ok; - - --%test - procedure test_4_nok; - - --%test - --%disabled - procedure test_5; - end;]'; - execute immediate q'[create or replace package body check_realtime_reporting2 is - procedure test_3_ok is - begin - ut3.ut.expect(2).to_equal(2); - end; - - procedure test_4_nok is - begin - ut3.ut.expect(2).to_equal(3); - ut3.ut.expect(2).to_equal(4); - end; - - procedure test_5 is - begin - null; - end; - end;]'; - - execute immediate q'[create or replace package check_realtime_reporting3 is - --%suite - --%suitepath(realtime_reporting) - - --%test - procedure test_6_with_runtime_error; - - --%test - procedure test_7_with_serveroutput; - - --%afterall - procedure print_and_raise; - end;]'; - execute immediate q'[create or replace package body check_realtime_reporting3 is - procedure test_6_with_runtime_error is - l_actual integer; - begin - execute immediate 'select 6 from non_existing_table' into l_actual; - ut3.ut.expect(6).to_equal(l_actual); - end; - - procedure test_7_with_serveroutput is - begin - dbms_output.put_line('before test 7'); - ut3.ut.expect(7).to_equal(7); - dbms_output.put_line('after test 7'); - end; - - procedure print_and_raise is - begin - dbms_output.put_line('Now, a no_data_found exception is raised'); - dbms_output.put_line('dbms_output and error stack is reported for this suite.'); - dbms_output.put_line('A runtime error in afterall is counted as a warning.'); - raise no_data_found; - end; - end;]'; - - <> - declare - l_reporter ut3.ut_realtime_reporter := ut3.ut_realtime_reporter(); - begin - -- produce - ut3.ut_runner.run( - a_paths => ut3.ut_varchar2_list(':realtime_reporting'), - a_reporters => ut3.ut_reporters(l_reporter) - ); - -- consume - select test_event_object(item_type, xmltype(text)) - bulk collect into g_events - from table(ut3.ut_output_table_buffer(l_reporter.output_buffer.output_id).get_lines()) - where trim(text) is not null and item_type is not null; - end run_report_and_cache_result; - end create_test_suites_and_run; - - procedure xml_report_structure is - l_actual sys_refcursor; - l_expected sys_refcursor; - begin - open l_actual for - select t.event_doc.extract('/event/@type').getstringval() as event_type, - t.event_doc.extract('/event/suite/@id|/event/test/@id').getstringval() as item_id - from table(g_events) t; - open l_expected for - select 'pre-run' as event_type, null as item_id from dual union all - select 'pre-suite' as event_type, 'realtime_reporting' as item_id from dual union all - select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting3' as item_id from dual union all - select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error' as item_id from dual union all - select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error' as item_id from dual union all - select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput' as item_id from dual union all - select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput' as item_id from dual union all - select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting3' as item_id from dual union all - select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting2' as item_id from dual union all - select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_3_ok' as item_id from dual union all - select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_3_ok' as item_id from dual union all - select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_4_nok' as item_id from dual union all - select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_4_nok' as item_id from dual union all - select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_5' as item_id from dual union all - select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_5' as item_id from dual union all - select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting2' as item_id from dual union all - select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting1' as item_id from dual union all - select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting1.test context' as item_id from dual union all - select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_1_ok' as item_id from dual union all - select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_1_ok' as item_id from dual union all - select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok' as item_id from dual union all - select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok' as item_id from dual union all - select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting1.test context' as item_id from dual union all - select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting1' as item_id from dual union all - select 'post-suite' as event_type, 'realtime_reporting' as item_id from dual union all - select 'post-run' as event_type, null as item_id from dual; - ut.expect(l_actual).to_equal(l_expected); - end xml_report_structure; - - procedure pre_run_composite_nodes is - l_actual sys_refcursor; - l_expected sys_refcursor; - begin - open l_actual for - select x.node_path - from table(g_events) t, - xmltable( - q'[ - for $i in //(event|items|suite|test) - return {$i/string-join(ancestor-or-self::*/name(.), '/')} - ]' - passing t.event_doc - columns node_path varchar2(128) path '.' - ) x - where event_type = 'pre-run'; - open l_expected for - select 'event' as node_path from dual union all - select 'event/items' as node_path from dual union all - select 'event/items/suite' as node_path from dual union all - select 'event/items/suite/items' as node_path from dual union all - select 'event/items/suite/items/suite' as node_path from dual union all - select 'event/items/suite/items/suite/items' as node_path from dual union all - select 'event/items/suite/items/suite/items/test' as node_path from dual union all - select 'event/items/suite/items/suite/items/test' as node_path from dual union all - select 'event/items/suite/items/suite' as node_path from dual union all - select 'event/items/suite/items/suite/items' as node_path from dual union all - select 'event/items/suite/items/suite/items/test' as node_path from dual union all - select 'event/items/suite/items/suite/items/test' as node_path from dual union all - select 'event/items/suite/items/suite/items/test' as node_path from dual union all - select 'event/items/suite/items/suite' as node_path from dual union all - select 'event/items/suite/items/suite/items' as node_path from dual union all - select 'event/items/suite/items/suite/items/suite' as node_path from dual union all - select 'event/items/suite/items/suite/items/suite/items' as node_path from dual union all - select 'event/items/suite/items/suite/items/suite/items/test' as node_path from dual union all - select 'event/items/suite/items/suite/items/suite/items/test' as node_path from dual; - ut.expect(l_actual).to_equal(l_expected); - end pre_run_composite_nodes; - - procedure total_number_of_tests is - l_actual integer; - l_expected integer := 7; - begin - select t.event_doc.extract('/event/totalNumberOfTests/text()').getnumberval() - into l_actual - from table(g_events) t - where t.event_type = 'pre-run'; - ut.expect(l_actual).to_equal(l_expected); - end total_number_of_tests; - - procedure execution_time_of_run is - l_actual number; - begin - select t.event_doc.extract('/event/run/executionTime/text()').getnumberval() - into l_actual - from table(g_events) t - where t.event_type = 'post-run'; - ut.expect(l_actual).to_be_not_null; - end execution_time_of_run; - - procedure escaped_characters is - l_actual varchar2(32767); - l_expected varchar2(20) := 'suite <A>'; - begin - select t.event_doc.extract( - '//suite[@id="realtime_reporting.check_realtime_reporting1"]/description/text()' - ).getstringval() - into l_actual - from table(g_events) t - where t.event_type = 'pre-run'; - ut.expect(l_actual).to_equal(l_expected); - end escaped_characters; - - procedure pre_test_nodes is - l_actual sys_refcursor; - l_expected sys_refcursor; - begin - open l_actual for - select t.event_doc.extract('//test/testNumber/text()') - .getnumberval() as test_number, - t.event_doc.extract('//test/totalNumberOfTests/text()') - .getnumberval() as total_number_of_tests - from table(g_events) t - where t.event_type = 'pre-test' - and t.event_doc.extract('//test/@id').getstringval() is not null; - open l_expected for - select level as test_number, - 7 as total_number_of_tests - from dual - connect by level <= 7; - ut.expect(l_actual).to_equal(l_expected).unordered; - end pre_test_nodes; - - procedure post_test_nodes is - l_actual sys_refcursor; - l_expected sys_refcursor; - begin - open l_actual for - select t.event_doc.extract('//test/testNumber/text()') - .getnumberval() as test_number, - t.event_doc.extract('//test/totalNumberOfTests/text()') - .getnumberval() as total_number_of_tests - from table(g_events) t - where t.event_type = 'post-test' - and t.event_doc.extract('//test/@id').getstringval() is not null - and t.event_doc.extract('//test/startTime/text()').getstringval() is not null - and t.event_doc.extract('//test/endTime/text()').getstringval() is not null - and t.event_doc.extract('//test/executionTime/text()').getnumberval() is not null - and t.event_doc.extract('//test/counter/disabled/text()').getnumberval() is not null - and t.event_doc.extract('//test/counter/success/text()').getnumberval() is not null - and t.event_doc.extract('//test/counter/failure/text()').getnumberval() is not null - and t.event_doc.extract('//test/counter/error/text()').getnumberval() is not null - and t.event_doc.extract('//test/counter/warning/text()').getnumberval() is not null; - open l_expected for - select level as test_number, - 7 as total_number_of_tests - from dual - connect by level <= 7; - ut.expect(l_actual).to_equal(l_expected).unordered; - end post_test_nodes; - - procedure single_failed_message is - l_actual varchar2(32767); - l_expected varchar2(80) := ''; - begin - select t.event_doc.extract( - '/event/test/failedExpectations/expectation[1]/message/text()' - ).getstringval() - into l_actual - from table(g_events) t - where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval() - = 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok'; - ut.expect(l_actual).to_equal(l_expected); - end single_failed_message; - - procedure multiple_failed_messages is - l_actual integer; - l_expected integer := 2; - begin - select count(*) - into l_actual - from table(g_events) t, - xmltable( - '/event/test/failedExpectations/expectation' - passing t.event_doc - columns message clob path 'message', - caller clob path 'caller' - ) x - where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval() - = 'realtime_reporting.check_realtime_reporting2.test_4_nok' - and x.message is not null - and x.caller is not null; - ut.expect(l_actual).to_equal(l_expected); - end multiple_failed_messages; - - procedure serveroutput_of_test is - l_actual clob; - l_expected_list ut3.ut_varchar2_list; - l_expected clob; - begin - select t.event_doc.extract('//event/test/serverOutput/text()').getstringval() - into l_actual - from table(g_events) t - where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval() - = 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput'; - ut3.ut_utils.append_to_list(l_expected_list, ''); - l_expected := ut3.ut_utils.table_to_clob(l_expected_list); - ut.expect(l_actual).to_equal(l_expected); - end serveroutput_of_test; - - procedure serveroutput_of_testsuite is - l_actual clob; - l_expected_list ut3.ut_varchar2_list; - l_expected clob; - begin - select t.event_doc.extract('//event/suite/serverOutput/text()').getstringval() - into l_actual - from table(g_events) t - where t.event_doc.extract('/event[@type="post-suite"]/suite/@id').getstringval() - = 'realtime_reporting.check_realtime_reporting3'; - ut3.ut_utils.append_to_list(l_expected_list, ''); - l_expected := ut3.ut_utils.table_to_clob(l_expected_list); - ut.expect(l_actual).to_equal(l_expected); - end serveroutput_of_testsuite; - - procedure error_stack_of_test is - l_actual clob; - l_expected_list ut3.ut_varchar2_list; - l_expected clob; - begin - select t.event_doc.extract('//event/test/errorStack/text()').getstringval() - into l_actual - from table(g_events) t - where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval() - = 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error'; - ut3.ut_utils.append_to_list(l_expected_list, ''); - l_expected := ut3.ut_utils.table_to_clob(l_expected_list); - ut.expect(l_actual).to_be_like(l_expected); - end error_stack_of_test; - - procedure error_stack_of_testsuite is - l_actual clob; - l_expected_list ut3.ut_varchar2_list; - l_expected clob; - begin - select t.event_doc.extract('//event/suite/errorStack/text()').getstringval() - into l_actual - from table(g_events) t - where t.event_doc.extract('/event[@type="post-suite"]/suite/@id').getstringval() - = 'realtime_reporting.check_realtime_reporting3'; - ut3.ut_utils.append_to_list(l_expected_list, ''); - l_expected := ut3.ut_utils.table_to_clob(l_expected_list); - ut.expect(l_actual).to_be_like(l_expected); - end error_stack_of_testsuite; - - procedure get_description is - l_reporter ut3.ut_realtime_reporter; - l_actual varchar2(4000); - l_expected varchar2(80) := '%SQL Developer%'; - begin - l_reporter := ut3.ut_realtime_reporter(); - l_actual := l_reporter.get_description(); - ut.expect(l_actual).to_be_like(l_expected); - end get_description; - - procedure remove_test_suites is - pragma autonomous_transaction; - begin - execute immediate 'drop package check_realtime_reporting1'; - execute immediate 'drop package check_realtime_reporting2'; - execute immediate 'drop package check_realtime_reporting3'; - end remove_test_suites; - -end test_realtime_reporter; -/ diff --git a/test/core/reporters/test_realtime_reporter.pks b/test/core/reporters/test_realtime_reporter.pks deleted file mode 100644 index b59313895..000000000 --- a/test/core/reporters/test_realtime_reporter.pks +++ /dev/null @@ -1,55 +0,0 @@ -create or replace package test_realtime_reporter as - - --%suite(ut_realtime_reporter) - --%suitepath(utplsql.core.reporters) - - --%beforeall - procedure create_test_suites_and_run; - - --%test(Provide a report structure with pre-run information and event based messages per suite and per test) - procedure xml_report_structure; - - --%test(Provide the total number of tests as part of the pre-run information structure) - procedure total_number_of_tests; - - --%test(Provide composite structure for items, an item is either a suite or a test, suites may have nested items) - procedure pre_run_composite_nodes; - - --%test(Provide the execution time as part of the post-run information structure) - procedure execution_time_of_run; - - --%test(Escape special characters in data such as the test suite description) - procedure escaped_characters; - - --%test(Provide a node before starting a test with testNumber and totalNumberOfTests) - procedure pre_test_nodes; - - --%test(Provide a node after completion of a test with test results) - procedure post_test_nodes; - - --%test(Provide expectation message for a failed test) - procedure single_failed_message; - - --%test(Provide expectation messages for each failed assertion of a failed test) - procedure multiple_failed_messages; - - --%test(Provide dbms_output produced in a test) - procedure serveroutput_of_test; - - --%test(Provide dbms_output produced in a testsuite) - procedure serveroutput_of_testsuite; - - --%test(Provide the error stack of a test) - procedure error_stack_of_test; - - --%test(Provide the error stack of a testsuite) - procedure error_stack_of_testsuite; - - --%test(Provide a description of the reporter explaining the use for SQL Developer) - procedure get_description; - - --%afterall - procedure remove_test_suites; - -end test_realtime_reporter; -/ diff --git a/test/core/reporters/test_sonar_test_reporter.pkb b/test/core/reporters/test_sonar_test_reporter.pkb deleted file mode 100644 index 9cf38ea91..000000000 --- a/test/core/reporters/test_sonar_test_reporter.pkb +++ /dev/null @@ -1,36 +0,0 @@ -create or replace package body test_sonar_test_reporter as - - procedure report_produces_expected_out is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_expected varchar2(32767):=q'[ - - -% -%%% -%%% -%% - -]'; - - begin - select * - bulk collect into l_results - from table( - ut3.ut.run( - 'test_reporters', - ut3.ut_sonar_test_reporter(), - a_test_file_mappings => ut3.ut_file_mapper.build_file_mappings( user, ut3.ut_varchar2_list('tests/helpers/test_reporters.pkb')) - ) - ); - l_actual := ut3.ut_utils.table_to_clob(l_results); - ut.expect(l_actual).to_be_like(l_expected); - end; - - procedure check_encoding_included is - begin - reporters.check_xml_encoding_included(ut3.ut_sonar_test_reporter(), 'UTF-8'); - end; - -end; -/ diff --git a/test/core/reporters/test_sonar_test_reporter.pks b/test/core/reporters/test_sonar_test_reporter.pks deleted file mode 100644 index ab4776c38..000000000 --- a/test/core/reporters/test_sonar_test_reporter.pks +++ /dev/null @@ -1,13 +0,0 @@ -create or replace package test_sonar_test_reporter as - - --%suite(ut_sonar_test_reporter) - --%suitepath(utplsql.core.reporters) - - --%test(Report produces expected output) - procedure report_produces_expected_out; - - --%test(Includes XML header with encoding when encoding provided) - procedure check_encoding_included; - -end; -/ diff --git a/test/core/reporters/test_teamcity_reporter.pkb b/test/core/reporters/test_teamcity_reporter.pkb deleted file mode 100644 index 77b850b15..000000000 --- a/test/core/reporters/test_teamcity_reporter.pkb +++ /dev/null @@ -1,131 +0,0 @@ -create or replace package body test_teamcity_reporter as - - procedure create_a_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package check_escape_special_chars is - --%suite(A suite with 'quote') - - --%test(A test with 'quote') - procedure test_do_stuff; - - end;]'; - execute immediate q'[create or replace package body check_escape_special_chars is - procedure test_do_stuff is - begin - ut3.ut.expect(' [ ' || chr(13) || chr(10) || ' ] ' ).to_be_null; - end; - - end;]'; - - execute immediate q'[create or replace package check_trims_long_output is - --%suite - - --%test - procedure long_output; - end;]'; - execute immediate q'[create or replace package body check_trims_long_output is - procedure long_output is - begin - ut3.ut.expect(rpad('aVarchar',4000,'a')).to_be_null; - end; - end;]'; - - end; - - - procedure report_produces_expected_out is - l_output_data ut3.ut_varchar2_list; - l_output clob; - l_expected varchar2(32767); - begin - l_expected := q'{%##teamcity[testSuiteStarted timestamp='%' name='org'] -%##teamcity[testSuiteStarted timestamp='%' name='org.utplsql'] -%##teamcity[testSuiteStarted timestamp='%' name='org.utplsql.tests'] -%##teamcity[testSuiteStarted timestamp='%' name='org.utplsql.tests.helpers'] -%##teamcity[testSuiteStarted timestamp='%' name='A suite for testing different outcomes from reporters'] -%##teamcity[testSuiteStarted timestamp='%' name='A description of some context'] -%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3_tester.test_reporters.passing_test'] - - - - - -%##teamcity[testFinished timestamp='%' duration='%' name='ut3_tester.test_reporters.passing_test'] -%##teamcity[testSuiteFinished timestamp='%' name='A description of some context'] -%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3_tester.test_reporters.failing_test'] - - - -%##teamcity[testFailed timestamp='%' details='Actual: |'number |[1|] |' (varchar2) was expected to equal: |'number |[2|] |' (varchar2) ' message='Fails as values are different' name='ut3_tester.test_reporters.failing_test'] -%##teamcity[testFinished timestamp='%' duration='%' name='ut3_tester.test_reporters.failing_test'] -%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3_tester.test_reporters.erroring_test'] - - - -%##teamcity[testStdErr timestamp='%' name='ut3_tester.test_reporters.erroring_test' out='Test exception:|nORA-06512: at "UT3_TESTER.TEST_REPORTERS", line %|nORA-06512: at %|n|n'] -%##teamcity[testFailed timestamp='%' details='Test exception:|nORA-06512: at "UT3_TESTER.TEST_REPORTERS", line %|nORA-06512: at %|n|n' message='Error occured' name='ut3_tester.test_reporters.erroring_test'] -%##teamcity[testFinished timestamp='%' duration='%' name='ut3_tester.test_reporters.erroring_test'] -%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3_tester.test_reporters.disabled_test'] -%##teamcity[testIgnored timestamp='%' name='ut3_tester.test_reporters.disabled_test'] -%##teamcity[testSuiteFinished timestamp='%' name='A suite for testing different outcomes from reporters'] -%##teamcity[testSuiteFinished timestamp='%' name='org.utplsql.tests.helpers'] -%##teamcity[testSuiteFinished timestamp='%' name='org.utplsql.tests'] -%##teamcity[testSuiteFinished timestamp='%' name='org.utplsql'] -%##teamcity[testSuiteFinished timestamp='%' name='org']}'; - --act - select * - bulk collect into l_output_data - from table(ut3.ut.run('test_reporters',ut3.ut_teamcity_reporter())); - - --assert - ut.expect(ut3.ut_utils.table_to_clob(l_output_data)).to_be_like(l_expected); - end; - - procedure escape_special_chars is - l_output_data ut3.ut_varchar2_list; - l_output clob; - l_expected varchar2(32767); - begin - l_expected := q'{%##teamcity[testSuiteStarted timestamp='%' name='A suite with |'quote|''] -%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3_tester.check_escape_special_chars.test_do_stuff'] -%##teamcity[testFailed timestamp='%' details='Actual: (varchar2)|n |' |[ |r|n |] |'|nwas expected to be null' name='ut3_tester.check_escape_special_chars.test_do_stuff'] -%##teamcity[testFinished timestamp='%' duration='%' name='ut3_tester.check_escape_special_chars.test_do_stuff'] -%##teamcity[testSuiteFinished timestamp='%' name='A suite with |'quote|'']}'; - --act - select * - bulk collect into l_output_data - from table(ut3.ut.run('check_escape_special_chars',ut3.ut_teamcity_reporter())); - - --assert - ut.expect(ut3.ut_utils.table_to_clob(l_output_data)).to_be_like(l_expected); - end; - - procedure trims_long_output is - l_output_data ut3.ut_varchar2_list; - l_output clob; - l_expected varchar2(32767); - begin - l_expected := q'{%##teamcity[testSuiteStarted timestamp='%' name='check_trims_long_output'] -%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3_tester.check_trims_long_output.long_output'] -%##teamcity[testFailed timestamp='%' details='Actual: (varchar2)|n |'aVarcharaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|[...|]' name='ut3_tester.check_trims_long_output.long_output'] -%##teamcity[testFinished timestamp='%' duration='%' name='ut3_tester.check_trims_long_output.long_output'] -%##teamcity[testSuiteFinished timestamp='%' name='check_trims_long_output']}'; - --act - select * - bulk collect into l_output_data - from table(ut3.ut.run('check_trims_long_output',ut3.ut_teamcity_reporter())); - - --assert - ut.expect(ut3.ut_utils.table_to_clob(l_output_data)).to_be_like(l_expected); - end; - - procedure remove_test_package is - pragma autonomous_transaction; - begin - execute immediate 'drop package check_escape_special_chars'; - execute immediate 'drop package check_trims_long_output'; - end; - -end; -/ diff --git a/test/core/reporters/test_teamcity_reporter.pks b/test/core/reporters/test_teamcity_reporter.pks deleted file mode 100644 index ef474b225..000000000 --- a/test/core/reporters/test_teamcity_reporter.pks +++ /dev/null @@ -1,22 +0,0 @@ -create or replace package test_teamcity_reporter as - - --%suite(ut_teamcity_reporter) - --%suitepath(utplsql.core.reporters) - - --%beforeall - procedure create_a_test_package; - - --%test(Report produces expected output) - procedure report_produces_expected_out; - - --%test(Escapes special characters) - procedure escape_special_chars; - - --%test(Trims output so it fits into 4000 chars) - procedure trims_long_output; - - --%afterall - procedure remove_test_package; - -end; -/ diff --git a/test/core/reporters/test_tfs_junit_reporter.pkb b/test/core/reporters/test_tfs_junit_reporter.pkb deleted file mode 100644 index 122c665e3..000000000 --- a/test/core/reporters/test_tfs_junit_reporter.pkb +++ /dev/null @@ -1,207 +0,0 @@ -create or replace package body test_tfs_junit_reporter as - - procedure crate_a_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package check_junit_reporting is - --%suite(A suite with ) - - --%test(A test with ) - procedure test_do_stuff; - - end;]'; - execute immediate q'[create or replace package body check_junit_reporting is - procedure test_do_stuff is - begin - ut3.ut.expect(1).to_equal(1); - ut3.ut.expect(1).to_equal(2); - end; - - end;]'; - - execute immediate q'[create or replace package check_junit_rep_suitepath is - --%suitepath(core) - --%suite(check_junit_rep_suitepath) - --%displayname(Check JUNIT Get path for suitepath) - - --%test(check_junit_rep_suitepath) - --%displayname(Check JUNIT Get path for suitepath) - procedure check_junit_rep_suitepath; - end;]'; - execute immediate q'[create or replace package body check_junit_rep_suitepath is - procedure check_junit_rep_suitepath is - begin - ut3.ut.expect(1).to_equal(1); - end; - end;]'; - - execute immediate q'[create or replace package check_junit_flat_suitepath is - --%suitepath(core.check_junit_rep_suitepath) - --%suite(flatsuitepath) - - --%beforeall - procedure donuffin; - end;]'; - execute immediate q'[create or replace package body check_junit_flat_suitepath is - procedure donuffin is - begin - null; - end; - end;]'; - - - execute immediate q'[create or replace package check_fail_escape is - --%suitepath(core) - --%suite(checkfailedescape) - --%displayname(Check JUNIT XML failure is escaped) - - --%test(Fail Miserably) - procedure fail_miserably; - - end;]'; - - execute immediate q'[create or replace package body check_fail_escape is - procedure fail_miserably is - begin - ut3.ut.expect('test').to_equal(''); - end; - end;]'; - - end; - - - procedure escapes_special_chars is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting',ut3.ut_tfs_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).not_to_be_like('%%'); - ut.expect(l_actual).to_be_like('%<tag>%'); - end; - - procedure reports_only_failed_or_errored is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting',ut3.ut_tfs_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).not_to_be_like('%Actual: 1 (number) was expected to equal: 1 (number)%'); - ut.expect(l_actual).to_be_like('%Actual: 1 (number) was expected to equal: 2 (number)%'); - end; - - procedure reports_failed_line is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting',ut3.ut_tfs_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%at "%.CHECK_JUNIT_REPORTING%", line %'); - end; - - procedure check_classname_suite is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting',ut3.ut_tfs_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%testcase classname="check_junit_reporting"%'); - end; - - procedure check_flatten_nested_suites is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_flat_suitepath',ut3.ut_tfs_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like(' - - - - - -%'); - end; - - procedure check_nls_number_formatting is - l_results ut3.ut_varchar2_list; - l_actual clob; - l_nls_numeric_characters varchar2(30); - begin - --Arrange - select replace(nsp.value,'''','''''') into l_nls_numeric_characters - from nls_session_parameters nsp - where parameter = 'NLS_NUMERIC_CHARACTERS'; - execute immediate q'[alter session set NLS_NUMERIC_CHARACTERS=', ']'; - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_reporting', ut3.ut_tfs_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_match('time="[0-9]*\.[0-9]{3,6}"'); - --Cleanup - execute immediate 'alter session set NLS_NUMERIC_CHARACTERS='''||l_nls_numeric_characters||''''; - end; - - procedure check_failure_escaped is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_fail_escape',ut3.ut_tfs_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%Actual: 'test' (varchar2) was expected to equal: '<![CDATA[some stuff]]>' (varchar2)%'); - end; - - procedure check_classname_suitepath is - l_results ut3.ut_varchar2_list; - l_actual clob; - begin - --Act - select * - bulk collect into l_results - from table(ut3.ut.run('check_junit_rep_suitepath',ut3.ut_tfs_junit_reporter())); - l_actual := ut3.ut_utils.table_to_clob(l_results); - --Assert - ut.expect(l_actual).to_be_like('%testcase classname="core.check_junit_rep_suitepath"%'); - end; - procedure remove_test_package is - pragma autonomous_transaction; - begin - execute immediate 'drop package check_junit_reporting'; - execute immediate 'drop package check_junit_rep_suitepath'; - execute immediate 'drop package check_junit_flat_suitepath'; - execute immediate 'drop package check_fail_escape'; - end; - - procedure check_encoding_included is - begin - reporters.check_xml_encoding_included(ut3.ut_tfs_junit_reporter(), 'UTF-8'); - end; - -end; -/ diff --git a/test/core/reporters/test_tfs_junit_reporter.pks b/test/core/reporters/test_tfs_junit_reporter.pks deleted file mode 100644 index cc589be1b..000000000 --- a/test/core/reporters/test_tfs_junit_reporter.pks +++ /dev/null @@ -1,39 +0,0 @@ -create or replace package test_tfs_junit_reporter as - - --%suite(ut_tfs_junit_reporter) - --%suitepath(utplsql.core.reporters) - - --%beforeall - procedure crate_a_test_package; - - --%test(Escapes special characters from test and suite description) - procedure escapes_special_chars; - - --%test(Reports only failed expectations and exceptions) - procedure reports_only_failed_or_errored; - - --%test(Reports failed line of test) - procedure reports_failed_line; - - --%test(Check that classname is returned correct suite) - procedure check_classname_suite; - - --%test(Check that classname is returned correct suitepath) - procedure check_classname_suitepath; - - --%test(Check that nested suites are being flatten) - procedure check_flatten_nested_suites; - - --%test(Reports duration according to XML specification for numbers) - procedure check_nls_number_formatting; - - --%test( Validate that failures with special char are escaped ) - procedure check_failure_escaped; - - --%test(Includes XML header with encoding when encoding provided) - procedure check_encoding_included; - - --%afterall - procedure remove_test_package; -end; -/ diff --git a/test/core/test_file_mapper.pkb b/test/core/test_file_mapper.pkb deleted file mode 100644 index 34b38f108..000000000 --- a/test/core/test_file_mapper.pkb +++ /dev/null @@ -1,45 +0,0 @@ -create or replace package body test_file_mapper is - - procedure default_mappings is - l_actual ut3.ut_file_mappings; - l_expected ut3.ut_file_mappings; - begin - --Arrange - l_expected := ut3.ut_file_mappings( - ut3.ut_file_mapping('C:\tests\helpers\core.pkb',USER,'CORE','PACKAGE BODY'), - ut3.ut_file_mapping('tests/helpers/test_file_mapper.pkb',USER,'TEST_FILE_MAPPER','PACKAGE BODY') - ); - --Act - l_actual := ut3.ut_file_mapper.build_file_mappings( - ut3.ut_varchar2_list( - 'C:\tests\helpers\core.pkb', - 'tests/helpers/test_file_mapper.pkb' - ) - ); - --Assert - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - end; - - procedure specific_owner is - l_actual ut3.ut_file_mappings; - l_expected ut3.ut_file_mappings; - begin - --Arrange - l_expected := ut3.ut_file_mappings( - ut3.ut_file_mapping('C:\source\core\types\ut_file_mapping.tpb','UT3','UT_FILE_MAPPING','TYPE BODY'), - ut3.ut_file_mapping('source/core/ut_file_mapper.pkb','UT3','UT_FILE_MAPPER','PACKAGE BODY') - ); - --Act - l_actual := ut3.ut_file_mapper.build_file_mappings( - 'UT3', - ut3.ut_varchar2_list( - 'C:\source\core\types\ut_file_mapping.tpb', - 'source/core/ut_file_mapper.pkb' - ) - ); - --Assert - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - end; - -end; -/ diff --git a/test/core/test_file_mapper.pks b/test/core/test_file_mapper.pks deleted file mode 100644 index f64343637..000000000 --- a/test/core/test_file_mapper.pks +++ /dev/null @@ -1,13 +0,0 @@ -create or replace package test_file_mapper is - - --%suite(file_mapper) - --%suitepath(utplsql.core) - - --%test(Maps file paths into database objects using default mappings) - procedure default_mappings; - - --%test(Used specified object owner to perform mapping when files have no owner indication) - procedure specific_owner; - -end; -/ diff --git a/test/core/test_output_buffer.pkb b/test/core/test_output_buffer.pkb deleted file mode 100644 index 848824ea8..000000000 --- a/test/core/test_output_buffer.pkb +++ /dev/null @@ -1,95 +0,0 @@ -create or replace package body test_output_buffer is - - procedure test_receive is - l_actual_text clob; - l_actual_item_type varchar2(1000); - l_remaining integer; - l_expected_text clob; - l_expected_item_type varchar2(1000); - l_buffer ut3.ut_output_buffer_base; - begin - --Arrange - l_buffer := ut3.ut_output_table_buffer(); - l_expected_text := to_clob(lpad('a text', 31000, ',a text')) - || chr(10) || to_clob(lpad('a text', 31000, ',a text')) - || chr(13) || to_clob(lpad('a text', 31000, ',a text')) - || chr(13) || chr(10) || to_clob(lpad('a text', 31000, ',a text')) || to_clob(lpad('a text', 31000, ',a text')); - l_expected_item_type := lpad('some item type',1000,'-'); - --Act - l_buffer.send_clob(l_expected_text, l_expected_item_type); - l_buffer.close(); - - select text, item_type - into l_actual_text, l_actual_item_type - from table(l_buffer.get_lines(0,0)); - - --Assert - ut.expect(l_actual_text).to_equal(l_expected_text); - ut.expect(l_actual_item_type).to_equal(l_expected_item_type); - - select count(1) into l_remaining from ut3.ut_output_buffer_tmp where output_id = l_buffer.output_id; - - ut.expect(l_remaining).to_equal(0); - end; - - procedure test_doesnt_send_on_null_text is - l_cur sys_refcursor; - l_result integer; - l_buffer ut3.ut_output_buffer_base := ut3.ut_output_table_buffer(); - begin - delete from ut3.ut_output_buffer_tmp; - --Act - l_buffer.send_line(null); - - open l_cur for select * from ut3.ut_output_buffer_tmp; - ut.expect(l_cur).to_be_empty; - end; - - procedure test_send_line is - l_result varchar2(4000); - c_expected constant varchar2(4000) := lpad('a text',4000,',a text'); - l_buffer ut3.ut_output_buffer_base := ut3.ut_output_table_buffer(); - begin - l_buffer.send_line(c_expected); - - select text into l_result from ut3.ut_output_buffer_tmp where output_id = l_buffer.output_id; - - ut.expect(l_result).to_equal(c_expected); - end; - - procedure test_waiting_for_data is - l_result clob; - l_remaining integer; - l_expected clob; - l_buffer ut3.ut_output_buffer_base := ut3.ut_output_table_buffer(); - l_start timestamp; - l_duration interval day to second; - begin - --Arrange - l_expected := 'a text'; - l_buffer.send_line(l_expected); - l_start := localtimestamp; - --Act - begin - select text into l_result from table(l_buffer.get_lines(1,1)); - ut.fail('Expected a timeout exception but nothing was raised'); - exception - when others then - l_duration := localtimestamp - l_start; - --Assert - --Fetches data from output - ut.expect(l_result).to_equal(l_expected); - --Throws a timeout exception - ut.expect(dbms_utility.format_error_stack()).to_match('ORA'||ut3.ut_utils.gc_out_buffer_timeout); - --Waited for one second - ut.expect(l_duration).to_be_greater_than(interval '0.99' second); - end; - - select count(1) into l_remaining from ut3.ut_output_buffer_tmp where output_id = l_buffer.output_id; - --Data got removed from output buffer - ut.expect(l_remaining).to_equal(0); - - end; - -end test_output_buffer; -/ diff --git a/test/core/test_output_buffer.pks b/test/core/test_output_buffer.pks deleted file mode 100644 index 417b1ce09..000000000 --- a/test/core/test_output_buffer.pks +++ /dev/null @@ -1,19 +0,0 @@ -create or replace package test_output_buffer is - - --%suite(output_buffer) - --%suitepath(utplsql.core) - - --%test(Receives a line from buffer table and deletes) - procedure test_receive; - - --%test(Does not send line if null text given) - procedure test_doesnt_send_on_null_text; - - --%test(Sends a line into buffer table) - procedure test_send_line; - - --%test(Waits For The Data To Appear For Specified Time) - procedure test_waiting_for_data; - -end test_output_buffer; -/ diff --git a/test/core/test_suite_builder.pkb b/test/core/test_suite_builder.pkb deleted file mode 100644 index bd76e88d8..000000000 --- a/test/core/test_suite_builder.pkb +++ /dev/null @@ -1,1118 +0,0 @@ -create or replace package body test_suite_builder is - - function invoke_builder_for_annotations( - a_annotations ut3.ut_annotations, - a_package_name varchar2 := 'TEST_SUITE_BUILDER_PACKAGE' - ) return clob is - l_suites ut3.ut_suite_items; - l_suite ut3.ut_logical_suite; - l_cursor sys_refcursor; - l_xml xmltype; - begin - open l_cursor for select value(x) from table( - ut3.ut_annotated_objects( - ut3.ut_annotated_object('UT3_TESTER', a_package_name, 'PACKAGE', systimestamp, a_annotations) - ) ) x; - - l_suites := ut3.ut_suite_manager.build_suites_from_annotations( - a_owner_name => 'UT3_TESTER', - a_annotated_objects => l_cursor, - a_path => null, - a_object_name => a_package_name, - a_skip_all_objects => true - ); - l_suite := treat( l_suites(l_suites.first) as ut3.ut_logical_suite); - - select deletexml( - xmltype(l_suite), - '//RESULTS_COUNT|//START_TIME|//END_TIME|//RESULT|//ASSOCIATED_EVENT_NAME' || - '|//TRANSACTION_INVALIDATORS|//ERROR_BACKTRACE|//ERROR_STACK|//SERVEROUTPUT' - ) - into l_xml - from dual; - - return l_xml.getClobVal(); - end; - - procedure no_suite_description is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite',null, null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_match( - 'UT3_TESTERsome_packagesome_package()?\s*some_package' - ); - end; - - procedure suite_description_from_suite is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Some description', null), - ut3.ut_annotation(2, 'suite','Another description', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%some_packageSome description%' - ); - end; - - procedure suitepath_from_non_empty_path is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite',null, null), - ut3.ut_annotation(2, 'suitepath','org.utplsql.some', null), - ut3.ut_annotation(3, 'suitepath','dummy.utplsql.some', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%org.utplsql.some%' - ); - end; - - procedure suite_descr_from_displayname is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Some description', null), - ut3.ut_annotation(2, 'suite','Another description', null), - ut3.ut_annotation(3, 'displayname','New description', null), - ut3.ut_annotation(4, 'displayname','Newest description', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%some_packageNew description%' - ); - end; - - procedure rollback_type_valid is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite',null, null), - ut3.ut_annotation(2, 'rollback','manual', null), - ut3.ut_annotation(3, 'rollback','bad', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%'||ut3.ut_utils.gc_rollback_manual||'%' - ); - end; - - procedure rollback_type_duplicated is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite',null, null), - ut3.ut_annotation(2, 'rollback','manual', null), - ut3.ut_annotation(3, 'rollback','bad', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%"--%rollback"%%UT3_TESTER.SOME_PACKAGE%3%%' - ); - end; - - procedure suite_annot_duplicated is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(2, 'suite','Cool', null), - ut3.ut_annotation(8, 'suite','bad', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%Cool%%"--%suite"%UT3_TESTER.SOME_PACKAGE%line 8%%' - ); - end; - - procedure test_annotation is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(2, 'suite','Cool', null), - ut3.ut_annotation(8, 'test','Some test', 'test_procedure') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%' || - '%test_procedureSome testsome_package.test_procedure' || - '%%' - ); - end; - - procedure test_annot_duplicated is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(2, 'suite','Cool', null), - ut3.ut_annotation(8, 'test','Some test', 'test_procedure'), - ut3.ut_annotation(9, 'test','Dup', 'test_procedure') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%Cool%%"--%test"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' - ); - end; - - procedure beforeall_annot_duplicated is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(2, 'suite','Cool', null), - ut3.ut_annotation(8, 'beforeall', null, 'test_procedure'), - ut3.ut_annotation(9, 'beforeall', null, 'test_procedure') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%Cool%%"--%beforeall"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' - ); - end; - - procedure beforeeach_annot_duplicated is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(2, 'suite','Cool', null), - ut3.ut_annotation(8, 'beforeeach', null, 'test_procedure'), - ut3.ut_annotation(9, 'beforeeach', null, 'test_procedure') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%Cool%%"--%beforeeach"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' - ); - end; - - procedure afterall_annot_duplicated is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(2, 'suite','Cool', null), - ut3.ut_annotation(8, 'afterall', null, 'test_procedure'), - ut3.ut_annotation(9, 'afterall', null, 'test_procedure') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%Cool%%"--%afterall"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' - ); - end; - - procedure aftereach_annot_duplicated is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(2, 'suite','Cool', null), - ut3.ut_annotation(8, 'aftereach', null, 'test_procedure'), - ut3.ut_annotation(9, 'aftereach', null, 'test_procedure') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%Cool%%"--%aftereach"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' - ); - end; - - procedure suitepath_annot_duplicated is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(2, 'suite','Cool', null), - ut3.ut_annotation(3, 'suitepath','dummy.utplsql.some', null), - ut3.ut_annotation(4, 'suitepath','org.utplsql.some', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%"--%suitepath"%line 4%%' - ); - end; - - procedure displayname_annot_duplicated is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(2, 'suite','Cool', null), - ut3.ut_annotation(4, 'displayname','New description', null), - ut3.ut_annotation(5, 'displayname','Newest description', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%"--%displayname"%line 5%%' - ); - end; - - procedure suitepath_annot_empty is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(3, 'suitepath',null, null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%"--%suitepath" annotation requires a non-empty parameter value.%%' - ); - end; - - procedure suitepath_annot_invalid_path is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'suitepath','path with spaces', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%Invalid path value in annotation "--%suitepath(path with spaces)"%%' - ); - end; - - procedure displayname_annot_empty is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(3, 'displayname',null, null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%"--%displayname" annotation requires a non-empty parameter value.%%' - ); - end; - - procedure rollback_type_empty is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(3, 'rollback',null, null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%"--%rollback" annotation requires one of values as parameter:%%' - ); - end; - - procedure rollback_type_invalid is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'rollback','bad', null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%"--%rollback" annotation requires one of values as parameter: "auto" or "manual". Annotation ignored.%%' - ); - end; - - procedure multiple_before_after is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall',null, 'first_before_all'), - ut3.ut_annotation(3, 'beforeall',null, 'another_before_all'), - ut3.ut_annotation(4, 'beforeeach',null, 'first_before_each'), - ut3.ut_annotation(5, 'beforeeach',null, 'another_before_each'), - ut3.ut_annotation(6, 'aftereach',null, 'first_after_each'), - ut3.ut_annotation(7, 'aftereach',null, 'another_after_each'), - ut3.ut_annotation(8, 'afterall',null, 'first_after_all'), - ut3.ut_annotation(9, 'afterall',null, 'another_after_all'), - ut3.ut_annotation(14, 'test','A test', 'some_test'), - ut3.ut_annotation(15, 'beforetest','before_test_proc', 'some_test'), - ut3.ut_annotation(16, 'beforetest','before_test_proc2', 'some_test'), - ut3.ut_annotation(18, 'aftertest','after_test_proc', 'some_test'), - ut3.ut_annotation(20, 'aftertest','after_test_proc2', 'some_test') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%some_package%some_test' || - '%' || - '%some_packagefirst_before_each' || - '%some_packageanother_before_each' || - '%' || - '%' || - '%some_packagebefore_test_proc' || - '%some_packagebefore_test_proc2' || - '%' || - '%' || - '%some_packageafter_test_proc' || - '%some_packageafter_test_proc2' || - '%' || - '%' || - '%some_packagefirst_after_each' || - '%some_packageanother_after_each' || - '%' || - '%' || - '%' || - '%some_packagefirst_before_all' || - '%some_packageanother_before_all' || - '%' || - '%' || - '%some_packagefirst_after_all' || - '%some_packageanother_after_all' || - '%%' - ); - end; - - procedure multiple_standalone_bef_aft is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall', 'some_package.first_before_all',null), - ut3.ut_annotation(3, 'beforeall', 'different_package.another_before_all',null), - ut3.ut_annotation(4, 'beforeeach', 'first_before_each',null), - ut3.ut_annotation(5, 'beforeeach', 'different_owner.different_package.another_before_each',null), - ut3.ut_annotation(6, 'aftereach', 'first_after_each',null), - ut3.ut_annotation(7, 'aftereach', 'another_after_each,different_owner.different_package.one_more_after_each',null), - ut3.ut_annotation(8, 'afterall', 'first_after_all',null), - ut3.ut_annotation(9, 'afterall', 'another_after_all',null), - ut3.ut_annotation(14, 'test','A test', 'some_test'), - ut3.ut_annotation(15, 'beforetest','before_test_proc', 'some_test'), - ut3.ut_annotation(16, 'beforetest','before_test_proc2', 'some_test'), - ut3.ut_annotation(18, 'aftertest','after_test_proc', 'some_test'), - ut3.ut_annotation(20, 'aftertest','after_test_proc2', 'some_test') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%some_package%some_test' || - '%' || - '%some_packagefirst_before_each' || - '%different_ownerdifferent_packageanother_before_each' || - '%' || - '%' || - '%some_packagebefore_test_proc' || - '%some_packagebefore_test_proc2' || - '%' || - '%' || - '%some_packageafter_test_proc' || - '%some_packageafter_test_proc2' || - '%' || - '%' || - '%some_packagefirst_after_each' || - '%some_packageanother_after_each' || - '%different_ownerdifferent_packageone_more_after_each' || - '%' || - '%' || - '%' || - '%some_packagefirst_before_all' || - '%different_packageanother_before_all' || - '%' || - '%' || - '%some_packagefirst_after_all' || - '%some_packageanother_after_all' || - '%%' - ); - end; - - procedure before_after_on_single_proc is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall',null, 'do_stuff'), - ut3.ut_annotation(3, 'beforeeach',null, 'do_stuff'), - ut3.ut_annotation(4, 'aftereach',null, 'do_stuff'), - ut3.ut_annotation(5, 'afterall',null, 'do_stuff'), - ut3.ut_annotation(6, 'test','A test', 'some_test') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%some_package%some_test' || - '%' || - '%some_packagedo_stuff' || - '%' || - '%' || - '%some_packagedo_stuff' || - '%' || - '%' || - '%' || - '%some_packagedo_stuff' || - '%' || - '%' || - '%some_packagedo_stuff' || - '%%' - ); - end; - - procedure multiple_mixed_bef_aft is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall', null,'first_before_all'), - ut3.ut_annotation(3, 'beforeall', 'different_package.another_before_all',null), - ut3.ut_annotation(4, 'beforeeach', 'first_before_each',null), - ut3.ut_annotation(5, 'beforeeach', 'different_owner.different_package.another_before_each',null), - ut3.ut_annotation(6, 'aftereach', null, 'first_after_each'), - ut3.ut_annotation(7, 'aftereach', 'another_after_each,different_owner.different_package.one_more_after_each',null), - ut3.ut_annotation(8, 'afterall', 'first_after_all',null), - ut3.ut_annotation(9, 'afterall', 'another_after_all',null), - ut3.ut_annotation(14, 'test','A test', 'some_test'), - ut3.ut_annotation(15, 'beforetest','before_test_proc', 'some_test'), - ut3.ut_annotation(16, 'beforetest','before_test_proc2', 'some_test'), - ut3.ut_annotation(18, 'aftertest','after_test_proc', 'some_test'), - ut3.ut_annotation(20, 'aftertest','after_test_proc2', 'some_test'), - ut3.ut_annotation(21, 'beforeall', null,'last_before_all'), - ut3.ut_annotation(22, 'aftereach', null, 'last_after_each'), - ut3.ut_annotation(23, 'afterall', null, 'last_after_all') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%some_package%some_test' || - '%' || - '%some_packagefirst_before_each' || - '%different_ownerdifferent_packageanother_before_each' || - '%' || - '%' || - '%some_packagebefore_test_proc' || - '%some_packagebefore_test_proc2' || - '%' || - '%' || - '%some_packageafter_test_proc' || - '%some_packageafter_test_proc2' || - '%' || - '%' || - '%some_packagefirst_after_each' || - '%some_packageanother_after_each' || - '%different_ownerdifferent_packageone_more_after_each' || - '%some_packagelast_after_each' || - '%' || - '%' || - '%' || - '%some_packagefirst_before_all' || - '%different_packageanother_before_all' || - '%some_packagelast_before_all' || - '%' || - '%' || - '%some_packagefirst_after_all' || - '%some_packageanother_after_all' || - '%some_packagelast_after_all' || - '%%' - ); - end; - - - procedure before_after_mixed_with_test is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall',null, 'do_stuff'), - ut3.ut_annotation(3, 'beforeeach',null, 'do_stuff'), - ut3.ut_annotation(4, 'aftereach',null, 'do_stuff'), - ut3.ut_annotation(5, 'afterall',null, 'do_stuff'), - ut3.ut_annotation(6, 'test','A test', 'do_stuff') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like('%%Annotation "--\%beforeall"%line 2%%', '\'); - ut.expect(l_actual).to_be_like('%%Annotation "--\%beforeeach"%line 3%%', '\'); - ut.expect(l_actual).to_be_like('%%Annotation "--\%aftereach"%line 4%%', '\'); - ut.expect(l_actual).to_be_like('%%Annotation "--\%afterall" cannot be used with "--\%test". Annotation ignored.' - ||'%at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 5%%', '\'); - ut.expect(l_actual).not_to_be_like('%%'); - ut.expect(l_actual).not_to_be_like('%%'); - ut.expect(l_actual).not_to_be_like('%%'); - ut.expect(l_actual).not_to_be_like('%%'); - end; - - procedure suite_from_context is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), - ut3.ut_annotation(3, 'test','In suite', 'suite_level_test'), - ut3.ut_annotation(4, 'context','a_context', null), - ut3.ut_annotation(5, 'displayname','A context', null), - ut3.ut_annotation(6, 'beforeall',null, 'context_setup'), - ut3.ut_annotation(7, 'test', 'In context', 'test_in_a_context'), - ut3.ut_annotation(8, 'endcontext',null, null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%' || - '%' || - '%' || - '' || - '%a_contextA contextsome_package.a_context' || - '%' || - '' || - '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || - '%' || - '' || - '' || - '%some_packagecontext_setup' || - '%' || - '' || - '' || - '' || - '%suite_level_testIn suitesome_package.suite_level_test' || - '%' || - '' || - '' || - '%some_packagesuite_level_beforeall' || - '%' || - '' || - '' - ); - end; - - procedure before_after_in_context is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite', 'Cool', null), - ut3.ut_annotation(2, 'test', 'In suite', 'suite_level_test'), - ut3.ut_annotation(3, 'context', 'a_context', null), - ut3.ut_annotation(4, 'beforeall', 'context_beforeall', null), - ut3.ut_annotation(5, 'beforeeach', null, 'context_beforeeach'), - ut3.ut_annotation(6, 'test', 'In context', 'test_in_a_context'), - ut3.ut_annotation(7, 'aftereach', 'context_aftereach' ,null), - ut3.ut_annotation(8, 'afterall', null, 'context_afterall'), - ut3.ut_annotation(9, 'endcontext', null, null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '' || - '%' || - '%' || - '%a_context' || - '%' || - '%' || - '%test_in_a_context' || - '%%context_beforeeach%' || - '%%test_in_a_context%' || - '%%context_aftereach%' || - '%' || - '%' || - '%%context_beforeall%' || - '%%context_afterall%' || - '%' || - '%' || - '%suite_level_test' || - '%%suite_level_test%' || - '%' || - '%' || - '%' - ); - ut.expect(l_actual).not_to_be_like('%%%%%%'); - ut.expect(l_actual).not_to_be_like('%%%%%%'); - ut.expect(l_actual).not_to_be_like('%%%%%%'); - ut.expect(l_actual).not_to_be_like('%%%%%%'); - end; - - procedure before_after_out_of_context is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), - ut3.ut_annotation(3, 'beforeeach',null, 'suite_level_beforeeach'), - ut3.ut_annotation(4, 'test','In suite', 'suite_level_test'), - ut3.ut_annotation(5, 'context','a_context', null), - ut3.ut_annotation(6, 'test', 'In context', 'test_in_a_context'), - ut3.ut_annotation(7, 'endcontext',null, null), - ut3.ut_annotation(8, 'aftereach',null, 'suite_level_aftereach'), - ut3.ut_annotation(9, 'afterall',null, 'suite_level_afterall') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '' || - '%' || - '%' || - '%a_context' || - '%' || - '%' || - '%test_in_a_context' || - '%%suite_level_beforeeach%' || - '%%test_in_a_context%' || - '%%suite_level_aftereach%' || - '%' || - '%' || - '%' || - '%' || - '%suite_level_test' || - '%%suite_level_beforeeach%' || - '%%suite_level_test%' || - '%%suite_level_aftereach%' || - '%' || - '%' || - '%%suite_level_beforeall%' || - '%%suite_level_afterall%' || - '%' - ); - ut.expect(l_actual).not_to_be_like('%%%%%%'); - ut.expect(l_actual).not_to_be_like('%%%%%%'); - end; - - procedure context_without_endcontext is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), - ut3.ut_annotation(3, 'test','In suite', 'suite_level_test'), - ut3.ut_annotation(4, 'context','A context', null), - ut3.ut_annotation(5, 'beforeall',null, 'context_setup'), - ut3.ut_annotation(7, 'test', 'In context', 'test_in_a_context') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%Invalid annotation "--\%context". Cannot find following "--\%endcontext". Annotation ignored.%at "UT3_TESTER.SOME_PACKAGE", line 4%' - ,'\' - ); - ut.expect(l_actual).to_be_like( - '' || - '%' || - '' || - '%suite_level_testIn suitesome_package.suite_level_test' || - '%' || - '' || - '%test_in_a_contextIn contextsome_package.test_in_a_context' || - '%' || - '' || - '' || - '%some_packagesuite_level_beforeall' || - '%some_packagecontext_setup' || - '%' || - '' || - '' - ); - end; - - procedure endcontext_without_context is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), - ut3.ut_annotation(3, 'test','In suite', 'suite_level_test'), - ut3.ut_annotation(4, 'context','a_context', null), - ut3.ut_annotation(5, 'displayname','A context', null), - ut3.ut_annotation(6, 'beforeall',null, 'context_setup'), - ut3.ut_annotation(7, 'test', 'In context', 'test_in_a_context'), - ut3.ut_annotation(8, 'endcontext',null, null), - ut3.ut_annotation(9, 'endcontext',null, null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%Invalid annotation "--\%endcontext". Cannot find preceding "--\%context". Annotation ignored.%at "UT3_TESTER.SOME_PACKAGE", line 9%' - ,'\' - ); - ut.expect(l_actual).to_be_like( - '' || - '%' || - '' || - '%a_contextA contextsome_package.a_context' || - '%' || - '' || - '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || - '%' || - '' || - '' || - '%some_packagecontext_setup' || - '%' || - '' || - '' || - '' || - '%suite_level_testIn suitesome_package.suite_level_test' || - '%' || - '' || - '' || - '%some_packagesuite_level_beforeall' || - '%' || - '' || - '' - ); - end; - - --%test(Gives warning when two contexts have the same name) - procedure duplicate_context_name is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), - ut3.ut_annotation(3, 'test','In suite', 'suite_level_test'), - ut3.ut_annotation(4, 'context','a_context', null), - ut3.ut_annotation(5, 'displayname','A context', null), - ut3.ut_annotation(6, 'beforeall',null, 'context_setup'), - ut3.ut_annotation(7, 'test', 'In context', 'test_in_a_context'), - ut3.ut_annotation(8, 'endcontext',null, null), - ut3.ut_annotation(9, 'context','a_context', null), - ut3.ut_annotation(10, 'displayname','A context', null), - ut3.ut_annotation(11, 'beforeall',null, 'setup_in_duplicated_context'), - ut3.ut_annotation(12, 'test', 'In duplicated context', 'test_in_duplicated_context'), - ut3.ut_annotation(13, 'endcontext',null, null) - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%Context name must be unique in a suite. Context and all of it's content ignored.%at "UT3_TESTER.SOME_PACKAGE", line 9%' - ,'\' - ); - ut.expect(l_actual).to_be_like( - '' || - '%' || - '' || - '%a_contextA contextsome_package.a_context' || - '%' || - '' || - '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || - '%' || - '' || - '' || - '%some_packagecontext_setup' || - '%' || - '' || - '' || - '' || - '%suite_level_testIn suitesome_package.suite_level_test' || - '%' || - '' || - '' || - '%some_packagesuite_level_beforeall' || - '%' || - '' || - '' - ); - end; - - procedure throws_value_empty is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(3, 'test','A test with empty throws annotation', 'A_TEST_PROCEDURE'), - ut3.ut_annotation(3, 'throws',null, 'A_TEST_PROCEDURE') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%"--%throws" annotation requires a parameter. Annotation ignored.%%' - ); - end; - - procedure throws_value_invalid is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(3, 'test','A test with invalid throws annotation', 'A_TEST_PROCEDURE'), - ut3.ut_annotation(3, 'throws',' -20145 , bad_variable_name ', 'A_TEST_PROCEDURE') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%Invalid parameter value "bad_variable_name" for "--%throws" annotation. Parameter ignored.%%' - ); - end; - - - procedure before_aftertest_multi is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(14, 'test','A test', 'some_test'), - ut3.ut_annotation(15, 'beforetest','before_test_proc', 'some_test'), - ut3.ut_annotation(16, 'beforetest','before_test_proc2', 'some_test'), - ut3.ut_annotation(18, 'aftertest','after_test_proc', 'some_test'), - ut3.ut_annotation(20, 'aftertest','after_test_proc2', 'some_test') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%some_package%some_test' || - '%' || - '%some_packagebefore_test_proc' || - '%some_packagebefore_test_proc2' || - '%' || - '%' || - '%some_packageafter_test_proc' || - '%some_packageafter_test_proc2' || - '%' || - '%%' - ); - end; - - procedure before_aftertest_twice is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(14, 'test','A test', 'some_test'), - ut3.ut_annotation(15, 'beforetest','before_test_proc, before_test_proc2', 'some_test'), - ut3.ut_annotation(16, 'beforetest','before_test_proc3', 'some_test'), - ut3.ut_annotation(18, 'aftertest','after_test_proc,after_test_proc2', 'some_test'), - ut3.ut_annotation(20, 'aftertest','after_test_proc3', 'some_test') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%some_package%some_test' || - '%' || - '%some_packagebefore_test_proc' || - '%some_packagebefore_test_proc2' || - '%some_packagebefore_test_proc3' || - '%' || - '%' || - '%some_packageafter_test_proc' || - '%some_packageafter_test_proc2' || - '%some_packageafter_test_proc3' || - '%' || - '%%' - ); - end; - - procedure before_aftertest_pkg_proc is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(14, 'test','A test', 'some_test'), - ut3.ut_annotation(15, 'beforetest','external_package.before_test_proc', 'some_test'), - ut3.ut_annotation(18, 'aftertest','external_package.after_test_proc', 'some_test') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%some_package%some_test' || - '%' || - '%external_packagebefore_test_proc' || - '%' || - '%' || - '%external_packageafter_test_proc' || - '%' || - '%%' - ); - end; - - procedure before_aftertest_mixed_syntax is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(14, 'test','A test', 'some_test'), - ut3.ut_annotation(15, 'beforetest','external_package.before_test_proc, before_test_proc2', 'some_test'), - ut3.ut_annotation(18, 'aftertest','external_package.after_test_proc, after_test_proc2', 'some_test') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%some_package%some_test' || - '%' || - '%external_packagebefore_test_proc' || - '%some_packagebefore_test_proc2' || - '%' || - '%' || - '%external_packageafter_test_proc' || - '%some_packageafter_test_proc2' || - '%' || - '%%' - ); - end; - - procedure test_annotation_ordering is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(4, 'test','B test', 'b_test'), - ut3.ut_annotation(10, 'test','Z test', 'z_test'), - ut3.ut_annotation(14, 'test','A test', 'a_test') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like( - '%%some_package%b_test' || - '%%'|| - '%%some_package%z_test' || - '%%'|| - '%%some_package%a_test' || - '%%' - ); - end; - - procedure test_bad_procedure_annotation is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(2, 'bad_procedure_annotation',null, 'some_procedure'), - ut3.ut_annotation(6, 'test','A test', 'do_stuff') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like('%Unsupported annotation "--\%bad_procedure_annotation". Annotation ignored.% line 2%', '\'); - end; - - procedure test_bad_package_annotation is - l_actual clob; - l_annotations ut3.ut_annotations; - begin - --Arrange - l_annotations := ut3.ut_annotations( - ut3.ut_annotation(1, 'suite','Cool', null), - ut3.ut_annotation(17, 'bad_package_annotation',null, null), - ut3.ut_annotation(24, 'test','A test', 'do_stuff') - ); - --Act - l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); - --Assert - ut.expect(l_actual).to_be_like('%Unsupported annotation "--\%bad_package_annotation". Annotation ignored.% line 17%', '\'); - end; - -end test_suite_builder; -/ diff --git a/test/core/test_suite_builder.pks b/test/core/test_suite_builder.pks deleted file mode 100644 index 21ca58206..000000000 --- a/test/core/test_suite_builder.pks +++ /dev/null @@ -1,176 +0,0 @@ -create or replace package test_suite_builder is - --%suite(suite_builder) - --%suitepath(utplsql.core) - - --%context(suite) - --%displayname(--%suite annotation) - - --%test(Sets suite name from package name and leaves description empty) - procedure no_suite_description; - - --%test(Sets suite description using first --%suite annotation) - procedure suite_description_from_suite; - - --%test(Gives warning if more than one --%suite annotation used) - procedure suite_annot_duplicated; - - --%endcontext - - --%context(displayname) - --%displayname(--%displayname annotation) - - --%test(Overrides suite description using first --%displayname annotation) - procedure suite_descr_from_displayname; - - --%test(Gives warning if more than one --%displayname annotation used) - procedure displayname_annot_duplicated; - - --%test(Gives warning if --%displayname annotation has no value) - procedure displayname_annot_empty; - - --%endcontext - - --%context(test) - --%displayname(--%test annotation) - - --%test(Creates a test item for procedure annotated with --%test annotation) - procedure test_annotation; - - --%test(Gives warning if more than one --%test annotation used) - procedure test_annot_duplicated; - - --%test(Is added to suite according to annotation order in package spec) - procedure test_annotation_ordering; - - --%endcontext - - --%context(suitepath) - --%displayname(--%suitepath annotation) - - --%test(Sets suite path using first --%suitepath annotation) - procedure suitepath_from_non_empty_path; - - --%test(Gives warning if more than one --%suitepath annotation used) - procedure suitepath_annot_duplicated; - - --%test(Gives warning if --%suitepath annotation has no value) - procedure suitepath_annot_empty; - - --%test(Gives warning if --%suitepath annotation has invalid value) - procedure suitepath_annot_invalid_path; - - --%endcontext - - --%context(rollback) - --%displayname(--%rollback annotation) - - --%test(Sets rollback type using first --%rollback annotation) - procedure rollback_type_valid; - - --%test(Gives warning if more than one --%rollback annotation used) - procedure rollback_type_duplicated; - - --%test(Gives warning if --%rollback annotation has no value) - procedure rollback_type_empty; - - --%test(Gives warning if --%rollback annotation has invalid value) - procedure rollback_type_invalid; - - --%endcontext - - --%context(before_after_all_each) - --%displayname(--%before/after all/each annotations) - - --%test(Supports multiple before/after all/each procedure level definitions) - procedure multiple_before_after; - - --%test(Supports multiple before/after all/each standalone level definitions) - procedure multiple_standalone_bef_aft; - - --%test(Supports mixing before/after all/each annotations on single procedure) - procedure before_after_on_single_proc; - - --%test(Supports mixed before/after all/each as standalone and procedure level definitions) - procedure multiple_mixed_bef_aft; - - --%test(Gives warning if more than one --%beforeall annotation used on procedure) - procedure beforeall_annot_duplicated; - - --%test(Gives warning if more than one --%beforeeach annotation used on procedure) - procedure beforeeach_annot_duplicated; - - --%test(Gives warning if more than one --%afterall annotation used on procedure) - procedure afterall_annot_duplicated; - - --%test(Gives warning if more than one --%aftereach annotation used on procedure) - procedure aftereach_annot_duplicated; - - --%test(Gives warning on before/after all/each annotations mixed with test) - procedure before_after_mixed_with_test; - - --%endcontext - - --%context(context) - --%displayname(--%context annotation) - - --%test(Creates nested suite for content between context/endcontext annotations) - procedure suite_from_context; - - --%test(Associates before/after all/each to tests in context only) - procedure before_after_in_context; - - --%test(Propagates beforeeach/aftereach to context) - procedure before_after_out_of_context; - - --%test(Does not create context and gives warning when endcontext is missing) - procedure context_without_endcontext; - - --%test(Gives warning if --%endcontext is missing a preceding --%context) - procedure endcontext_without_context; - - --%test(Gives warning when two contexts have the same name and ignores duplicated context) - procedure duplicate_context_name; - - --%endcontext - - --%context(throws) - --%displayname(--%throws annotation) - - --%test(Gives warning if --%throws annotation has no value) - procedure throws_value_empty; - - --%test(Gives warning if --%throws annotation has invalid value) - procedure throws_value_invalid; - - --%endcontext - - --%context(beforetest_aftertest) - --%displayname(--%beforetest/aftertest annotation) - - --%test(Supports multiple occurrences of beforetest/aftertest for a test) - procedure before_aftertest_multi; - - --%test(Supports same procedure defined twice) - procedure before_aftertest_twice; - - --%test(Supports beforetest from external package) - procedure before_aftertest_pkg_proc; - - --%test(Supports mix of procedure and package.procedure) - procedure before_aftertest_mixed_syntax; - - --%endcontext - - --%context(unknown_annotation) - --%displayname(--%bad_annotation) - - --%test(Gives warning when unknown procedure level annotation passed) - procedure test_bad_procedure_annotation; - - --%test(Gives warning when unknown package level annotation passed) - procedure test_bad_package_annotation; - - --%endcontext - -end test_suite_builder; -/ diff --git a/test/core/test_suite_manager.pkb b/test/core/test_suite_manager.pkb deleted file mode 100644 index bd6c97779..000000000 --- a/test/core/test_suite_manager.pkb +++ /dev/null @@ -1,1497 +0,0 @@ -create or replace package body test_suite_manager is - - ex_obj_doesnt_exist exception; - pragma exception_init(ex_obj_doesnt_exist, -04043); - - procedure create_dummy_long_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package ut3.dummy_long_test_package as - - --%suitepath(verylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtext) - --%suite(dummy_test_suite) - - --%test(dummy_test) - procedure some_dummy_test_procedure; - end;]'; - - execute immediate q'[create or replace package ut3.dummy_long_test_package1 as - - --%suitepath(verylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtext) - --%suite(dummy_test_suite1) - - --%test(dummy_test) - procedure some_dummy_test_procedure; - end;]'; - end; - - procedure drop_dummy_long_test_package is - pragma autonomous_transaction; - begin - execute immediate q'[drop package ut3.dummy_long_test_package]'; - execute immediate q'[drop package ut3.dummy_long_test_package1]'; - end; - - procedure compile_dummy_packages is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package test_package_1 is - - --%suite - --%displayname(test_package_1) - --%suitepath(tests) - --%rollback(manual) - - gv_glob_val number; - - --%beforeeach - procedure global_setup; - - --%aftereach - procedure global_teardown; - - --%test - --%displayname(Test1 from test package 1) - procedure test1; - - --%test(Test2 from test package 1) - --%beforetest(test2_setup) - --%aftertest(test2_teardown) - procedure test2; - - procedure test2_setup; - - procedure test2_teardown; - -end test_package_1;]'; - - execute immediate q'[create or replace package body test_package_1 is - gv_var_1 number; - gv_var_1_temp number; - - procedure global_setup is - begin - gv_var_1 := 1; - gv_glob_val := 1; - end; - - procedure global_teardown is - begin - gv_var_1 := 0; - gv_glob_val := 0; - end; - - procedure test1 is - begin - ut.expect(gv_var_1, 'Some expectation').to_equal(1); - end; - - procedure test2 is - begin - ut.expect(gv_var_1, 'Some expectation').to_equal(2); - end; - - procedure test2_setup is - begin - gv_var_1_temp := gv_var_1; - gv_var_1 := 2; - end; - - procedure test2_teardown is - begin - gv_var_1 := gv_var_1_temp; - gv_var_1_temp := null; - end; - -end test_package_1;]'; - - execute immediate q'[create or replace package test_package_2 is - --%suite - --%suitepath(tests.test_package_1) - - gv_glob_val varchar2(1); - - --%beforeeach - procedure global_setup; - - --%aftereach - procedure global_teardown; - - --%test - procedure test1; - - --%test - --%beforetest(test2_setup) - --%aftertest(test2_teardown) - procedure test2; - - procedure test2_setup; - - procedure test2_teardown; - - --%beforeall - procedure context_setup; - - --%test(Test in a context) - procedure context_test; - - --%afterall - procedure context_teardown; - -end test_package_2;]'; - - execute immediate q'[create or replace package body test_package_2 is - gv_var_1 varchar2(1); - gv_var_1_temp varchar2(1); - - procedure global_setup is - begin - gv_var_1 := 'a'; - gv_glob_val := 'z'; - end; - - procedure global_teardown is - begin - gv_var_1 := 'n'; - gv_glob_val := 'n'; - end; - - procedure test1 is - begin - ut.expect(gv_var_1).to_equal('a'); - end; - - procedure test2 is - begin - ut.expect(gv_var_1).to_equal('b'); - end; - - procedure test2_setup is - begin - gv_var_1_temp := gv_var_1; - gv_var_1 := 'b'; - end; - - procedure test2_teardown is - begin - gv_var_1 := gv_var_1_temp; - gv_var_1_temp := null; - end; - - procedure context_setup is - begin - gv_var_1_temp := gv_var_1 || 'a'; - end; - - procedure context_test is - begin - ut.expect(gv_var_1_temp, 'Some expectation').to_equal('na'); - end; - - procedure context_teardown is - begin - gv_var_1_temp := null; - end; - -end test_package_2;]'; - - execute immediate q'[create or replace package test_package_3 is - --%suite - --%suitepath(tests2) - --%rollback(auto) - - gv_glob_val number; - - --%beforeeach - procedure global_setup; - - --%aftereach - procedure global_teardown; - - --%test - --%rollback(auto) - procedure test1; - - --%test - --%beforetest(test2_setup) - --%aftertest(test2_teardown) - procedure test2; - - procedure test2_setup; - - procedure test2_teardown; - - --%test - --%disabled - procedure disabled_test; - -end test_package_3;]'; - - execute immediate q'[create or replace package body test_package_3 is - gv_var_1 number; - gv_var_1_temp number; - - procedure global_setup is - begin - gv_var_1 := 1; - gv_glob_val := 1; - end; - - procedure global_teardown is - begin - gv_var_1 := 0; - gv_glob_val := 0; - end; - - procedure test1 is - begin - ut.expect(gv_var_1).to_equal(1); - end; - - procedure test2 is - begin - ut.expect(gv_var_1).to_equal(2); - end; - - procedure test2_setup is - begin - gv_var_1_temp := gv_var_1; - gv_var_1 := 2; - end; - - procedure test2_teardown is - begin - gv_var_1 := gv_var_1_temp; - gv_var_1_temp := null; - end; - - procedure disabled_test is - begin - null; - end; - -end test_package_3;]'; - - execute immediate q'[create or replace package test_package_with_ctx is - - --%suite(test_package_with_ctx) - - gv_glob_val number; - - --%context(some_context) - --%displayname(Some context description) - - --%test - --%displayname(Test1 from test package 1) - procedure test1; - - --%endcontext - -end test_package_with_ctx;]'; - - execute immediate q'[create or replace package body test_package_with_ctx is - - procedure test1 is - begin - null; - end; - -end test_package_with_ctx;]'; - end; - - - procedure drop_dummy_packages is - pragma autonomous_transaction; - begin - execute immediate 'drop package test_package_1'; - execute immediate 'drop package test_package_2'; - execute immediate 'drop package test_package_3'; - execute immediate 'drop package test_package_with_ctx'; - end; - - procedure test_schema_run is - c_path constant varchar2(100) := USER; - l_objects_to_run ut3.ut_suite_items := ut3.ut_suite_items(); - l_all_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - begin - --Act - l_all_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - for i in 1..l_all_objects_to_run.count loop - if l_all_objects_to_run(i).name in ('tests', 'tests2') then - l_objects_to_run.extend; - l_objects_to_run(l_objects_to_run.last) := l_all_objects_to_run(i); - end if; - end loop; - - --Assert - ut.expect(l_objects_to_run.count).to_equal(2); - - for i in 1 .. 2 loop - l_test0_suite := treat(l_objects_to_run(i) as ut3.ut_logical_suite); - ut.expect(l_test0_suite.name in ('tests', 'tests2')).to_be_true; - - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - case l_test0_suite.name - when 'tests' then - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(3); - ut.expect(l_test1_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); - l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test2_suite.name).to_equal('test_package_2'); - ut.expect(l_test2_suite.items.count).to_equal(3); - ut.expect(l_test2_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); - when 'tests2' then - ut.expect(l_test1_suite.name).to_equal('test_package_3'); - ut.expect(l_test1_suite.items.count).to_equal(3); - end case; - - end loop; - - end; - - procedure test_top2_by_name is - c_path varchar2(100) := USER||'.test_package_2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(1); - ut.expect(l_test1_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); - l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test2_suite.name).to_equal('test_package_2'); - ut.expect(l_test2_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); - ut.expect(l_test2_suite.items.count).to_equal(3); - end; - - procedure test_top2_bt_name_cur_user is - c_path varchar2(100) := 'test_package_2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(1); - ut.expect(l_test1_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); - l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test2_suite.name).to_equal('test_package_2'); - ut.expect(l_test2_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); - ut.expect(l_test2_suite.items.count).to_equal(3); - end; - - procedure test_by_path_to_subsuite is - c_path varchar2(100) := USER||':tests.test_package_1.test_package_2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(1); - l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test2_suite.name).to_equal('test_package_2'); - ut.expect(l_test2_suite.items.count).to_equal(3); - end; - - procedure test_by_path_to_subsuite_cu is - c_path varchar2(100) := ':tests.test_package_1.test_package_2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(1); - l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test2_suite.name).to_equal('test_package_2'); - ut.expect(l_test2_suite.items.count).to_equal(3); - end; - - procedure test_subsute_proc_by_path is - c_path varchar2(100) := USER||':tests.test_package_1.test_package_2.test2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - l_test_proc ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); - ut.expect(l_test1_suite.items.count).to_equal(1); - l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test2_suite.name).to_equal('test_package_2'); - ut.expect(l_test2_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); - ut.expect(l_test2_suite.items.count).to_equal(1); - - l_test_proc := treat(l_test2_suite.items(1) as ut3.ut_test); - ut.expect(l_test_proc.name).to_equal('test2'); - ut.expect(l_test_proc.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); - ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); - ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); - - end; - - procedure test_subsute_proc_by_path_cu is - c_path varchar2(100) := ':tests.test_package_1.test_package_2.test2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - l_test_proc ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(1); - l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test2_suite.name).to_equal('test_package_2'); - ut.expect(l_test2_suite.items.count).to_equal(1); - - l_test_proc := treat(l_test2_suite.items(1) as ut3.ut_test); - ut.expect(l_test_proc.name).to_equal('test2'); - ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); - ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); - end; - - procedure test_top_pack_by_name is - c_path varchar2(100) := USER||'.test_package_1'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_suite; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(2); - - ut.expect(l_test1_suite.items(1).name).to_equal('test1'); - ut.expect(l_test1_suite.items(1).description).to_equal('Test1 from test package 1'); - ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).before_test_list.count).to_equal(0); - ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).after_test_list.count).to_equal(0); - ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).before_each_list.count).to_be_greater_than(0); - ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).disabled_flag).to_equal(0); - - ut.expect(l_test1_suite.items(2).name).to_equal('test2'); - ut.expect(l_test1_suite.items(2).description).to_equal('Test2 from test package 1'); - ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).before_test_list.count).to_be_greater_than(0); - ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).after_test_list.count).to_be_greater_than(0); - ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).before_each_list.count).to_be_greater_than(0); - ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).disabled_flag).to_equal(0); - - end; - - procedure test_top_pack_by_name_cu is - c_path varchar2(100) := 'test_package_1'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_suite; - l_test2_suite ut3.ut_suite; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(2); - - ut.expect(l_test1_suite.items(1).name).to_equal('test1'); - ut.expect(l_test1_suite.items(1).description).to_equal('Test1 from test package 1'); - ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).before_test_list.count).to_equal(0); - ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).after_test_list.count).to_equal(0); - ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).before_each_list.count).to_be_greater_than(0); - ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).disabled_flag).to_equal(0); - - ut.expect(l_test1_suite.items(2).name).to_equal('test2'); - ut.expect(l_test1_suite.items(2).description).to_equal('Test2 from test package 1'); - ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).before_test_list.count).to_be_greater_than(0); - ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).after_test_list.count).to_be_greater_than(0); - ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).before_each_list.count).to_be_greater_than(0); - ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).disabled_flag).to_equal(0); - - end; - - procedure test_top_pack_by_path is - c_path varchar2(100) := USER||':tests'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(3); - l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test2_suite.name).to_equal('test_package_2'); - ut.expect(l_test2_suite.items.count).to_equal(3); - end; - - procedure test_top_pack_by_path_cu is - c_path varchar2(100) := ':tests'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(3); - l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test2_suite.name).to_equal('test_package_2'); - ut.expect(l_test2_suite.items.count).to_equal(3); - end; - - procedure test_top_pck_proc_by_path is - c_path varchar2(100) := USER||':tests.test_package_1.test2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - l_test_proc ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(1); - l_test_proc := treat(l_test1_suite.items(1) as ut3.ut_test); - - ut.expect(l_test_proc.name).to_equal('test2'); - ut.expect(l_test_proc.description).to_equal('Test2 from test package 1'); - ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); - ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); - end; - - procedure test_top_pck_proc_by_path_cu is - c_path varchar2(100) := ':tests.test_package_1.test2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test2_suite ut3.ut_logical_suite; - l_test_proc ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(1); - l_test_proc := treat(l_test1_suite.items(1) as ut3.ut_test); - - ut.expect(l_test_proc.name).to_equal('test2'); - ut.expect(l_test_proc.description).to_equal('Test2 from test package 1'); - ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); - ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); - end; - - procedure test_top_pkc_proc_by_name is - c_path varchar2(100) := USER||'.test_package_1.test2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test_proc ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(1); - - l_test_proc := treat(l_test1_suite.items(1) as ut3.ut_test); - ut.expect(l_test_proc.name).to_equal('test2'); - ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); - ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); - end; - - procedure test_top_pkc_proc_by_name_cu is - c_path varchar2(100) := 'test_package_1.test2'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test_proc ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_1'); - ut.expect(l_test1_suite.items.count).to_equal(1); - - l_test_proc := treat(l_test1_suite.items(1) as ut3.ut_test); - ut.expect(l_test_proc.name).to_equal('test2'); - ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); - ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); - end; - - procedure test_top_pkc_nosub_by_name is - c_path varchar2(100) := USER||'.test_package_3'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test1 ut3.ut_test; - l_test3 ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests2'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_3'); - ut.expect(l_test1_suite.items.count).to_equal(3); - - l_test1 := treat(l_test1_suite.items(1) as ut3.ut_test); - ut.expect(l_test1.name).to_equal('test1'); - ut.expect(l_test1.DISABLED_FLAG).to_equal(0); - - l_test3 := treat(l_test1_suite.items(3) as ut3.ut_test); - ut.expect(l_test3.name).to_equal('disabled_test'); - ut.expect(l_test3.DISABLED_FLAG).to_equal(1); - end; - - procedure test_top_pkc_nosub_by_name_cu is - c_path varchar2(100) := 'test_package_3'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test1 ut3.ut_test; - l_test3 ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests2'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_3'); - ut.expect(l_test1_suite.items.count).to_equal(3); - - l_test1 := treat(l_test1_suite.items(1) as ut3.ut_test); - ut.expect(l_test1.name).to_equal('test1'); - ut.expect(l_test1.DISABLED_FLAG).to_equal(0); - - l_test3 := treat(l_test1_suite.items(3) as ut3.ut_test); - ut.expect(l_test3.name).to_equal('disabled_test'); - ut.expect(l_test3.DISABLED_FLAG).to_equal(1); - end; - - procedure test_top_subpck_by_path is - c_path varchar2(100) := USER||':tests2.test_package_3'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test1 ut3.ut_test; - l_test3 ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests2'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_3'); - ut.expect(l_test1_suite.items.count).to_equal(3); - - l_test1 := treat(l_test1_suite.items(1) as ut3.ut_test); - ut.expect(l_test1.name).to_equal('test1'); - ut.expect(l_test1.DISABLED_FLAG).to_equal(0); - - l_test3 := treat(l_test1_suite.items(3) as ut3.ut_test); - ut.expect(l_test3.name).to_equal('disabled_test'); - ut.expect(l_test3.DISABLED_FLAG).to_equal(1); - end; - - procedure test_top_subpck_by_path_cu is - c_path varchar2(100) := ':tests2.test_package_3'; - l_objects_to_run ut3.ut_suite_items; - - l_test0_suite ut3.ut_logical_suite; - l_test1_suite ut3.ut_logical_suite; - l_test1 ut3.ut_test; - l_test3 ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - - ut.expect(l_test0_suite.name).to_equal('tests2'); - ut.expect(l_test0_suite.items.count).to_equal(1); - l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); - - ut.expect(l_test1_suite.name).to_equal('test_package_3'); - ut.expect(l_test1_suite.items.count).to_equal(3); - - l_test1 := treat(l_test1_suite.items(1) as ut3.ut_test); - ut.expect(l_test1.name).to_equal('test1'); - ut.expect(l_test1.DISABLED_FLAG).to_equal(0); - - l_test3 := treat(l_test1_suite.items(3) as ut3.ut_test); - ut.expect(l_test3.name).to_equal('disabled_test'); - ut.expect(l_test3.DISABLED_FLAG).to_equal(1); - end; - - procedure test_search_invalid_pck is - l_objects_to_run ut3.ut_suite_items; - begin - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('failing_invalid_spec')); - - ut3.ut.expect(l_objects_to_run.count).to_be_greater_than(0); - ut3.ut.expect(l_objects_to_run(l_objects_to_run.first).object_name).to_equal('failing_invalid_spec'); - end; - - procedure compile_invalid_package is - ex_compilation_error exception; - pragma exception_init(ex_compilation_error,-24344); - pragma autonomous_transaction; - begin - begin - execute immediate q'[create or replace package failing_invalid_spec as - --%suite - gv_glob_val non_existing_table.id%type := 0; - - --%beforeall - procedure before_all; - --%test - procedure test1; - --%test - procedure test2; -end;]'; - exception when ex_compilation_error then null; - end; - begin - execute immediate q'[create or replace package body failing_invalid_spec as - procedure before_all is begin gv_glob_val := 1; end; - procedure test1 is begin ut.expect(1).to_equal(1); end; - procedure test2 is begin ut.expect(1).to_equal(1); end; -end;]'; - exception when ex_compilation_error then null; - end; - end; - procedure drop_invalid_package is - pragma autonomous_transaction; - begin - execute immediate 'drop package failing_invalid_spec'; - end; - - procedure test_search_nonexisting_pck is - l_objects_to_run ut3.ut_suite_items; - begin - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('ut3.failing_non_existing')); - ut.fail('Non existing package did not raise exception'); - exception - when others then - ut.expect(sqlerrm).to_be_like('%failing_non_existing%'); - end; - - procedure test_search_nonexist_sch_pck is - l_objects_to_run ut3.ut_suite_items; - begin - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('failing_non_existing')); - ut.fail('Non existing package without schema did not raise exception'); - exception - when others then - ut.expect(sqlerrm).to_be_like('%ORA-44001: invalid schema%'); - end; - - procedure test_desc_with_comma is - l_objects_to_run ut3.ut_suite_items; - l_suite ut3.ut_suite; - l_test ut3.ut_test; - begin - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_to_be_dropped')); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - - l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); - - ut.expect(l_suite.name).to_equal('tst_package_to_be_dropped'); - ut.expect(l_suite.description).to_equal('A suite description, though with comma, is assigned by suite_manager'); - ut.expect(l_suite.items.count).to_equal(2); - - l_test := treat(l_suite.items(1) as ut3.ut_test); - - ut.expect(l_test.name).to_equal('test1'); - ut.expect(l_test.description).to_equal('A test description, though with comma, is assigned by suite_manager'); - --- l_test := treat(l_suite.items(2) as ut3.ut_test); --- --- ut.expect(l_test.name).to_equal('test2'); --- ut.expect(l_test.description).to_equal('A test description, though with comma, is assigned by suite_manager'); - - end; - procedure setup_desc_with_comma is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package tst_package_to_be_dropped as - --%suite(A suite description, though with comma, is assigned by suite_manager) - - --%test(A test description, though with comma, is assigned by suite_manager) - procedure test1; - - --%test - --%displayname(A test description, though with comma, is assigned by suite_manager) - procedure test2; -end;'; - - execute immediate 'create or replace package body tst_package_to_be_dropped as - procedure test1 is begin ut.expect(1).to_equal(1); end; - procedure test2 is begin ut.expect(1).to_equal(1); end; -end;'; - end; - procedure clean_desc_with_comma is - pragma autonomous_transaction; - begin - begin - execute immediate 'drop package tst_package_to_be_dropped'; - exception - when ex_obj_doesnt_exist then - null; - end; - end; - - procedure test_inv_cache_on_drop is - l_test_report ut3.ut_varchar2_list; - begin - - select * bulk collect into l_test_report from table(ut3.ut.run(USER||'.tst_package_to_be_dropped')); - - -- drop package - clean_inv_cache_on_drop; - - begin - select * bulk collect into l_test_report from table(ut3.ut.run(user || '.tst_package_to_be_dropped')); - ut.fail('Cache not invalidated on package drop'); - exception - when others then - ut.expect(sqlerrm).to_be_like('%tst_package_to_be_dropped%does not exist%'); - end; - - end; - procedure setup_inv_cache_on_drop is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package tst_package_to_be_dropped as - --%suite - - --%test - procedure test1; -end;'; - - execute immediate 'create or replace package body tst_package_to_be_dropped as - procedure test1 is begin ut.expect(1).to_equal(1); end; - procedure test2 is begin ut.expect(1).to_equal(1); end; -end;'; - end; - - procedure clean_inv_cache_on_drop is - pragma autonomous_transaction; - begin - execute immediate 'drop package tst_package_to_be_dropped'; - exception - when ex_obj_doesnt_exist then - null; - end; - - procedure test_inv_pck_bodies is - l_test_report ut3.ut_varchar2_list; - begin - - select * bulk collect into l_test_report from table(ut3.ut.run(USER||'.test_dependencies')); - - ut.expect(l_test_report(l_test_report.count-1)).to_be_like('1 test_, 0 failed, 0 errored, 0 disabled, 0 warning(s)'); - --execute immediate 'select * from table(ut3.ut.run(''UT3.test_dependencies'', ut3.utplsql_test_reporter()))' into l_result; - --- ut.expect(l_result).to_equal(ut3.ut_utils.gc_success); - end; - procedure setup_inv_pck_bodies is - pragma autonomous_transaction; - begin - execute immediate 'create table test_dependency_table (id integer)'; - execute immediate 'create or replace package test_dependencies as - -- %suite - - -- %test - procedure dependant; -end;'; - execute immediate 'create or replace package body test_dependencies as - gc_dependant_variable test_dependency_table.id%type; - procedure dependant is begin null; end; -end;'; - - execute immediate 'alter table test_dependency_table modify id number'; - - end; - procedure clean_inv_pck_bodies is - pragma autonomous_transaction; - begin - execute immediate 'drop table test_dependency_table'; - execute immediate 'drop package test_dependencies'; - end; - - procedure test_pck_with_dollar is - l_objects_to_run ut3.ut_suite_items; - l_suite ut3.ut_suite; - begin - --act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_with$dollar')); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - - l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); - ut.expect(l_suite.name).to_equal('tst_package_with$dollar'); - end; - procedure setup_pck_with_dollar is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package tst_package_with$dollar as - --%suite - - --%test - procedure test1; -end;'; - - execute immediate 'create or replace package body tst_package_with$dollar as - procedure test1 is begin ut.expect(1).to_equal(1); end; - procedure test2 is begin ut.expect(1).to_equal(1); end; -end;'; - end; - procedure clean_pck_with_dollar is - pragma autonomous_transaction; - begin - execute immediate 'drop package tst_package_with$dollar'; - end; - - - procedure test_pck_with_hash is - l_objects_to_run ut3.ut_suite_items; - l_suite ut3.ut_suite; - begin - --act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_with#hash')); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - - l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); - ut.expect(l_suite.name).to_equal('tst_package_with#hash'); - end; - procedure setup_pck_with_hash is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package tst_package_with#hash as - --%suite - - --%test - procedure test1; -end;'; - - execute immediate 'create or replace package body tst_package_with#hash as - procedure test1 is begin ut.expect(1).to_equal(1); end; - procedure test2 is begin ut.expect(1).to_equal(1); end; -end;'; - end; - procedure clean_pck_with_hash is - pragma autonomous_transaction; - begin - execute immediate 'drop package tst_package_with#hash'; - end; - - - procedure test_test_with_dollar is - l_objects_to_run ut3.ut_suite_items; - l_suite ut3.ut_suite; - l_test ut3.ut_test; - begin - --act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_with_dollar_test.test$1')); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - - l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); - - ut.expect(l_suite.name).to_equal('tst_package_with_dollar_test'); - ut.expect(l_suite.items.count).to_equal(1); - - l_test := treat(l_suite.items(1) as ut3.ut_test); - - ut.expect(l_test.name).to_equal('test$1'); - - end; - procedure setup_test_with_dollar is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package tst_package_with_dollar_test as - --%suite - - --%test - procedure test$1; -end;'; - - execute immediate 'create or replace package body tst_package_with_dollar_test as - procedure test$1 is begin ut.expect(1).to_equal(1); end; -end;'; - end; - procedure clean_test_with_dollar is - pragma autonomous_transaction; - begin - execute immediate 'drop package tst_package_with_dollar_test'; - end; - - procedure test_test_with_hash is - l_objects_to_run ut3.ut_suite_items; - l_suite ut3.ut_suite; - l_test ut3.ut_test; - begin - --act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_with_hash_test.test#1')); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - - l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); - - ut.expect(l_suite.name).to_equal('tst_package_with_hash_test'); - ut.expect(l_suite.items.count).to_equal(1); - - l_test := treat(l_suite.items(1) as ut3.ut_test); - - ut.expect(l_test.name).to_equal('test#1'); - - end; - procedure setup_test_with_hash is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package tst_package_with_hash_test as - --%suite - - --%test - procedure test#1; -end;'; - - execute immediate 'create or replace package body tst_package_with_hash_test as - procedure test#1 is begin ut.expect(1).to_equal(1); end; -end;'; - end; - procedure clean_test_with_hash is - pragma autonomous_transaction; - begin - execute immediate 'drop package tst_package_with_hash_test'; - end; - - procedure test_empty_suite_path is - l_objects_to_run ut3.ut_suite_items; - l_suite ut3.ut_suite; - begin - - --act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_empty_suite_path')); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - - l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); - - ut.expect(l_suite.name).to_equal('tst_empty_suite_path'); - end; - - procedure setup_empty_suite_path is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package tst_empty_suite_path as - --%suite - --%suitepath - - --%test - procedure test1; -end;'; - execute immediate 'create or replace package body tst_empty_suite_path as - procedure test1 is begin ut.expect(1).to_equal(1); end; -end;'; - end; - - procedure clean_empty_suite_path is - pragma autonomous_transaction; - begin - execute immediate 'drop package tst_empty_suite_path'; - end; - - procedure test_pck_with_same_path is - l_objects_to_run ut3.ut_suite_items; - l_suite1 ut3.ut_logical_suite; - l_suite2 ut3.ut_logical_suite; - l_suite3 ut3.ut_suite; - begin - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(':test1.test2$.test_package_same_1')); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - - l_suite1 := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - ut.expect(l_suite1.name).to_equal('test1'); - ut.expect(l_suite1.items.count).to_equal(1); - - l_suite2 := treat(l_suite1.items(1) as ut3.ut_logical_suite); - ut.expect(l_suite2.name).to_equal('test2$'); - ut.expect(l_suite2.items.count).to_equal(1); - - l_suite3 := treat(l_suite2.items(1) as ut3.ut_suite); - ut.expect(l_suite3.name).to_equal('test_package_same_1'); - end; - - procedure setup_pck_with_same_path is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package test_package_same_1 as - --%suite - --%suitepath(test1.test2$) - - --%test - procedure test1; -end;'; - execute immediate 'create or replace package body test_package_same_1 as - procedure test1 is begin null; end; -end;'; - execute immediate 'create or replace package test_package_same_1_a as - --%suite - --%suitepath(test1.test2$) - - --%test - procedure test1; -end;'; - execute immediate 'create or replace package body test_package_same_1_a as - procedure test1 is begin null; end; -end;'; - end; - - procedure clean_pck_with_same_path is - pragma autonomous_transaction; - begin - execute immediate 'drop package test_package_same_1'; - execute immediate 'drop package test_package_same_1_a'; - end; - - procedure setup_disabled_pck is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package test_disabled_floating as - --%suite - - --%test - procedure test1; - - --%disabled - - --%test - procedure test2; - -end;]'; - end; - - procedure clean_disabled_pck is - pragma autonomous_transaction; - begin - execute immediate 'drop package test_disabled_floating'; - end; - - procedure disable_suite_floating_annot is - l_objects_to_run ut3.ut_suite_items; - l_suite ut3.ut_suite; - begin - --Arrange - setup_disabled_pck; - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('test_disabled_floating')); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); - ut.expect(l_suite.name).to_equal('test_disabled_floating'); - ut.expect(l_suite.get_disabled_flag()).to_be_true(); - - clean_disabled_pck; - end; - - procedure pck_proc_in_ctx_by_name is - c_path varchar2(100) := USER||'.test_package_with_ctx.test1'; - l_objects_to_run ut3.ut_suite_items; - - l_test_suite ut3.ut_logical_suite; - l_ctx_suite ut3.ut_logical_suite; - l_test_proc ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - - l_test_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - ut.expect(l_test_suite.name).to_equal('test_package_with_ctx'); - ut.expect(l_test_suite.items.count).to_equal(1); - - l_ctx_suite := treat(l_test_suite.items(1) as ut3.ut_logical_suite); - ut.expect(l_ctx_suite.name).to_equal('some_context'); - ut.expect(l_ctx_suite.description).to_equal('Some context description'); - ut.expect(l_ctx_suite.items.count).to_equal(1); - - l_test_proc := treat(l_ctx_suite.items(1) as ut3.ut_test); - ut.expect(l_test_proc.name).to_equal('test1'); - end; - - procedure pck_proc_in_ctx_by_path is - c_path varchar2(100) := USER||':test_package_with_ctx.some_context.test1'; - l_objects_to_run ut3.ut_suite_items; - - l_test_suite ut3.ut_logical_suite; - l_ctx_suite ut3.ut_logical_suite; - l_test_proc ut3.ut_test; - begin - --Act - l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); - - --Assert - ut.expect(l_objects_to_run.count).to_equal(1); - - l_test_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); - ut.expect(l_test_suite.name).to_equal('test_package_with_ctx'); - ut.expect(l_test_suite.items.count).to_equal(1); - - l_ctx_suite := treat(l_test_suite.items(1) as ut3.ut_logical_suite); - ut.expect(l_ctx_suite.name).to_equal('some_context'); - ut.expect(l_ctx_suite.description).to_equal('Some context description'); - ut.expect(l_ctx_suite.items.count).to_equal(1); - - l_test_proc := treat(l_ctx_suite.items(1) as ut3.ut_test); - ut.expect(l_test_proc.name).to_equal('test1'); - end; - - procedure test_get_schema_ut_packages is - l_expected ut3.ut_object_names; - l_actual ut3.ut_object_names; - begin - l_expected := ut3.ut_object_names( - ut3.ut_object_name('UT3','SOME_TEST_PACKAGE') - ); - l_actual := ut3.ut_suite_manager.get_schema_ut_packages(ut3.ut_varchar2_rows('UT3')); - - ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); - end; - procedure create_ut3_suite is - pragma autonomous_transaction; - begin - execute immediate q'[ - create or replace package ut3.some_test_package - as - --%suite - - --%test - procedure some_test; - - end;]'; - end; - - procedure drop_ut3_suite is - pragma autonomous_transaction; - begin - execute immediate q'[drop package ut3.some_test_package]'; - end; - - procedure add_new_long_test_package is - l_actual ut3.ut_object_names; - l_expected_message varchar2(500); - begin - l_expected_message := q'[ORA-20217: 'Suitepath exceeds 1000 CHAR on: UT3.DUMMY_LONG_TEST_PACKAGE,UT3.DUMMY_LONG_TEST_PACKAGE1'%]'; - l_actual := ut3.ut_suite_manager.get_schema_ut_packages(ut3.ut_varchar2_rows('UT3')); - ut.fail('Expected exception for suitpaths over 1k for two packages'); - exception - when others then - ut.expect(dbms_utility.format_error_stack()).to_be_like(l_expected_message); - ut.expect(SQLCODE).to_equal(ut3.ut_utils.gc_value_too_large); - end; - -end test_suite_manager; -/ diff --git a/test/core/test_suite_manager.pks b/test/core/test_suite_manager.pks deleted file mode 100644 index aad29fad0..000000000 --- a/test/core/test_suite_manager.pks +++ /dev/null @@ -1,175 +0,0 @@ -create or replace package test_suite_manager is - - --%suite(suite_manager) - --%suitepath(utplsql.core) - - procedure create_dummy_long_test_package; - - procedure drop_dummy_long_test_package; - - --%beforeall - procedure compile_dummy_packages; - --%afterall - procedure drop_dummy_packages; - - --%test(Prepare Runner For The Schema) - procedure test_schema_run; - - --%test(Prepare runner for the top 2 package by package user.package_name) - procedure test_top2_by_name; - - --%test(Prepare runner for the top2 package by name cur user) - procedure test_top2_bt_name_cur_user; - - --%test(Prepare runner for the subsuite by path) - procedure test_by_path_to_subsuite; - - --%test(Prepare runner for the subsuite by path for current user) - procedure test_by_path_to_subsuite_cu; - - --%test(Prepare runner for the subsuite proc only by path) - procedure test_subsute_proc_by_path; - - --%test(Prepare runner for the subsuite proc only by path for current user) - procedure test_subsute_proc_by_path_cu; - - --%test(Prepare runner for the top package by package name) - procedure test_top_pack_by_name; - - --%test(Prepare runner for the top package by package name for current user) - procedure test_top_pack_by_name_cu; - - --%test(Prepare runner for the top package by path) - procedure test_top_pack_by_path; - - --%test(Prepare runner for the top package by path for current user) - procedure test_top_pack_by_path_cu; - - --%test(Prepare runner for the top package procedure by path) - procedure test_top_pck_proc_by_path; - - --%test(Prepare runner for the top package procedure by path for current user) - procedure test_top_pck_proc_by_path_cu; - - --%test(Prepare runner for the top package procedure without sub-suites by package name) - procedure test_top_pkc_proc_by_name; - - --%test(Prepare runner for the top package procedure without sub-suites by package name for current user) - procedure test_top_pkc_proc_by_name_cu; - - --%test(Prepare runner for the top package without sub-suites by package name) - procedure test_top_pkc_nosub_by_name; - - --%test(Prepare runner for the top package without sub-suites by package name for current user) - procedure test_top_pkc_nosub_by_name_cu; - - --%test(Prepare runner for the suites package by path) - procedure test_top_subpck_by_path; - - --%test(Prepare runner for the suites package by path for current user) - procedure test_top_subpck_by_path_cu; - - --%test(Prepare runner for invalid package - it will add to suite but fail on exec ) - --%beforetest(compile_invalid_package) - --%aftertest(drop_invalid_package) - procedure test_search_invalid_pck; - procedure compile_invalid_package; - procedure drop_invalid_package; - - --%test(Prepare runner for nonexisting package with schema) - procedure test_search_nonexisting_pck; - - --%test(Prepare runner for nonexisting package without schema) - procedure test_search_nonexist_sch_pck; - - --%test(Test description with comma) - --%beforetest(setup_desc_with_comma) - --%aftertest(clean_desc_with_comma) - procedure test_desc_with_comma; - procedure setup_desc_with_comma; - procedure clean_desc_with_comma; - - --%test(Invalidate cache on package drop) - --%beforetest(setup_inv_cache_on_drop) - --%aftertest(clean_inv_cache_on_drop) - procedure test_inv_cache_on_drop; - procedure setup_inv_cache_on_drop; - procedure clean_inv_cache_on_drop; - - --%test(Includes Invalid Package Bodies In The Run) - --%beforetest(setup_inv_pck_bodies) - --%aftertest(clean_inv_pck_bodies) - procedure test_inv_pck_bodies; - procedure setup_inv_pck_bodies; - procedure clean_inv_pck_bodies; - - --%test(Package With Dollar Sign) - --%beforetest(setup_pck_with_dollar) - --%aftertest(clean_pck_with_dollar) - procedure test_pck_with_dollar; - procedure setup_pck_with_dollar; - procedure clean_pck_with_dollar; - - --%test(Package With Hash Sign) - --%beforetest(setup_pck_with_hash) - --%aftertest(clean_pck_with_hash) - procedure test_pck_with_hash; - procedure setup_pck_with_hash; - procedure clean_pck_with_hash; - - --%test(Package with test with dollar sign) - --%beforetest(setup_test_with_dollar) - --%aftertest(clean_test_with_dollar) - procedure test_test_with_dollar; - procedure setup_test_with_dollar; - procedure clean_test_with_dollar; - - --%test(Package with test with hash sign) - --%beforetest(setup_test_with_hash) - --%aftertest(clean_test_with_hash) - procedure test_test_with_hash; - procedure setup_test_with_hash; - procedure clean_test_with_hash; - - - --%test(Setup suite with empty suitepath) - --%beforetest(setup_empty_suite_path) - --%aftertest(clean_empty_suite_path) - procedure test_empty_suite_path; - procedure setup_empty_suite_path; - procedure clean_empty_suite_path; - - --%test(only the defined in suitepath suite/test is executed if multiple similarly named test suites exist in the context differed only by comment) - --%beforetest(setup_pck_with_same_path) - --%aftertest(clean_pck_with_same_path) - procedure test_pck_with_same_path; - procedure setup_pck_with_same_path; - procedure clean_pck_with_same_path; - - --%test(Whole suite gets disabled with floating annotation) - procedure disable_suite_floating_annot; - - --%test(Prepare runner for a package procedure inside context) - procedure pck_proc_in_ctx_by_name; - - --%test(Prepare runner for a package procedure inside context by path) - procedure pck_proc_in_ctx_by_path; - - --%context(get_schema_ut_packages) - - --%test(returns list of all unit test packages in given schema) - --%beforetest(create_ut3_suite) - --%aftertest(drop_ut3_suite) - procedure test_get_schema_ut_packages; - procedure create_ut3_suite; - procedure drop_ut3_suite; - - --%endcontext - - --%test(Adds suitepath to cache over 1k characters long) - --%beforetest(create_dummy_long_test_package) - --%aftertest(drop_dummy_long_test_package) - procedure add_new_long_test_package; - -end test_suite_manager; -/ diff --git a/test/core/test_ut_executable.pkb b/test/core/test_ut_executable.pkb deleted file mode 100644 index 1d2e74ff3..000000000 --- a/test/core/test_ut_executable.pkb +++ /dev/null @@ -1,109 +0,0 @@ -create or replace package body test_ut_executable is - - g_dbms_output_text varchar2(30) := 'Some output from procedure'; - - procedure exec_schema_package_proc is - l_executable ut3.ut_executable; - l_test ut3.ut_test; - l_result boolean; - begin - --Arrange - l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); - l_executable := ut3.ut_executable_test( null, 'test_ut_executable', 'passing_proc', ut3.ut_utils.gc_test_execute ); - --Act - l_result := l_executable.do_execute(l_test); - --Assert - ut.expect(l_result).to_be_true; - ut.expect(l_executable.serveroutput).to_be_null; - ut.expect(l_executable.get_error_stack_trace()).to_be_null; - end; - - procedure exec_package_proc_output is - l_executable ut3.ut_executable; - l_test ut3.ut_test; - l_result boolean; - begin - --Arrange - l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); - l_executable := ut3.ut_executable_test( user, 'test_ut_executable', 'output_proc', ut3.ut_utils.gc_test_execute ); - --Act - l_result := l_executable.do_execute(l_test); - --Assert - ut.expect(l_result).to_be_true; - ut.expect(l_executable.serveroutput).to_equal(to_clob(g_dbms_output_text||chr(10))); - ut.expect(l_executable.get_error_stack_trace()).to_be_null; - end; - - procedure exec_failing_proc is - l_executable ut3.ut_executable; - l_test ut3.ut_test; - l_result boolean; - begin - --Arrange - l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); - l_executable := ut3.ut_executable_test( user, 'test_ut_executable', 'throwing_proc', ut3.ut_utils.gc_test_execute ); - --Act - l_result := l_executable.do_execute(l_test); - --Assert - ut.expect(l_result).to_be_false; - ut.expect(l_executable.serveroutput).to_be_null; - ut.expect(l_executable.get_error_stack_trace()).to_be_like('ORA-06501: PL/SQL: program error%'); - end; - - procedure modify_stateful_package is - l_job_name varchar2(30) := 'recreate_stateful_package'; - l_cnt integer := 1; - pragma autonomous_transaction; - begin - dbms_scheduler.create_job( - job_name => l_job_name, - job_type => 'PLSQL_BLOCK', - job_action => q'/ - begin - execute immediate q'[ - create or replace package stateful_package as - g_state varchar2(3) := 'abc'; - end;]'; - end;/', - start_date => localtimestamp, - enabled => TRUE, - auto_drop => TRUE, - comments => 'one-time job' - ); - $if dbms_db_version.version >= 18 $then - dbms_session.sleep(0.4); - $else - dbms_lock.sleep(0.4); - $end - while l_cnt > 0 loop - select count(1) into l_cnt - from dba_scheduler_running_jobs srj - where srj.job_name = l_job_name; - end loop; - end; - - procedure form_name is - begin - ut.expect(ut3.ut_executable_test( user, ' package ', 'proc', null ).form_name()).to_equal(user||'.package.proc'); - ut.expect(ut3.ut_executable_test( null, 'package', ' proc ', null ).form_name()).to_equal('package.proc'); - ut.expect(ut3.ut_executable_test( null, 'proc', null, null ).form_name()).to_equal('proc'); - ut.expect(ut3.ut_executable_test( ' '||user||' ', 'proc', null, null ).form_name()).to_equal(user||'.proc'); - end; - - procedure passing_proc is - begin - null; - end; - - procedure output_proc is - begin - dbms_output.put_line(g_dbms_output_text); - end; - - procedure throwing_proc is - begin - raise program_error; - end; - -end; -/ diff --git a/test/core/test_ut_executable.pks b/test/core/test_ut_executable.pks deleted file mode 100644 index 4c11e5142..000000000 --- a/test/core/test_ut_executable.pks +++ /dev/null @@ -1,33 +0,0 @@ -create or replace package test_ut_executable is - - --%suite(ut_executable) - --%suitepath(utplsql.core) - - --%context(do_execute) - - --%test(Executes procedure in current schema when user was not provided) - procedure exec_schema_package_proc; - - --%test(Executes procedure and saves dbms_output) - procedure exec_package_proc_output; - - --%test(Executes a procedure raising exception, saves dbms_output and exception stack trace) - procedure exec_failing_proc; - - --%endcontext - - --%context(form_name) - - --%test(Builds a name for the executable test) - procedure form_name; - - --%endcontext - - procedure passing_proc; - - procedure output_proc; - - procedure throwing_proc; - -end; -/ diff --git a/test/core/test_ut_suite.pkb b/test/core/test_ut_suite.pkb deleted file mode 100644 index 04d75277a..000000000 --- a/test/core/test_ut_suite.pkb +++ /dev/null @@ -1,159 +0,0 @@ -create or replace package body test_ut_suite is - - procedure cleanup_package_state is - begin - ut_example_tests.g_number := null; - end; - - procedure disabled_suite is - l_suite ut3.ut_suite; - begin - --Arrange - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); - l_suite.path := 'ut_example_tests'; - l_suite.disabled_flag := ut3.ut_utils.boolean_to_int(true); - l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'set_g_number_0', ut3.ut_utils.gc_before_all)); - l_suite.after_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'add_1_to_g_number', ut3.ut_utils.gc_before_all)); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - --Act - l_suite.do_execute(); - --Assert - ut.expect(ut_example_tests.g_number).to_be_null; - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_disabled); - ut.expect(l_suite.results_count.disabled_count).to_equal(2); - ut.expect(l_suite.results_count.warnings_count).to_equal(0); - ut.expect(l_suite.results_count.success_count).to_equal(0); - ut.expect(l_suite.results_count.failure_count).to_equal(0); - ut.expect(l_suite.results_count.errored_count).to_equal(0); - end; - - procedure beforeall_errors is - l_suite ut3.ut_suite; - begin - --Arrange - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); - l_suite.path := 'ut_example_tests'; - l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_before_all)); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'set_g_number_0', a_line_no=> 1); - --Act - l_suite.do_execute(); - --Assert - ut.expect(ut_example_tests.g_number).to_be_null; - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(l_suite.results_count.disabled_count).to_equal(0); - ut.expect(l_suite.results_count.warnings_count).to_equal(0); - ut.expect(l_suite.results_count.success_count).to_equal(0); - ut.expect(l_suite.results_count.failure_count).to_equal(0); - ut.expect(l_suite.results_count.errored_count).to_equal(1); - end; - - procedure aftereall_errors is - l_suite ut3.ut_suite; - begin - --Arrange - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); - l_suite.path := 'ut_example_tests'; - l_suite.after_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_after_all)); - - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'set_g_number_0', a_line_no=> 1); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - --Act - l_suite.do_execute(); - --Assert - ut.expect(ut_example_tests.g_number).to_equal(1); - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_success); - ut.expect(l_suite.results_count.disabled_count).to_equal(0); - ut.expect(l_suite.results_count.warnings_count).to_equal(1); - ut.expect(l_suite.results_count.success_count).to_equal(2); - ut.expect(l_suite.results_count.failure_count).to_equal(0); - ut.expect(l_suite.results_count.errored_count).to_equal(0); - end; - - procedure package_without_body is - l_suite ut3.ut_suite; - begin - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_WITHOUT_BODY', a_line_no=> 1); - l_suite.path := 'UT_WITHOUT_BODY'; - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'ut_without_body',a_name => 'test1', a_line_no=> 1); - --Act - l_suite.do_execute(); - --Assert - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); - end; - - procedure package_with_invalid_body is - l_suite ut3.ut_suite; - begin - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_WITH_INVALID_BODY', a_line_no=> 1); - l_suite.path := 'UT_WITH_INVALID_BODY'; - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'ut_with_invalid_body',a_name => 'test1', a_line_no=> 1); - --Act - l_suite.do_execute(); - --Assert - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); - end; - - procedure test_rollback_type(a_procedure_name varchar2, a_rollback_type integer, a_expectation ut3_latest_release.ut_matcher) is - l_suite ut3.ut_suite; - begin - --Arrange - execute immediate 'delete from ut$test_table'; - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_TRANSACTION_CONTROL', a_line_no=> 1); - l_suite.path := 'ut_transaction_control'; - l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_TRANSACTION_CONTROL', 'setup', ut3.ut_utils.gc_before_all)); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => USER, a_object_name => 'ut_transaction_control',a_name => a_procedure_name, a_line_no=> 1); - l_suite.set_rollback_type(a_rollback_type); - - --Act - l_suite.do_execute(); - - --Assert - ut.expect(core.get_value(q'[ut_transaction_control.count_rows('t')]')).to_( a_expectation ); - ut.expect(core.get_value(q'[ut_transaction_control.count_rows('s')]')).to_( a_expectation ); - end; - - procedure rollback_auto is - begin - test_rollback_type('test', ut3.ut_utils.gc_rollback_auto, equal(0) ); - end; - - procedure rollback_auto_on_failure is - begin - test_rollback_type('test_failure', ut3.ut_utils.gc_rollback_auto, equal(0) ); - end; - - procedure rollback_manual is - begin - test_rollback_type('test', ut3.ut_utils.gc_rollback_manual, be_greater_than(0) ); - end; - - procedure rollback_manual_on_failure is - begin - test_rollback_type('test_failure', ut3.ut_utils.gc_rollback_manual, be_greater_than(0) ); - end; - - procedure trim_transaction_invalidators is - l_suite ut3.ut_suite; - begin - --arrange - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); - for i in 1 .. 100 loop - l_suite.add_transaction_invalidator('schema_name.package_name.procedure_name'||i); - end loop; - --Act - l_suite.rollback_to_savepoint('dummy_savepoint'); - --Assert - ut.expect(l_suite.warnings.count).to_equal(1); - end; - -end; -/ \ No newline at end of file diff --git a/test/core/test_ut_suite.pks b/test/core/test_ut_suite.pks deleted file mode 100644 index cc4de8528..000000000 --- a/test/core/test_ut_suite.pks +++ /dev/null @@ -1,40 +0,0 @@ -create or replace package test_ut_suite is - - --%suite(ut_suite) - --%suitepath(utplsql.core) - - --%beforeeach - procedure cleanup_package_state; - - --%test(Disabled flag skips tests execution in suite) - procedure disabled_suite; - - --%test(Marks each test as errored if beforeall raises exception) - procedure beforeall_errors; - - --%test(Reports warnings for each test if afterall raises exception) - procedure aftereall_errors; - - --%test(Fails all tests in package when package has no body) - procedure package_without_body; - - --%test(Fails all tests in package when package body is invalid) - procedure package_with_invalid_body; - - --%test(Performs automatic rollback after a suite) - procedure rollback_auto; - - --%test(Performs automatic rollback after a suite even if test fails) - procedure rollback_auto_on_failure; - - --%test(rollback(manual) - disables automatic rollback after a suite) - procedure rollback_manual; - - --%test(rollback(manual) - disables automatic rollback after a suite even if test fails) - procedure rollback_manual_on_failure; - - --%test(Transaction invalidators list is trimmed in warnings when too long) - procedure trim_transaction_invalidators; - -end; -/ diff --git a/test/core/test_ut_test.pkb b/test/core/test_ut_test.pkb deleted file mode 100644 index b521d6841..000000000 --- a/test/core/test_ut_test.pkb +++ /dev/null @@ -1,697 +0,0 @@ -create or replace package body test_ut_test is - - procedure cleanup_package_state is - begin - ut_example_tests.g_number := null; - end; - - procedure disabled_test is - l_suite ut3.ut_suite; - l_test ut3.ut_test; - begin - --Arrange - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); - l_suite.path := 'ut_example_tests'; - l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'set_g_number_0', ut3.ut_utils.gc_before_all)); - - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 2); - l_suite.items(l_suite.items.last).disabled_flag := ut3.ut_utils.boolean_to_int(true); - --Act - l_suite.do_execute(); - --Assert - ut.expect(ut_example_tests.g_number).to_equal(1); - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_success); - ut.expect(l_suite.results_count.disabled_count).to_equal(1); - ut.expect(l_suite.results_count.warnings_count).to_equal(0); - ut.expect(l_suite.results_count.success_count).to_equal(1); - ut.expect(l_suite.results_count.failure_count).to_equal(0); - ut.expect(l_suite.results_count.errored_count).to_equal(0); - end; - - procedure aftertest_errors is - l_suite ut3.ut_suite; - l_test ut3.ut_test; - begin - --Arrange - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); - l_suite.path := 'ut_example_tests'; - l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'set_g_number_0', ut3.ut_utils.gc_before_all)); - - l_test := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - l_test.before_test_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'add_1_to_g_number', ut3.ut_utils.gc_before_test)); - l_test.after_test_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_after_test)); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := l_test; - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - --Act - l_suite.do_execute(); - --Assert - ut.expect(ut_example_tests.g_number).to_equal(3); - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(l_suite.results_count.disabled_count).to_equal(0); - ut.expect(l_suite.results_count.warnings_count).to_equal(0); - ut.expect(l_suite.results_count.success_count).to_equal(1); - ut.expect(l_suite.results_count.failure_count).to_equal(0); - ut.expect(l_suite.results_count.errored_count).to_equal(1); - end; - - procedure aftereach_errors is - l_suite ut3.ut_suite; - l_test ut3.ut_test; - begin - --Arrange - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); - l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'set_g_number_0', ut3.ut_utils.gc_before_all)); - l_test := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - l_test.before_each_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'add_1_to_g_number', ut3.ut_utils.gc_before_each)); - l_test.after_each_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_after_each)); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := l_test; - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - --Act - l_suite.do_execute(); - --Assert - ut.expect(ut_example_tests.g_number).to_equal(3); - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(l_suite.results_count.disabled_count).to_equal(0); - ut.expect(l_suite.results_count.warnings_count).to_equal(0); - ut.expect(l_suite.results_count.success_count).to_equal(1); - ut.expect(l_suite.results_count.failure_count).to_equal(0); - ut.expect(l_suite.results_count.errored_count).to_equal(1); - end; - - procedure beforetest_errors is - l_suite ut3.ut_suite; - l_test ut3.ut_test; - begin - --Arrange - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); - l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'set_g_number_0', ut3.ut_utils.gc_before_all)); - l_test := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - l_test.before_test_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_before_test)); - l_test.after_test_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'add_1_to_g_number', ut3.ut_utils.gc_after_test)); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := l_test; - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - --Act - l_suite.do_execute(); - --Assert - ut.expect(ut_example_tests.g_number).to_equal(2); - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(l_suite.results_count.disabled_count).to_equal(0); - ut.expect(l_suite.results_count.warnings_count).to_equal(0); - ut.expect(l_suite.results_count.success_count).to_equal(1); - ut.expect(l_suite.results_count.failure_count).to_equal(0); - ut.expect(l_suite.results_count.errored_count).to_equal(1); - end; - - procedure beforeeach_errors is - l_suite ut3.ut_suite; - l_test ut3.ut_test; - begin - --Arrange - l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); - l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'set_g_number_0', ut3.ut_utils.gc_before_all)); - l_test := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - l_test.before_each_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_before_each)); - l_test.after_each_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'add_1_to_g_number', ut3.ut_utils.gc_after_each)); - l_suite.items.extend; - l_suite.items(l_suite.items.last) := l_test; - l_suite.items.extend; - l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); - --Act - l_suite.do_execute(); - --Assert - ut.expect(ut_example_tests.g_number).to_equal(2); - ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(l_suite.results_count.disabled_count).to_equal(0); - ut.expect(l_suite.results_count.warnings_count).to_equal(0); - ut.expect(l_suite.results_count.success_count).to_equal(1); - ut.expect(l_suite.results_count.failure_count).to_equal(0); - ut.expect(l_suite.results_count.errored_count).to_equal(1); - end; - - procedure after_each_executed is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.after_each_list := ut3.ut_executables(ut3.ut_executable(user, 'ut_example_tests', 'add_1_to_g_number', ut3.ut_utils.gc_after_each)); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); - ut.expect(ut_example_tests.g_number).to_equal(1); - end; - - procedure after_each_proc_name_invalid is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.after_each_list := ut3.ut_executables( - ut3.ut_executable(user, 'ut_example_tests', 'invalid setup name', ut3.ut_utils.gc_after_each) - ); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(ut_example_tests.g_number).to_equal(0); - end; - - procedure after_each_procedure_name_null is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.after_each_list := ut3.ut_executables( - ut3.ut_executable(user, 'ut_example_tests', null, ut3.ut_utils.gc_after_each) - ); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(ut_example_tests.g_number).to_equal(0); - end; - - procedure create_app_info_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package ut_output_tests - as - --%suite - - gv_before_all_client_info varchar2(200); - gv_before_each_client_info varchar2(200); - gv_before_test_client_info varchar2(200); - gv_after_test_client_info varchar2(200); - gv_after_each_client_info varchar2(200); - gv_after_all_client_info varchar2(200); - - --%test - --%beforetest(before_test) - --%aftertest(after_test) - procedure the_test; - - --%beforeall - procedure beforeall; - - --%beforeeach - procedure beforeeach; - - procedure before_test; - procedure after_test; - - --%aftereach - procedure aftereach; - - --%afterall - procedure afterall; - - end;]'; - execute immediate q'[create or replace package body ut_output_tests - as - - procedure the_test - as - l_module_name varchar2(4000); - l_action_name varchar2(4000); - l_client_info varchar2(4000); - begin - --Generate empty output - dbms_output.put_line(''); - ut.expect(1,'Test 1 Should Pass').to_equal(1); - dbms_application_info.read_module(module_name => l_module_name, action_name => l_action_name); - dbms_application_info.read_client_info(l_client_info); - ut.expect(l_module_name).to_equal('utPLSQL'); - ut.expect(l_action_name).to_be_like('ut_output_tests'); - ut.expect(l_client_info).to_be_like('the_test'); - end; - - procedure beforeall is - begin - dbms_application_info.read_client_info(gv_before_all_client_info); - end; - - procedure beforeeach is - begin - dbms_application_info.read_client_info(gv_before_each_client_info); - end; - - procedure before_test is - begin - dbms_application_info.read_client_info(gv_before_test_client_info); - end; - procedure after_test is - begin - dbms_application_info.read_client_info(gv_after_test_client_info); - end; - - procedure aftereach is - begin - dbms_application_info.read_client_info(gv_after_each_client_info); - end; - - procedure afterall is - begin - dbms_application_info.read_client_info(gv_after_all_client_info); - end; - - end;]'; - end; - - procedure drop_app_info_package is - pragma autonomous_transaction; - begin - execute immediate q'[drop package ut_output_tests]'; - end; - - procedure application_info_on_execution is - l_output_data ut3.ut_varchar2_list; - l_output clob; - function get_test_value(a_variable_name varchar2) return varchar2 is - l_result varchar2(4000); - begin - execute immediate 'begin :i := ut_output_tests.'||a_variable_name||'; end;' using out l_result; - return l_result; - end; - begin - --act - select * bulk collect into l_output_data - from table(ut3.ut.run('ut_output_tests')); - l_output := ut3.ut_utils.table_to_clob(l_output_data); - --assert - - ut.expect(get_test_value('gv_before_all_client_info')).to_equal('beforeall'); - ut.expect(get_test_value('gv_before_each_client_info')).to_equal('beforeeach'); - ut.expect(get_test_value('gv_before_test_client_info')).to_equal('before_test'); - ut.expect(get_test_value('gv_after_test_client_info')).to_equal('after_test'); - ut.expect(get_test_value('gv_after_each_client_info')).to_equal('aftereach'); - ut.expect(get_test_value('gv_after_all_client_info')).to_equal('afterall'); - ut.expect(l_output).to_be_like('%0 failed, 0 errored, 0 disabled, 0 warning(s)%'); - end; - - procedure before_each_executed is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'add_1_to_g_number', - a_line_no => null - ); - begin - l_test.before_each_list := ut3.ut_executables(ut3.ut_executable(user, 'ut_example_tests', 'set_g_number_0', ut3.ut_utils.gc_before_each)); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); - ut.expect(ut_example_tests.g_number).to_equal(1); - end; - - - procedure before_each_proc_name_invalid is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.before_each_list := ut3.ut_executables( - ut3.ut_executable(user, 'ut_example_tests', 'invalid setup name', ut3.ut_utils.gc_before_each) - ); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(ut_example_tests.g_number).to_be_null; - end; - - procedure before_each_proc_name_null is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.before_each_list := ut3.ut_executables( - ut3.ut_executable(user, 'ut_example_tests', null, ut3.ut_utils.gc_before_each) - ); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(ut_example_tests.g_number).to_be_null; - end; - - procedure ignore_savepoint_exception is - pragma autonomous_transaction; - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'ut_commit_test', - a_line_no => null - ); - begin - l_test.rollback_type := ut3.ut_utils.gc_rollback_auto; - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); - end; - - procedure owner_name_invalid is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_owner => 'invalid owner name', - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - end; - - procedure owner_name_null is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_owner => null, - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); - ut.expect(ut_example_tests.g_number).to_equal(0); - end; - - - procedure create_invalid_package is - pragma autonomous_transaction; - begin - execute immediate 'create or replace package invalid_package is - v_variable non_existing_type; - procedure ut_exampletest; - end;'; - exception when others then - null; - end; - - procedure drop_invalid_package is - pragma autonomous_transaction; - begin - execute immediate 'drop package invalid_package'; - exception when others then - null; - end; - - procedure package_in_invalid_state is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'invalid_package', - a_name => 'ut_exampletest', - a_line_no => null - ); - begin - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - end; - - procedure package_name_invalid is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'invalid package name', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - end; - - procedure package_name_null is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => null, - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - end; - - procedure procedure_name_invalid is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'invalid procedure name', - a_line_no => null - ); - begin - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - end; - - procedure procedure_name_null is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => null, - a_line_no => null - ); - begin - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - end; - - procedure before_test_executed is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'add_1_to_g_number', - a_line_no => null - ); - begin - l_test.before_test_list := ut3.ut_executables(ut3.ut_executable(user, 'ut_example_tests', 'set_g_number_0', ut3.ut_utils.gc_before_test)); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); - ut.expect(ut_example_tests.g_number).to_equal(1); - end; - - procedure before_test_proc_name_invalid is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.before_test_list := ut3.ut_executables( - ut3.ut_executable(user, 'ut_example_tests', 'invalid setup name', ut3.ut_utils.gc_before_test) - ); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(ut_example_tests.g_number).to_be_null; - end; - - procedure before_test_proc_name_null is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.before_test_list := ut3.ut_executables( - ut3.ut_executable(user, 'ut_example_tests', null, ut3.ut_utils.gc_before_test) - ); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(ut_example_tests.g_number).to_be_null; - end; - - procedure after_test_executed is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.after_test_list := ut3.ut_executables(ut3.ut_executable(user, 'ut_example_tests', 'add_1_to_g_number', ut3.ut_utils.gc_after_test)); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); - ut.expect(ut_example_tests.g_number).to_equal(1); - end; - - procedure after_test_proce_name_invalid is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.after_test_list := ut3.ut_executables( - ut3.ut_executable(user, 'ut_example_tests', 'invalid procedure name', ut3.ut_utils.gc_after_test) - ); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(ut_example_tests.g_number).to_equal(0); - end; - - procedure after_test_proc_name_null is - --Arrange - l_test ut3.ut_test := ut3.ut_test( - a_object_name => 'ut_example_tests', - a_name => 'set_g_number_0', - a_line_no => null - ); - begin - l_test.after_test_list := ut3.ut_executables( - ut3.ut_executable(user, 'ut_example_tests', null, ut3.ut_utils.gc_after_test) - ); - --Act - l_test.do_execute(); - --Assert - ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); - ut.expect(ut_example_tests.g_number).to_equal(0); - end; - - procedure create_output_package is - pragma autonomous_transaction; - begin - execute immediate q'[create or replace package ut_output_tests - as - --%suite - - --%beforeeach - procedure beforeeach; - - --%aftereach - procedure aftereach; - - --%test - --%beforetest(beforetest) - --%aftertest(aftertest) - procedure ut_passing_test; - - procedure beforetest; - - procedure aftertest; - - --%beforeall - procedure beforeall; - --%afterall - procedure afterall; - - end;]'; - execute immediate q'[create or replace package body ut_output_tests - as - - procedure beforetest is - begin - dbms_output.put_line(''); - end; - - procedure aftertest is - begin - dbms_output.put_line(''); - end; - - procedure beforeeach is - begin - dbms_output.put_line(''); - end; - - procedure aftereach is - begin - dbms_output.put_line(''); - end; - - procedure ut_passing_test is - begin - dbms_output.put_line(''); - ut.expect(1,'Test 1 Should Pass').to_equal(1); - end; - - procedure beforeall is - begin - dbms_output.put_line(''); - end; - - procedure afterall is - begin - dbms_output.put_line(''); - end; - - end;]'; - exception when others then - null; - end; - - procedure drop_output_package is - pragma autonomous_transaction; - begin - execute immediate 'drop package ut_output_tests'; - exception when others then - null; - end; - - procedure test_output_gathering is - l_output_data ut3.ut_varchar2_list; - l_output clob; - begin - select * bulk collect into l_output_data - from table(ut3.ut.run('ut_output_tests')); - l_output := ut3.ut_utils.table_to_clob(l_output_data); - ut.expect(l_output).to_be_like( - '%%%%%%%%1 tests, 0 failed, 0 errored%' - ); - end; - - -end; -/ diff --git a/test/core/test_ut_test.pks b/test/core/test_ut_test.pks deleted file mode 100644 index ee888ecd3..000000000 --- a/test/core/test_ut_test.pks +++ /dev/null @@ -1,94 +0,0 @@ -create or replace package test_ut_test is - - --%suite(ut_test) - --%suitepath(utplsql.core) - - --%beforeeach - procedure cleanup_package_state; - - --%test(Disabled flag for a test skips the tests execution in suite) - procedure disabled_test; - - --%test(Marks test as errored if aftertest raises exception) - procedure aftertest_errors; - - --%test(Marks each test as errored if aftereach raises exception) - procedure aftereach_errors; - - --%test(Marks test as errored if beforetest raises exception) - procedure beforetest_errors; - - --%test(Marks each test as errored if beforeeach raises exception) - procedure beforeeach_errors; - - - --%context(executables in test) - - --%test(Executes aftereach procedure) - procedure after_each_executed; - - --%test(Fails test when aftereach procedure name invalid) - procedure after_each_proc_name_invalid; - --%test(Tails test when aftereach procedure name null) - procedure after_each_procedure_name_null; - - procedure create_app_info_package; - procedure drop_app_info_package; - --%beforetest(create_app_info_package) - --%aftertest(drop_app_info_package) - --%test(Sets application_info on execution of individual items) - procedure application_info_on_execution; - - --%test(Executes beforeeach procedure) - procedure before_each_executed; - --%test(Fails test when beforeeach procedure name invalid) - procedure before_each_proc_name_invalid; - --%test(Fails test when beforeeach procedure name null) - procedure before_each_proc_name_null; - --%test(Does not raise exception when rollback to savepoint fails) - procedure ignore_savepoint_exception; - --%test(Fails when owner name invalid) - procedure owner_name_invalid; - --%test(Runs test as current schema when owner name null) - procedure owner_name_null; - - procedure create_invalid_package; - procedure drop_invalid_package; - --%beforetest(create_app_info_package) - --%aftertest(drop_app_info_package) - --%test(Fails the test that references package with compilation errors) - procedure package_in_invalid_state; - --%test(Fails the test when package name is invalid) - procedure package_name_invalid; - --%test(Fails the test when package name is null) - procedure package_name_null; - --%test(Fails the test when procedure name invalid) - procedure procedure_name_invalid; - --%test(Fails the test when procedure name null) - procedure procedure_name_null; - - - --%test(Executes befroretest procedure) - procedure before_test_executed; - --%test(Fails test when befroretest procedure name invalid) - procedure before_test_proc_name_invalid; - --%test(Fails test when befroretest procedure name is null) - procedure before_test_proc_name_null; - --%test(Executes aftertest procedure) - procedure after_test_executed; - --%test(Fails test when aftertest procedure name invalid) - procedure after_test_proce_name_invalid; - --%test(Fails test when aftertest procedure name is null) - procedure after_test_proc_name_null; - - procedure create_output_package; - procedure drop_output_package; - --%beforetest(create_output_package) - --%aftertest(drop_output_package) - --%test(Test output gathering) - procedure test_output_gathering; - - --%endcontext - -end; -/ diff --git a/test/core/test_ut_utils.pkb b/test/core/test_ut_utils.pkb deleted file mode 100644 index 326f5a49b..000000000 --- a/test/core/test_ut_utils.pkb +++ /dev/null @@ -1,436 +0,0 @@ -create or replace package body test_ut_utils is - - gv_nls_value nls_session_parameters.value%type; - - gc_delimiter varchar2(1) := get_numeric_delimiter(); - - function get_numeric_delimiter return varchar2 is - l_result varchar2(1); - begin - select substr(value, 1, 1) into l_result from nls_session_parameters t where t.parameter = 'NLS_NUMERIC_CHARACTERS'; - return l_result; - end; - - function clob_to_blob(p_clob clob) return blob is - l_blob blob; - l_dest_offset integer := 1; - l_source_offset integer := 1; - l_lang_context integer := dbms_lob.default_lang_ctx; - l_warning integer := dbms_lob.warn_inconvertible_char; - begin - dbms_lob.createtemporary(l_blob, true); - dbms_lob.converttoblob( - dest_lob =>l_blob, - src_clob =>p_clob, - amount =>DBMS_LOB.LOBMAXSIZE, - dest_offset =>l_dest_offset, - src_offset =>l_source_offset, - blob_csid =>DBMS_LOB.DEFAULT_CSID, - lang_context=>l_lang_context, - warning =>l_warning - ); - return l_blob; - end; - - - procedure common_clob_to_table_exec(p_clob varchar2, p_delimiter varchar2, p_expected_list ut3.ut_varchar2_list, p_limit number) is - begin - execute immediate 'declare - l_clob clob := '''||p_clob||'''; - l_delimiter varchar2(1) := '''||p_delimiter||'''; - l_expected ut3.ut_varchar2_list := :p_expected_list; - l_result ut3.ut_varchar2_list; - l_limit integer := '||p_limit||q'[; - l_result_str varchar2(32767); - l_errors integer := 0; - function compare_element(a_element_id integer, a_expected ut3.ut_varchar2_list, a_actual ut3.ut_varchar2_list) return integer is - begin - if a_expected.exists(a_element_id) and a_actual.exists(a_element_id) then - if a_expected(a_element_id) = a_actual(a_element_id) or a_expected(a_element_id) is null and a_actual(a_element_id) is null then - return 0; - else - dbms_output.put('a_expected('||a_element_id||')='||a_expected(a_element_id)||' | a_actual('||a_element_id||')='||a_actual(a_element_id)); - end if; - end if; - if not a_expected.exists(a_element_id) then - dbms_output.put('a_expected('||a_element_id||') does not exist '); - end if; - if not a_actual.exists(a_element_id) then - dbms_output.put('a_actual('||a_element_id||') does not exist '); - end if; - dbms_output.put_line(null); - return 1; - end; -begin ---Act - select column_value bulk collect into l_result from table( ut3.ut_utils.clob_to_table(l_clob, l_limit, l_delimiter) ); - for i in 1 .. l_result.count loop - l_result_str := l_result_str||''''||l_result(i)||''''||l_delimiter; - end loop; - l_result_str := rtrim(l_result_str,l_delimiter); ---Assert - for i in 1 .. greatest(l_expected.count, l_result.count) loop - l_errors := l_errors + compare_element(i, l_expected, l_result); - end loop; - ut.expect(l_errors).to_equal(0); -end;]' using p_expected_list; - end; - - procedure test_clob_to_table is - begin - common_clob_to_table_exec('a,b,c,d', ',', ut3.ut_varchar2_list('a','b','c','d'), 1000); - common_clob_to_table_exec( '', ',', ut3.ut_varchar2_list(), 1000); - common_clob_to_table_exec( '1,b,c,d', '', ut3.ut_varchar2_list('1,b,','c,d'), 4); - common_clob_to_table_exec( 'abcdefg,hijk,axa,a', ',', ut3.ut_varchar2_list('abc','def','g','hij','k','axa','a'), 3); - common_clob_to_table_exec( ',a,,c,d,', ',', ut3.ut_varchar2_list('','a','','c','d',''), 1000); - end; - - procedure test_test_result_to_char is - begin - ut.expect(ut3.ut_utils.test_result_to_char(-1),'test unknown').to_equal('Unknown(-1)'); - ut.expect(ut3.ut_utils.test_result_to_char(null),'test unknown').to_equal('Unknown(NULL)'); - ut.expect(ut3.ut_utils.test_result_to_char(ut3.ut_utils.gc_success),'test unknown').to_equal(ut3.ut_utils.gc_success_char); - end; - - procedure to_string_emptyblob is - begin - ut.expect(ut3.ut_data_value_blob(empty_blob()).to_string()).to_equal('EMPTY'); - end; - - procedure to_string_emptyclob is - begin - ut.expect(ut3.ut_data_value_clob(empty_clob()).to_string()).to_equal('EMPTY'); - end; - - procedure to_string_nullblob is - begin - ut.expect(ut3.ut_data_value_blob(null).to_string()).to_equal('NULL'); - end; - - procedure to_string_nullclob is - begin - ut.expect(ut3.ut_data_value_clob(null).to_string()).to_equal('NULL'); - end; - - procedure to_string_nulldate is - begin - ut.expect(ut3.ut_data_value_date(null).to_string()).to_equal('NULL'); - end; - - procedure to_string_nullnumber is - begin - ut.expect(ut3.ut_data_value_number(null).to_string()).to_equal('NULL'); - end; - - procedure to_string_nulltimestamp is - begin - ut.expect(ut3.ut_data_value_timestamp(null).to_string()).to_equal('NULL'); - end; - - procedure to_string_nulltimestamp_ltz is - begin - ut.expect(ut3.ut_data_value_timestamp_ltz(null).to_string()).to_equal('NULL'); - end; - - procedure to_string_nulltimestamp_tz is - begin - ut.expect(ut3.ut_data_value_timestamp_tz(null).to_string()).to_equal('NULL'); - end; - - procedure to_string_nullvarchar2 is - begin - ut.expect(ut3.ut_data_value_varchar2(null).to_string()).to_equal('NULL'); - end; - - procedure to_string_blob is - l_text varchar2(32767) := 'A test char'; - l_value blob := utl_raw.cast_to_raw(l_text); - l_expected varchar2(32767) := ''''||rawtohex(l_value)||''''; - begin - ut.expect(ut3.ut_data_value_blob(l_value).to_string()).to_equal(l_expected); - end; - - procedure to_string_clob is - l_value clob := 'A test char'; - l_expected varchar2(32767) := ''''||l_value||''''; - begin - ut.expect(ut3.ut_data_value_clob(l_value).to_string()).to_equal(l_expected); - end; - - procedure to_string_date is - l_value date := to_date('2016-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss'); - l_expected varchar2(100) := '2016-12-31T23:59:59'; - begin - ut.expect(ut3.ut_data_value_date(l_value).to_string()).to_equal(l_expected); - end; - - procedure to_string_timestamp is - l_value timestamp(9) := to_timestamp('2016-12-31 23:59:59.123456789', 'yyyy-mm-dd hh24:mi:ss.ff'); - l_expected varchar2(100) := '2016-12-31T23:59:59'||gc_delimiter||'123456789'; - begin - ut.expect(ut3.ut_data_value_timestamp(l_value).to_string()).to_equal(l_expected); - end; - - procedure to_string_timestamp_ltz is - l_value timestamp(9) with local time zone := to_timestamp('2016-12-31 23:59:59.123456789', 'yyyy-mm-dd hh24:mi:ss.ff'); - l_expected varchar2(100) := '2016-12-31T23:59:59'||gc_delimiter||'123456789'; - begin - ut.expect(ut3.ut_data_value_timestamp_ltz(l_value).to_string()).to_equal(l_expected); - end; - - procedure to_string_timestamp_tz is - l_value timestamp(9) with time zone := to_timestamp_tz('2016-12-31 23:59:59.123456789 -8:00', 'yyyy-mm-dd hh24:mi:ss.ff tzh:tzm'); - l_expected varchar2(100) := '2016-12-31T23:59:59'||gc_delimiter||'123456789 -08:00'; - begin - ut.expect(ut3.ut_data_value_timestamp_tz(l_value).to_string()).to_equal(l_expected); - end; - - procedure to_string_varchar2 is - l_value varchar2(20) := 'A test char'; - l_expected varchar2(100) := ''''||l_value||''''; - begin - ut.expect(ut3.ut_data_value_varchar2(l_value).to_string()).to_equal(l_expected); - end; - - procedure to_string_verybigblob is - l_text clob := lpad('A test char',32767,'1')||lpad('1',32767,'1'); - l_value blob; - begin - l_value := clob_to_blob(l_text); - ut.expect(length(ut3.ut_data_value_blob(l_value).to_string())).to_equal(ut3.ut_utils.gc_max_output_string_length); - ut.expect(ut3.ut_data_value_blob(l_value).to_string()).to_be_like('%'||ut3.ut_utils.gc_more_data_string); - end; - - procedure to_string_verybigclob is - l_value clob := lpad('A test char',32767,'1')||lpad('1',32767,'1'); - begin - ut.expect(length(ut3.ut_data_value_clob(l_value).to_string())).to_equal(ut3.ut_utils.gc_max_output_string_length); - ut.expect(ut3.ut_data_value_clob(l_value).to_string()).to_be_like('%'||ut3.ut_utils.gc_more_data_string); - end; - - procedure to_string_verybignumber is - l_value number := 1234567890123456789012345678901234567890; - l_expected varchar2(100) := '1234567890123456789012345678901234567890'; - begin - ut.expect(ut3.ut_data_value_number(l_value).to_string()).to_equal(l_expected); - end; - - procedure to_string_verybigvarchar2 is - l_value varchar2(32767) := lpad('A test char',32767,'1'); - l_result varchar2(32767); - begin - ut.expect(length(ut3.ut_data_value_varchar2(l_value).to_string())).to_equal(ut3.ut_utils.gc_max_output_string_length); - ut.expect(ut3.ut_data_value_varchar2(l_value).to_string()).to_be_like('%'||ut3.ut_utils.gc_more_data_string); - end; - - procedure to_string_verysmallnumber is - l_value number := 0.123456789012345678901234567890123456789; - l_expected varchar2(100) := gc_delimiter||'123456789012345678901234567890123456789'; - begin - ut.expect(ut3.ut_data_value_number(l_value).to_string()).to_equal(l_expected); - end; - - procedure test_table_to_clob is - procedure exec_table_to_clob(a_list ut3.ut_varchar2_list, a_delimiter varchar2, a_expected clob) is - l_result clob; - begin - l_result := ut3.ut_utils.table_to_clob(a_list, a_delimiter); - - ut.expect(l_result).to_equal(a_expected, a_nulls_are_equal => true); - end; - begin - exec_table_to_clob(null, ',', ''); - exec_table_to_clob(ut3.ut_varchar2_list(), ',', ''); - exec_table_to_clob(ut3.ut_varchar2_list('a', 'b', 'c', 'd'), ',', 'a,b,c,d'); - exec_table_to_clob(ut3.ut_varchar2_list('1,b,', 'c,d'), ',', '1,b,,c,d'); - exec_table_to_clob(ut3.ut_varchar2_list('', 'a', '', 'c', 'd', ''), ',', ',a,,c,d,'); - end; - - procedure test_append_with_multibyte is - l_lines sys.dbms_preprocessor.source_lines_t; - l_result clob; - begin - l_lines := sys.dbms_preprocessor.get_post_processed_source( - object_type => 'PACKAGE', - schema_name => user, - object_name => 'TST_CHARS' - ); - - for i in 1..l_lines.count loop - l_result := null; - ut3.ut_utils.append_to_clob(l_result, l_lines(i)); - - --Assert - ut.expect(dbms_lob.getlength(l_result),'Error for index '||i).to_equal(dbms_lob.getlength(l_lines(i))); - end loop; - end; - - procedure setup_append_with_multibyte is - pragma autonomous_transaction; - begin - select value into gv_nls_value from nls_session_parameters where parameter = 'NLS_DATE_LANGUAGE'; - execute immediate 'alter session set nls_date_language=ENGLISH'; - execute immediate 'create or replace package tst_chars as --- 2) Status of the process = 😡PE😡 with no linked data -end;'; - execute immediate 'alter session set nls_date_language=RUSSIAN'; - - end; - procedure clean_append_with_multibyte is - pragma autonomous_transaction; - begin - execute immediate 'alter session set nls_date_language='||gv_nls_value; - execute immediate 'drop package tst_chars'; - end; - - procedure test_clob_to_table_multibyte is - l_varchar2_byte_limit integer := 32767; - l_workaround_byte_limit integer := 8191; - l_singlebyte_string_max_size varchar2(32767 char) := rpad('x',l_varchar2_byte_limit,'x'); - l_twobyte_character char(1 char) := '�?'; - l_clob_multibyte clob := l_twobyte_character||l_singlebyte_string_max_size; --here we have 32769(2+32767) bytes and 32768 chars - l_expected ut3.ut_varchar2_list := ut3.ut_varchar2_list(); - l_result ut3.ut_varchar2_list; - begin - l_expected.extend(1); - l_expected(1) := l_twobyte_character||substr(l_singlebyte_string_max_size,1,l_workaround_byte_limit-1); - --Act - l_result := ut3.ut_utils.clob_to_table(l_clob_multibyte); - --Assert - ut.expect(l_result(1)).to_equal(l_expected(1)); - end; - - procedure test_to_version_split is - l_version ut3.ut_utils.t_version; - begin - l_version := ut3.ut_utils.to_version('v034.0.0456.0333'); - ut.expect(l_version.major).to_equal(34); - ut.expect(l_version.minor).to_equal(0); - ut.expect(l_version.bugfix).to_equal(456); - ut.expect(l_version.build).to_equal(333); - end; - - procedure test_trim_list_elements - is - l_list_to_be_equal ut3.ut_varchar2_list := ut3.ut_varchar2_list('hello', 'world', 'okay'); - l_list ut3.ut_varchar2_list := ut3.ut_varchar2_list(' hello ', chr(9)||'world ', 'okay'); - begin - --Act - l_list := ut3.ut_utils.trim_list_elements(l_list); - --Assert - ut.expect(anydata.convertcollection(l_list)).to_equal(anydata.convertcollection(l_list_to_be_equal)); - end; - - procedure trim_list_elemts_null_collect - is - l_list_to_be_null ut3.ut_varchar2_list; - begin - --Act - l_list_to_be_null := ut3.ut_utils.trim_list_elements(l_list_to_be_null); - --Assert - ut.expect(anydata.convertcollection(l_list_to_be_null)).to_be_null; - end; - - procedure trim_list_elemts_empty_collect - is - l_list_to_be_empty ut3.ut_varchar2_list := ut3.ut_varchar2_list(); - begin - --Act - l_list_to_be_empty := ut3.ut_utils.trim_list_elements(l_list_to_be_empty); - --Assert - ut.expect(anydata.convertcollection(l_list_to_be_empty)).to_be_empty; - end; - - procedure test_filter_list - is - l_list_to_be_equal ut3.ut_varchar2_list := ut3.ut_varchar2_list('-12458', '8956', '789'); - l_list ut3.ut_varchar2_list := ut3.ut_varchar2_list('-12458', '8956', 'okay', null,'458963', '789'); - begin - --Act - l_list := ut3.ut_utils.filter_list(l_list, '^-?[[:digit:]]{1,5}$'); - --Assert - ut.expect(anydata.convertcollection(l_list)).to_equal(anydata.convertcollection(l_list_to_be_equal)); - end; - - procedure filter_list_null_collection - is - l_list_to_be_null ut3.ut_varchar2_list; - begin - --Act - l_list_to_be_null := ut3.ut_utils.filter_list(l_list_to_be_null, '^-?[[:digit:]]{1,5}$'); - --Assert - ut.expect(anydata.convertcollection(l_list_to_be_null)).to_be_null; - end; - - procedure filter_list_empty_collection - is - l_list_to_be_empty ut3.ut_varchar2_list := ut3.ut_varchar2_list(); - begin - --Act - l_list_to_be_empty := ut3.ut_utils.filter_list(l_list_to_be_empty, '^-?[[:digit:]]{1,5}$'); - --Assert - ut.expect(anydata.convertcollection(l_list_to_be_empty)).to_be_empty; - end; - - procedure replace_multiline_comments - is - l_source clob; - l_actual clob; - l_expected clob; - begin - --Arrange - l_source := q'[ -create or replace package dummy as - - -- single line comment with disabled /* multi-line comment */ - gv_text0 varchar2(200) := q'{/* multi-line comment - in escaped q'multi-line - string*/}'; - gv_text1 varchar2(200) := '/* multi-line comment in a string*/'; - gv_text2 varchar2(200) := '/* multi-line comment - in a multi-line - string*/'; - -- ignored start of multi-line comment with multi-byte text � /* - -- ignored end of multi-line comment with multi-byte text � */ - /* multi-line comment - with - multi-byte characters ��� - in it */ - gv_text3 varchar2(200) := 'some text'; /* multiline comment*/ --followed by single-line comment - /* multi-line comment in one line*/ - gv_text4 varchar2(200) := q'{/* multi-line comment - in escaped q'multi-line - string*/}'; -end; -]'; - l_expected := q'[ -create or replace package dummy as - - -- single line comment with disabled /* multi-line comment */ - gv_text0 varchar2(200) := q'{/* multi-line comment - in escaped q'multi-line - string*/}'; - gv_text1 varchar2(200) := '/* multi-line comment in a string*/'; - gv_text2 varchar2(200) := '/* multi-line comment - in a multi-line - string*/'; - -- ignored start of multi-line comment with multi-byte text � /* - -- ignored end of multi-line comment with multi-byte text � */ - ]'||q'[ - - - - gv_text3 varchar2(200) := 'some text'; --followed by single-line comment - ]'||q'[ - gv_text4 varchar2(200) := q'{/* multi-line comment - in escaped q'multi-line - string*/}'; -end; -]'; - --Act - l_actual := ut3.ut_utils.replace_multiline_comments(l_source); - --Assert - ut.expect(l_actual).to_equal(l_expected); - end; -end test_ut_utils; -/ diff --git a/test/core/test_ut_utils.pks b/test/core/test_ut_utils.pks deleted file mode 100644 index 8452f84c3..000000000 --- a/test/core/test_ut_utils.pks +++ /dev/null @@ -1,132 +0,0 @@ -create or replace package test_ut_utils is - - --%suite(ut_utils) - --%suitepath(utplsql.core) - - function get_numeric_delimiter return varchar2; - - --%test(clob_to_table - Converts a clob into ut_varchar2_list using specified delimiter) - procedure test_clob_to_table; - - --%test(test_result_to_char - Converts numeric test result to character representation) - procedure test_test_result_to_char; - - - --%context(to_string) - - --%test(Returns 'EMPTY' string for NULL BLOB) - procedure to_string_emptyblob; - - --%test(Returns 'EMPTY' string for NULL CLOB) - procedure to_string_emptyclob; - - --%test(Returns 'NULL' string for NULL BLOB) - procedure to_string_nullblob; - - --%test(Returns 'NULL' string for NULL CLOB) - procedure to_string_nullclob; - - --%test(Returns 'NULL' string for NULL date) - procedure to_string_nulldate; - - --%test(Returns 'NULL' string for NULL number) - procedure to_string_nullnumber; - - --%test(Returns 'NULL' string for NULL timestamp) - procedure to_string_nulltimestamp; - - --%test(Returns 'NULL' string for NULL timestamp with local timezone) - procedure to_string_nulltimestamp_ltz; - - --%test(Returns 'NULL' string for NULL timestamp with timezone) - procedure to_string_nulltimestamp_tz; - - --%test(Returns 'NULL' string for NULL varchar) - procedure to_string_nullvarchar2; - - --%test(Returns string representation of BLOB) - procedure to_string_blob; - - --%test(Returns string representation of CLOB) - procedure to_string_clob; - - --%test(Returns string representation of date) - procedure to_string_date; - - --%test(Returns string representation of timestamp) - procedure to_string_timestamp; - - --%test(Returns string representation of timestamp with local timezone) - procedure to_string_timestamp_ltz; - - --%test(Returns string representation of timestamp with timezone) - procedure to_string_timestamp_tz; - - --%test(Returns varchar value) - procedure to_string_varchar2; - - --%test(Returns BLOB trimmed to 4000 chars with trailing [...]) - procedure to_string_verybigblob; - ---%test(Returns CLOB trimmed to 4000 chars with trailing [...]) - procedure to_string_verybigclob; - - --%test(Returns string representation of large number) - procedure to_string_verybignumber; - - --%test(Returns varchar2 trimmed to 4000 chars with trailing [...]) - procedure to_string_verybigvarchar2; - - --%test(Returns string representation of small number) - procedure to_string_verysmallnumber; - - --%endcontext - - --%test(table_to_clob - converts ut_varchar2_list into a CLOB value) - procedure test_table_to_clob; - - --%test(append_to_clob - adds multibyte varchar to CLOB) - --%beforetest(setup_append_with_multibyte) - --%aftertest(clean_append_with_multibyte) - procedure test_append_with_multibyte; - procedure setup_append_with_multibyte; - procedure clean_append_with_multibyte; - - --%test(clob_to_table - converts multibyte CLOB to ut_varchar2_list) - --%disabled(We cannot run this test successfully on 12.1 until we change NLSCHARACTERSET from US7ASCII to AL32UTF8) - procedure test_clob_to_table_multibyte; - - --%test(to_version - splits version string into individual version components) - procedure test_to_version_split; - - --%context(trim_list_elements) - - --%test(Trims the elements of a collection) - procedure test_trim_list_elements; - - --%test(Trim list elements with null collection) - procedure trim_list_elemts_null_collect; - - --%test(Trim list elements with empty collection) - procedure trim_list_elemts_empty_collect; - - --%endcontext - - --%context(filter_list) - - --%test(Filters the collection's elements) - procedure test_filter_list; - - --%test(Filter list elements with null collection) - procedure filter_list_null_collection; - - --%test(Filter list elements with empty collection) - procedure filter_list_empty_collection; - - --%endcontext - - --%test(replace_multiline_comments - replaces multi-line comments with empty lines) - procedure replace_multiline_comments; - -end test_ut_utils; -/ diff --git a/test/helpers/other_dummy_object.tps b/test/helpers/other_dummy_object.tps deleted file mode 100644 index c1019c415..000000000 --- a/test/helpers/other_dummy_object.tps +++ /dev/null @@ -1,16 +0,0 @@ -declare - l_exists integer; -begin - select count(1) into l_exists from user_types where type_name = 'OTHER_DUMMY_OBJECT'; - if l_exists > 0 then - execute immediate 'drop type other_dummy_object force'; - end if; -end; -/ - -create or replace type other_dummy_object as object ( - id number, - "name" varchar2(30), - "Value" varchar2(30) -) -/ \ No newline at end of file diff --git a/test/helpers/test_dummy_object_list.tps b/test/helpers/test_dummy_object_list.tps deleted file mode 100644 index e1dde66ed..000000000 --- a/test/helpers/test_dummy_object_list.tps +++ /dev/null @@ -1,4 +0,0 @@ -create or replace type test_dummy_object_list as table of test_dummy_object -/ - -grant execute on test_dummy_object_list to ut3$user#; \ No newline at end of file diff --git a/test/helpers/test_event_list.tps b/test/helpers/test_event_list.tps deleted file mode 100644 index 8abf71b13..000000000 --- a/test/helpers/test_event_list.tps +++ /dev/null @@ -1,2 +0,0 @@ -create or replace type test_event_list as table of test_event_object; -/ diff --git a/test/helpers/test_event_object.tps b/test/helpers/test_event_object.tps deleted file mode 100644 index da458d2c2..000000000 --- a/test/helpers/test_event_object.tps +++ /dev/null @@ -1,15 +0,0 @@ -declare - l_exists integer; -begin - select count(1) into l_exists from user_types where type_name = 'TEST_EVENT_OBJECT'; - if l_exists > 0 then - execute immediate 'drop type test_event_object force'; - end if; -end; -/ - -create or replace type test_event_object as object ( - event_type varchar2(1000), - event_doc xmltype -) -/ \ No newline at end of file diff --git a/test/helpers/test_tab_varchar2.tps b/test/helpers/test_tab_varchar2.tps deleted file mode 100644 index 17086292a..000000000 --- a/test/helpers/test_tab_varchar2.tps +++ /dev/null @@ -1,12 +0,0 @@ -declare - l_exists integer; -begin - select count(1) into l_exists from user_types where type_name = 'T_TAB_VARCHAR'; - if l_exists > 0 then - execute immediate 'drop type t_tab_varchar force'; - end if; -end; -/ - -create or replace type t_tab_varchar is table of varchar2(1) -/ \ No newline at end of file diff --git a/test/helpers/test_tab_varray.tps b/test/helpers/test_tab_varray.tps deleted file mode 100644 index 3c684afca..000000000 --- a/test/helpers/test_tab_varray.tps +++ /dev/null @@ -1,13 +0,0 @@ -declare - l_exists integer; -begin - select count(1) into l_exists from user_types where type_name = 'T_VARRAY'; - if l_exists > 0 then - execute immediate 'drop type t_varray force'; - end if; -end; -/ - - -create or replace type t_varray is varray(1) of number -/ \ No newline at end of file diff --git a/test/helpers/ut3user#.test_cursor_grants.pkb b/test/helpers/ut3user#.test_cursor_grants.pkb deleted file mode 100644 index 112d9559e..000000000 --- a/test/helpers/ut3user#.test_cursor_grants.pkb +++ /dev/null @@ -1,114 +0,0 @@ -create or replace package body ut3$user#.test_cursor_grants is - - procedure run_test_join_by_cursor is - begin - ut3.ut.run('test_cursor_grants.test_join_by_cursor'); - end; - - procedure run_test_equal_cursor is - begin - ut3.ut.run('test_cursor_grants.test_equal_cursor'); - end; - - procedure run_test_not_empty_cursor is - begin - ut3.ut.run('test_cursor_grants.test_not_empty_cursor'); - end; - - procedure run_test_have_count_cursor is - begin - ut3.ut.run('test_cursor_grants.test_have_count_cursor'); - end; - - procedure run_test_empty_cursor is - begin - ut3.ut.run('test_cursor_grants.test_empty_cursor'); - end; - - procedure run_test_equal_non_diff_sql is - begin - ut3.ut.run('test_cursor_grants.test_equal_non_diff_sql'); - end; - - procedure test_join_by_cursor is - l_actual SYS_REFCURSOR; - l_expected SYS_REFCURSOR; - begin - --Arrange - open l_actual for select owner, object_name,object_type from all_objects where owner = user - order by 1,2,3 asc; - open l_expected for select owner, object_name,object_type from all_objects where owner = user - order by 1,2,3 desc; - - --Act - ut3.ut.expect(l_actual).to_equal(l_expected).join_by('OBJECT_NAME,OBJECT_TYPE'); - - end; - - procedure test_equal_cursor is - l_actual SYS_REFCURSOR; - l_expected SYS_REFCURSOR; - l_list ut3_tester.test_dummy_object_list; - begin - --Arrange - open l_actual for select value(x) as item from table(l_list) x; - open l_expected for select value(x) as item from table(l_list) x; - - --Act - ut3.ut.expect(l_actual).to_equal(l_expected); - - end; - - procedure test_not_empty_cursor is - l_details_cur SYS_REFCURSOR; - l_expected ut3_tester.test_dummy_object_list; - begin - select ut3_tester.test_dummy_object( rn, 'Something '||rn, rn1) - bulk collect into l_expected - from (select rownum * case when mod(rownum,2) = 0 then -1 else 1 end rn, - rownum * case when mod(rownum,4) = 0 then -1 else 1 end rn1 - from dual connect by level <=10); - - --Arrange - open l_details_cur for - select value(x) as item from table(l_expected) x; - - --Act - ut3.ut.expect(l_details_cur).not_to_be_empty(); - end; - - procedure test_have_count_cursor is - l_expected SYS_REFCURSOR; - begin - --Arrange - open l_expected for - select value(x) as item from table(ut3_tester.test_dummy_object_list()) x; - - --Act - ut3.ut.expect(l_expected).to_have_count(0); - end; - - procedure test_empty_cursor is - l_expected SYS_REFCURSOR; - begin - open l_expected for - select value(x) as item from table(ut3_tester.test_dummy_object_list()) x; - --Act - ut3.ut.expect(l_expected).to_be_empty(); - end; - - procedure test_equal_non_diff_sql is - l_actual SYS_REFCURSOR; - l_expected SYS_REFCURSOR; - begin - open l_actual for - select to_clob('test1') as item from dual; - - open l_expected for - select to_clob('test1') as item from dual; - - ut3.ut.expect(l_actual).to_equal(l_expected); - end; - -end; -/ diff --git a/test/helpers/ut3user#.test_cursor_grants.pks b/test/helpers/ut3user#.test_cursor_grants.pks deleted file mode 100644 index cf829c09f..000000000 --- a/test/helpers/ut3user#.test_cursor_grants.pks +++ /dev/null @@ -1,30 +0,0 @@ -create or replace package ut3$user#.test_cursor_grants is - --%suite() - - procedure run_test_join_by_cursor; - procedure run_test_equal_cursor; - procedure run_test_not_empty_cursor; - procedure run_test_have_count_cursor; - procedure run_test_empty_cursor; - procedure run_test_equal_non_diff_sql; - - --%test(execute join by test) - procedure test_join_by_cursor; - - --%test(execute equal test) - procedure test_equal_cursor; - - --%test(execute not empty test) - procedure test_not_empty_cursor; - - --%test(execute have_count test) - procedure test_have_count_cursor; - - --%test(execute empty test) - procedure test_empty_cursor; - - --%test(execute test with non diff datatype) - procedure test_equal_non_diff_sql; - -end; -/ diff --git a/test/helpers/ut_example_tests.pkb b/test/helpers/ut_example_tests.pkb deleted file mode 100644 index d8afd592a..000000000 --- a/test/helpers/ut_example_tests.pkb +++ /dev/null @@ -1,24 +0,0 @@ -create or replace package body ut_example_tests -as - - procedure set_g_number_0 as - begin - g_number := 0; - end; - - procedure add_1_to_g_number as - begin - g_number := g_number + 1; - end; - - procedure failing_procedure as - begin - g_number := 1 / 0; - end; - - procedure ut_commit_test is - begin - commit; - end; -end; -/ diff --git a/test/helpers/ut_example_tests.pks b/test/helpers/ut_example_tests.pks deleted file mode 100644 index 428d55743..000000000 --- a/test/helpers/ut_example_tests.pks +++ /dev/null @@ -1,8 +0,0 @@ -create or replace package ut_example_tests as - g_number number; - procedure set_g_number_0; - procedure add_1_to_g_number; - procedure failing_procedure; - procedure ut_commit_test; -end; -/ diff --git a/test/helpers/ut_test_table.sql b/test/helpers/ut_test_table.sql deleted file mode 100644 index bccd07bc4..000000000 --- a/test/helpers/ut_test_table.sql +++ /dev/null @@ -1,11 +0,0 @@ -declare - l_exists integer; -begin - select count(1) into l_exists from user_tables where table_name = 'UT$TEST_TABLE'; - if l_exists > 0 then - execute immediate 'drop table ut$test_table'; - end if; -end; -/ - -create table ut$test_table (val varchar2(1)); diff --git a/test/helpers/ut_with_invalid_body.pkb b/test/helpers/ut_with_invalid_body.pkb deleted file mode 100644 index e265bf8de..000000000 --- a/test/helpers/ut_with_invalid_body.pkb +++ /dev/null @@ -1,4 +0,0 @@ -create or replace package body ut_with_invalid_body as - procedure test1; -end; -/ \ No newline at end of file diff --git a/test/helpers/ut_with_invalid_body.pks b/test/helpers/ut_with_invalid_body.pks deleted file mode 100644 index 702affb59..000000000 --- a/test/helpers/ut_with_invalid_body.pks +++ /dev/null @@ -1,4 +0,0 @@ -create or replace package ut_with_invalid_body as - procedure test1; -end; -/ \ No newline at end of file diff --git a/test/helpers/ut_without_body.pks b/test/helpers/ut_without_body.pks deleted file mode 100644 index 45a3c50d4..000000000 --- a/test/helpers/ut_without_body.pks +++ /dev/null @@ -1,4 +0,0 @@ -create or replace package ut_without_body as - procedure test1; -end; -/ \ No newline at end of file diff --git a/test/install_and_run_tests.sh b/test/install_and_run_tests.sh index 385cb46a4..421732be1 100755 --- a/test/install_and_run_tests.sh +++ b/test/install_and_run_tests.sh @@ -6,13 +6,17 @@ git rev-parse && cd "$(git rev-parse --show-cdup)" cd test -time "$SQLCLI" ${UT3_TESTER}/${UT3_TESTER_PASSWORD}@//${CONNECTION_STR} @install_tests.sql +time "$SQLCLI" ${UT3_TESTER_HELPER}/${UT3_TESTER_HELPER_PASSWORD}@//${CONNECTION_STR} @install_ut3_tester_helper.sql -cd .. +time "$SQLCLI" ${UT3_USER}/${UT3_USER_PASSWORD}@//${CONNECTION_STR} @install_ut3_user_tests.sql + +time "$SQLCLI" ${UT3_TESTER}/${UT3_TESTER_PASSWORD}@//${CONNECTION_STR} @install_ut3_tester_tests.sql +cd .. time utPLSQL-cli/bin/utplsql run ${UT3_TESTER}/${UT3_TESTER_PASSWORD}@${CONNECTION_STR} \ -source_path=source -owner=ut3 \ +-p='ut3_tester,ut3$user#' \ -test_path=test -c \ -f=ut_coverage_sonar_reporter -o=coverage.xml \ -f=ut_coverage_html_reporter -o=coverage.html \ diff --git a/test/install_ut3_tester_helper.sql b/test/install_ut3_tester_helper.sql index 0eabb98c9..14586c469 100644 --- a/test/install_ut3_tester_helper.sql +++ b/test/install_ut3_tester_helper.sql @@ -4,12 +4,13 @@ whenever oserror exit failure rollback alter session set plsql_optimize_level=0; --Install ut3_tester_helper -@@ut3_tester_helper/core.pks +@@ut3_tester_helper/test_dummy_object.tps -@@ut3_tester_helper/core.pkb +@@ut3_tester_helper/main_helper.pks +@@ut3_tester_helper/run_helper.pks - -grant execute on ut3_tester_helper.core to UT3$USER#; +@@ut3_tester_helper/main_helper.pkb +@@ut3_tester_helper/run_helper.pkb set linesize 200 set define on @@ -36,6 +37,12 @@ begin else dbms_output.put_line('Installation completed successfully'); end if; + + for i in ( select object_name from user_objects t where t.object_type in ('PACKAGE','TYPE')) + loop + execute immediate 'grant execute on '||i.object_name||' to PUBLIC'; + end loop; + end; / diff --git a/test/install_ut3_tester_tests.sql b/test/install_ut3_tester_tests.sql new file mode 100644 index 000000000..85b0ae201 --- /dev/null +++ b/test/install_ut3_tester_tests.sql @@ -0,0 +1,41 @@ +set define off +whenever sqlerror exit failure rollback +whenever oserror exit failure rollback + +alter session set plsql_optimize_level=0; + + +--Install tests +@@ut3_tester/core/annotations/test_before_after_annotations.pks + +@@ut3_tester/core/annotations/test_before_after_annotations.pkb + +set linesize 200 +set define on +set verify off +column text format a100 +column error_count noprint new_value error_count + +prompt Validating installation + +set heading on +select type, name, sequence, line, position, text, count(1) over() error_count + from all_errors + where owner = USER + and name not like 'BIN$%' --not recycled + and name != 'UT_WITH_INVALID_BODY' + -- errors only. ignore warnings + and attribute = 'ERROR' + order by name, type, sequence +/ + +begin + if to_number('&&error_count') > 0 then + raise_application_error(-20000, 'Not all sources were successfully installed.'); + else + dbms_output.put_line('Installation completed successfully'); + end if; +end; +/ + +exit; diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 4890d002a..666a410a4 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -6,7 +6,12 @@ alter session set plsql_optimize_level=0; prompt Install user tests @@ut3_user/expectations/test_matchers.pks +@@ut3_user/expectations/test_expectations_cursor.pks +@@ut3_user/api/test_ut_runner.pks + @@ut3_user/expectations/test_matchers.pkb +@@ut3_user/expectations/test_expectations_cursor.pkb +@@ut3_user/api/test_ut_runner.pkb set linesize 200 set define on @@ -33,6 +38,12 @@ begin else dbms_output.put_line('Installation completed successfully'); end if; + + for i in ( select object_name from user_objects t where t.object_type = 'PACKAGE') + loop + execute immediate 'grant execute on '||i.object_name||' to UT3_TESTER'; + end loop; + end; / diff --git a/test/core/annotations/test_before_after_annotations.pkb b/test/ut3_tester/core/annotations/test_before_after_annotations.pkb similarity index 99% rename from test/core/annotations/test_before_after_annotations.pkb rename to test/ut3_tester/core/annotations/test_before_after_annotations.pkb index 0aa9f5c39..804508c61 100644 --- a/test/core/annotations/test_before_after_annotations.pkb +++ b/test/ut3_tester/core/annotations/test_before_after_annotations.pkb @@ -205,7 +205,7 @@ create or replace package body test_before_after_annotations is execute immediate 'drop package dummy_before_after_test'; execute immediate 'drop package shared_test_package'; - g_tests_results := ut3.ut_utils.table_to_clob(l_test_results); + g_tests_results := ut3_tester_helper.main_helper.table_to_clob(l_test_results); end; procedure beforetest_local_procedure is diff --git a/test/core/annotations/test_before_after_annotations.pks b/test/ut3_tester/core/annotations/test_before_after_annotations.pks similarity index 100% rename from test/core/annotations/test_before_after_annotations.pks rename to test/ut3_tester/core/annotations/test_before_after_annotations.pks diff --git a/test/ut3_tester_helper/core.pkb b/test/ut3_tester/core/core.pkb similarity index 100% rename from test/ut3_tester_helper/core.pkb rename to test/ut3_tester/core/core.pkb diff --git a/test/ut3_tester_helper/core.pks b/test/ut3_tester/core/core.pks similarity index 94% rename from test/ut3_tester_helper/core.pks rename to test/ut3_tester/core/core.pks index a722a9871..c011d8916 100644 --- a/test/ut3_tester_helper/core.pks +++ b/test/ut3_tester/core/core.pks @@ -1,4 +1,4 @@ -create or replace package core is +create or replace package main_helper is gc_success number := ut3.ut_utils.gc_success; gc_failure number := ut3.ut_utils.gc_failure; diff --git a/test/ut3_tester_helper/main_helper.pkb b/test/ut3_tester_helper/main_helper.pkb new file mode 100644 index 000000000..9ceedd68a --- /dev/null +++ b/test/ut3_tester_helper/main_helper.pkb @@ -0,0 +1,90 @@ +create or replace package body main_helper is + + function get_dbms_output_as_clob return clob is + l_status number; + l_line varchar2(32767); + l_result clob; + begin + + dbms_output.get_line(line => l_line, status => l_status); + if l_status != 1 then + dbms_lob.createtemporary(l_result, true, dur => dbms_lob.session); + end if; + while l_status != 1 loop + if l_line is not null then + ut3.ut_utils.append_to_clob(l_result, l_line||chr(10)); + end if; + dbms_output.get_line(line => l_line, status => l_status); + end loop; + return l_result; + end; + + procedure execute_autonomous(a_sql varchar2) is + pragma autonomous_transaction; + begin + if a_sql is not null then + execute immediate a_sql; + end if; + commit; + end; + + function run_test(a_path varchar2) return clob is + l_lines ut3.ut_varchar2_list; + begin + select * bulk collect into l_lines from table(ut3.ut.run(a_path)); + return ut3.ut_utils.table_to_clob(l_lines); + end; + + function get_value(a_variable varchar2) return integer is + l_glob_val integer; + begin + execute immediate 'begin :l_glob_val := '||a_variable||'; end;' using out l_glob_val; + return l_glob_val; + end; + + function get_failed_expectations return ut3.ut_varchar2_list is + l_expectations_result ut3.ut_expectation_results := ut3.ut_expectation_processor.get_failed_expectations(); + l_result ut3.ut_varchar2_list := ut3.ut_varchar2_list(); + begin + for i in 1..l_expectations_result.count loop + l_result := l_result multiset union l_expectations_result(i).get_result_lines(); + end loop; + return l_result; + end; + + function get_failed_expectations(a_pos in number) return varchar2 is + l_result varchar2(32767) := ut3.ut_expectation_processor.get_failed_expectations()(a_pos).message; + begin + return l_result; + end; + + function failed_expectations_data return anydata is + begin + return anydata.convertCollection(ut3.ut_expectation_processor.get_failed_expectations()); + end; + + function get_failed_expectations_n return number is + l_num_failed number; + l_results ut3.ut_expectation_results := ut3.ut_expectation_processor.get_failed_expectations(); + begin + l_num_failed := l_results.count; + return l_num_failed; + end; + + procedure clear_expectations is + begin + ut3.ut_expectation_processor.clear_expectations(); + end; + + function table_to_clob(a_results in ut3.ut_varchar2_list) return clob is + begin + return ut3.ut_utils.table_to_clob(a_results); + end; + + function get_warnings return ut3.ut_varchar2_rows is + begin + return ut3.ut_expectation_processor.get_warnings(); + end; + +end; +/ diff --git a/test/ut3_tester_helper/main_helper.pks b/test/ut3_tester_helper/main_helper.pks new file mode 100644 index 000000000..6c7f34bc0 --- /dev/null +++ b/test/ut3_tester_helper/main_helper.pks @@ -0,0 +1,27 @@ +create or replace package main_helper is + + gc_success number := ut3.ut_utils.gc_success; + gc_failure number := ut3.ut_utils.gc_failure; + + procedure execute_autonomous(a_sql varchar2); + + function run_test(a_path varchar2) return clob; + + function get_value(a_variable varchar2) return integer; + + function get_dbms_output_as_clob return clob; + + function get_failed_expectations return ut3.ut_varchar2_list; + + function get_failed_expectations(a_pos in number) return varchar2; + + function get_failed_expectations_n return number; + + procedure clear_expectations; + + function table_to_clob(a_results in ut3.ut_varchar2_list) return clob; + + function get_warnings return ut3.ut_varchar2_rows; + +end; +/ diff --git a/test/ut3_tester_helper/run_helper.pkb b/test/ut3_tester_helper/run_helper.pkb new file mode 100644 index 000000000..0ab574e9d --- /dev/null +++ b/test/ut3_tester_helper/run_helper.pkb @@ -0,0 +1,91 @@ +create or replace package body run_helper is + + procedure setup_cache_objects is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package ut3$user#.dummy_test_package as + --%suite(dummy_test_suite) + --%rollback(manual) + + --%test(dummy_test) + --%beforetest(some_procedure) + procedure some_dummy_test_procedure; + end;]'; + execute immediate q'[create or replace procedure ut3$user#.dummy_test_procedure as + --%some_annotation(some_text) + --%rollback(manual) + begin + null; + end;]'; + execute immediate q'[create or replace procedure ut3_tester_helper.dummy_test_procedure as + --%some_annotation(some_text) + --%rollback(manual) + begin + null; + end;]'; + + execute immediate q'[grant execute on ut3_tester_helper.dummy_test_procedure to public]'; + end; + + + procedure setup_cache is + pragma autonomous_transaction; + begin + setup_cache_objects(); + ut3.ut_annotation_manager.rebuild_annotation_cache('UT3$USER#','PACKAGE'); + ut3.ut_annotation_manager.rebuild_annotation_cache('UT3$USER#','PROCEDURE'); + ut3.ut_annotation_manager.rebuild_annotation_cache('UT3_TESTER_HELPER','PROCEDURE'); + end; + + procedure cleanup_cache is + pragma autonomous_transaction; + begin + delete from ut3.ut_annotation_cache_info + where object_type = 'PROCEDURE' and object_owner in ('UT3$USER#','UT3_TESTER_HELPER') + or object_type = 'PACKAGE' and object_owner = user and object_name = 'DUMMY_TEST_PACKAGE'; + execute immediate q'[drop package ut3$user#.dummy_test_package]'; + execute immediate q'[drop procedure ut3$user#.dummy_test_procedure]'; + execute immediate q'[drop procedure ut3_tester_helper.dummy_test_procedure]'; + end; + + procedure db_link_setup is + l_service_name varchar2(100); + begin + select global_name into l_service_name from global_name; + execute immediate + 'create public database link db_loopback connect to ut3$user# identified by ut3 + using ''(DESCRIPTION= + (ADDRESS=(PROTOCOL=TCP) + (HOST='||sys_context('userenv','SERVER_HOST')||') + (PORT=1521) + ) + (CONNECT_DATA=(SERVICE_NAME='||l_service_name||')))'''; + execute immediate q'[ + create or replace package ut3$user#.test_db_link is + --%suite + + --%test + procedure runs_with_db_link; + end;]'; + + execute immediate q'[ + create or replace package body ut3$user#.test_db_link is + procedure runs_with_db_link is + a_value integer; + begin + select 1 into a_value + from dual@db_loopback; + ut3.ut.expect(a_value).to_be_null(); + end; + end;]'; + + end; + + procedure db_link_cleanup is + begin + begin execute immediate 'drop public database link db_loopback'; exception when others then null; end; + begin execute immediate 'drop package ut3$user#.test_db_link'; exception when others then null; end; + end; + +end; +/ diff --git a/test/ut3_tester_helper/run_helper.pks b/test/ut3_tester_helper/run_helper.pks new file mode 100644 index 000000000..fefd3b546 --- /dev/null +++ b/test/ut3_tester_helper/run_helper.pks @@ -0,0 +1,9 @@ +create or replace package run_helper is + + procedure setup_cache_objects; + procedure setup_cache; + procedure cleanup_cache; + procedure db_link_setup; + procedure db_link_cleanup; +end; +/ diff --git a/test/helpers/test_dummy_object.tps b/test/ut3_tester_helper/test_dummy_object.tps similarity index 100% rename from test/helpers/test_dummy_object.tps rename to test/ut3_tester_helper/test_dummy_object.tps diff --git a/test/api/test_ut_runner.pkb b/test/ut3_user/api/test_ut_runner.pkb similarity index 75% rename from test/api/test_ut_runner.pkb rename to test/ut3_user/api/test_ut_runner.pkb index 79c78d911..4d59c78e2 100644 --- a/test/api/test_ut_runner.pkb +++ b/test/ut3_user/api/test_ut_runner.pkb @@ -1,48 +1,18 @@ create or replace package body test_ut_runner is procedure setup_cache_objects is - pragma autonomous_transaction; begin - execute immediate q'[create or replace package dummy_test_package as - --%suite(dummy_test_suite) - --%rollback(manual) - - --%test(dummy_test) - --%beforetest(some_procedure) - procedure some_dummy_test_procedure; - end;]'; - execute immediate q'[create or replace procedure dummy_test_procedure as - --%some_annotation(some_text) - --%rollback(manual) - begin - null; - end;]'; - execute immediate q'[create or replace procedure ut3.dummy_test_procedure as - --%some_annotation(some_text) - --%rollback(manual) - begin - null; - end;]'; + ut3_tester_helper.run_helper.setup_cache_objects(); end; procedure setup_cache is - pragma autonomous_transaction; begin - setup_cache_objects(); - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PROCEDURE'); - ut3.ut_annotation_manager.rebuild_annotation_cache('UT3','PROCEDURE'); + ut3_tester_helper.run_helper.setup_cache(); end; procedure cleanup_cache is - pragma autonomous_transaction; begin - delete from ut3.ut_annotation_cache_info - where object_type = 'PROCEDURE' and object_owner in ('UT3',user) - or object_type = 'PACKAGE' and object_owner = user and object_name = 'DUMMY_TEST_PACKAGE'; - execute immediate q'[drop package dummy_test_package]'; - execute immediate q'[drop procedure dummy_test_procedure]'; - execute immediate q'[drop procedure ut3.dummy_test_procedure]'; + ut3_tester_helper.run_helper.cleanup_cache(); end; procedure create_test_spec @@ -171,7 +141,7 @@ end;'; bulk collect into l_results from table(ut3.ut.run('test_cache')); --Assert - l_actual := ut3.ut_utils.table_to_clob(l_results); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); l_expected := '%ut3.ut.expect(1).to_be_null;%'; ut.expect(l_actual).to_be_like(l_expected); drop_test_package(); @@ -217,29 +187,29 @@ end;'; procedure test_purge_cache_schema_type is l_actual sys_refcursor; begin - + open l_actual for select * from ut3.ut_annotation_cache_info - where object_owner = user and object_type = 'PROCEDURE'; + where object_owner = sys_context('USERENV', 'CURRENT_USER') and object_type = 'PROCEDURE'; ut.expect(l_actual).not_to_be_empty(); --Act - ut3.ut_runner.purge_cache(user,'PROCEDURE'); + ut3.ut_runner.purge_cache(sys_context('USERENV', 'CURRENT_USER'),'PROCEDURE'); --Assert open l_actual for select * from ut3.ut_annotation_cache_info - where object_owner = user and object_type = 'PROCEDURE'; + where object_owner = sys_context('USERENV', 'CURRENT_USER') and object_type = 'PROCEDURE'; --Cache purged for object owner/type ut.expect(l_actual).to_be_empty(); open l_actual for select * from ut3.ut_annotation_cache_info - where object_owner = user and object_type = 'PACKAGE'; + where object_owner = sys_context('USERENV', 'CURRENT_USER') and object_type = 'PACKAGE'; --Cache not purged for other types ut.expect(l_actual).not_to_be_empty(); open l_actual for select * from ut3.ut_annotation_cache_info - where object_owner = 'UT3' and object_type = 'PROCEDURE'; + where object_owner = 'UT3_TESTER_HELPER' and object_type = 'PROCEDURE'; --Cache not purged for other owners ut.expect(l_actual).not_to_be_empty(); @@ -249,19 +219,19 @@ end;'; l_actual integer; begin --Act - ut3.ut_annotation_manager.rebuild_annotation_cache(user,'PACKAGE'); + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); --Assert select count(1) into l_actual from ut3.ut_annotation_cache_info i join ut3.ut_annotation_cache c on c.cache_id = i.cache_id - where object_owner = user and object_type = 'PACKAGE' and object_name = 'DUMMY_TEST_PACKAGE'; - --Rebuild cache for user/packages + where object_owner = sys_context('USERENV', 'CURRENT_USER') and object_type = 'PACKAGE' and object_name = 'DUMMY_TEST_PACKAGE'; + --Rebuild cache for sys_context('USERENV', 'CURRENT_USER')/packages ut.expect(l_actual).to_equal(4); select count(1) into l_actual from ut3.ut_annotation_cache_info i join ut3.ut_annotation_cache c on c.cache_id = i.cache_id - where object_owner = 'UT3' and object_type = 'PROCEDURE'; + where object_owner = 'UT3_TESTER_HELPER' and object_type = 'PROCEDURE'; --Did not rebuild cache for ut3/procedures ut.expect(l_actual).to_equal(0); @@ -274,12 +244,12 @@ end;'; --Arrange open l_expected for select - 'UT3_TESTER' object_owner, 'DUMMY_TEST_PACKAGE' object_name, 'DUMMY_TEST_PACKAGE' item_name, + 'UT3$USER#' object_owner, 'DUMMY_TEST_PACKAGE' object_name, 'DUMMY_TEST_PACKAGE' item_name, 'dummy_test_suite' item_description, 'UT_SUITE' item_type, 2 item_line_no, 'dummy_test_package' path, 0 disabled_flag from dual union all select - 'UT3_TESTER' object_owner, 'DUMMY_TEST_PACKAGE' object_name, 'SOME_DUMMY_TEST_PROCEDURE' item_name, + 'UT3$USER#' object_owner, 'DUMMY_TEST_PACKAGE' object_name, 'SOME_DUMMY_TEST_PROCEDURE' item_name, 'dummy_test' item_description, 'UT_TEST' item_type, 5 item_line_no, 'dummy_test_package.some_dummy_test_procedure' path, 0 disabled_flag from dual; @@ -316,42 +286,14 @@ end;'; procedure db_link_cleanup is begin - begin execute immediate 'drop public database link db_loopback'; exception when others then null; end; - begin execute immediate 'drop package test_db_link'; exception when others then null; end; + ut3_tester_helper.run_helper.db_link_cleanup(); end; procedure db_link_setup is l_service_name varchar2(100); - begin - select global_name into l_service_name from global_name; - execute immediate - 'create public database link db_loopback connect to ut3_tester identified by ut3 - using ''(DESCRIPTION= - (ADDRESS=(PROTOCOL=TCP) - (HOST='||sys_context('userenv','SERVER_HOST')||') - (PORT=1521) - ) - (CONNECT_DATA=(SERVICE_NAME='||l_service_name||')))'''; - execute immediate q'[ - create or replace package test_db_link is - --%suite - - --%test - procedure runs_with_db_link; - end;]'; - - execute immediate q'[ - create or replace package body test_db_link is - procedure runs_with_db_link is - a_value integer; - begin - select 1 into a_value - from dual@db_loopback; - ut3.ut.expect(a_value).to_be_null(); - end; - end;]'; - - end; + begin + ut3_tester_helper.run_helper.db_link_setup(); + end; procedure raises_20213_on_fail_link is l_reporter ut3.ut_documentation_reporter := ut3.ut_documentation_reporter(); @@ -448,7 +390,7 @@ end;'; bulk collect into l_results from table(ut3.ut.run(ut3.ut_varchar2_list('test_csl_names1','test_csl_names2'))); - l_actual := ut3.ut_utils.table_to_clob(l_results); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); ut.expect(l_actual).to_be_like('%Finished in % seconds %4 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); end; @@ -461,7 +403,7 @@ end;'; bulk collect into l_results from table(ut3.ut.run('test_csl_names1')); - l_actual := ut3.ut_utils.table_to_clob(l_results); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); ut.expect(l_actual).to_be_like('%Finished in % seconds %2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); end; @@ -474,7 +416,7 @@ end;'; bulk collect into l_results from table(ut3.ut.run('test_csl_names1,test_csl_names2')); - l_actual := ut3.ut_utils.table_to_clob(l_results); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); ut.expect(l_actual).to_be_like('%Finished in % seconds %4 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); end; @@ -487,7 +429,7 @@ end;'; bulk collect into l_results from table(ut3.ut.run('test_csl_names1.one_is_one,test_csl_names2.one_is_one')); - l_actual := ut3.ut_utils.table_to_clob(l_results); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); ut.expect(l_actual).to_be_like('%Finished in % seconds %2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); end; @@ -500,7 +442,7 @@ end;'; bulk collect into l_results from table(ut3.ut.run('test_csl_names1.one_is_one, test_csl_names2.one_is_one')); - l_actual := ut3.ut_utils.table_to_clob(l_results); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); ut.expect(l_actual).to_be_like('%Finished in % seconds %2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); end; @@ -520,7 +462,7 @@ end;'; ) ); - l_actual := ut3.ut_utils.table_to_clob(l_results); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); ut.expect(l_actual).to_be_like('%Finished in % seconds %2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); end; @@ -533,7 +475,7 @@ end;'; bulk collect into l_results from table(ut3.ut.run(ut3.ut_varchar2_list('test_csl_names1.one_is_one,test_csl_names2.one_is_one'))); - l_actual := ut3.ut_utils.table_to_clob(l_results); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); ut.expect(l_actual).to_be_like('%Finished in % seconds %2 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); end; @@ -542,19 +484,19 @@ end;'; begin ut.expect( ut3.ut_runner.is_test( - a_owner => 'UT3_TESTER', + a_owner => 'UT3$USER#', a_package_name => 'DUMMY_TEST_PACKAGE', a_procedure_name => 'SOME_DUMMY_TEST_PROCEDURE' ) ).to_be_true(); - ut.expect( ut3.ut_runner.is_test( 'ut3_tester','dummy_test_package','some_dummy_test_procedure' ) ).to_be_true(); + ut.expect( ut3.ut_runner.is_test( 'ut3$user#','dummy_test_package','some_dummy_test_procedure' ) ).to_be_true(); end; procedure is_test_false is begin - ut.expect( ut3.ut_runner.is_test( 'UT3_TESTER','DUMMY_TEST_PACKAGE', 'BAD' ) ).to_be_false(); - ut.expect( ut3.ut_runner.is_test( 'UT3_TESTER','DUMMY_TEST_PACKAGE', null ) ).to_be_false(); - ut.expect( ut3.ut_runner.is_test( 'UT3_TESTER',null,'some_dummy_test_procedure' ) ).to_be_false(); + ut.expect( ut3.ut_runner.is_test( 'UT3$USER#','DUMMY_TEST_PACKAGE', 'BAD' ) ).to_be_false(); + ut.expect( ut3.ut_runner.is_test( 'UT3$USER#','DUMMY_TEST_PACKAGE', null ) ).to_be_false(); + ut.expect( ut3.ut_runner.is_test( 'UT3$USER#',null,'some_dummy_test_procedure' ) ).to_be_false(); ut.expect( ut3.ut_runner.is_test( null,'DUMMY_TEST_PACKAGE','some_dummy_test_procedure' ) ).to_be_false(); end; @@ -562,26 +504,26 @@ end;'; begin ut.expect( ut3.ut_runner.is_suite( - a_owner => 'UT3_TESTER', + a_owner => 'UT3$USER#', a_package_name => 'DUMMY_TEST_PACKAGE' ) ).to_be_true(); - ut.expect( ut3.ut_runner.is_suite( 'ut3_tester','dummy_test_package' ) ).to_be_true(); + ut.expect( ut3.ut_runner.is_suite( 'ut3$user#','dummy_test_package' ) ).to_be_true(); end; procedure is_suite_false is begin - ut.expect( ut3.ut_runner.is_suite( 'UT3_TESTER','BAD' ) ).to_be_false(); - ut.expect( ut3.ut_runner.is_suite( 'UT3_TESTER', null ) ).to_be_false(); + ut.expect( ut3.ut_runner.is_suite( 'UT3$USER#','BAD' ) ).to_be_false(); + ut.expect( ut3.ut_runner.is_suite( 'UT3$USER#', null ) ).to_be_false(); ut.expect( ut3.ut_runner.is_suite( null,'DUMMY_TEST_PACKAGE' ) ).to_be_false(); end; procedure has_suites_true is begin - ut.expect( ut3.ut_runner.has_suites( a_owner => 'UT3_TESTER' ) ).to_be_true(); + ut.expect( ut3.ut_runner.has_suites( a_owner => 'UT3$USER#' ) ).to_be_true(); - ut.expect( ut3.ut_runner.has_suites( 'ut3_tester' ) ).to_be_true(); + ut.expect( ut3.ut_runner.has_suites( 'ut3$user#' ) ).to_be_true(); end; procedure has_suites_false is diff --git a/test/api/test_ut_runner.pks b/test/ut3_user/api/test_ut_runner.pks similarity index 100% rename from test/api/test_ut_runner.pks rename to test/ut3_user/api/test_ut_runner.pks diff --git a/test/core/expectations/test_expectations_cursor.pkb b/test/ut3_user/expectations/test_expectations_cursor.pkb similarity index 84% rename from test/core/expectations/test_expectations_cursor.pkb rename to test/ut3_user/expectations/test_expectations_cursor.pkb index f0d9ae36e..aa3decb11 100644 --- a/test/core/expectations/test_expectations_cursor.pkb +++ b/test/ut3_user/expectations/test_expectations_cursor.pkb @@ -13,7 +13,7 @@ create or replace package body test_expectations_cursor is procedure cleanup_expectations is begin - expectations.cleanup_expectations( ); + ut3_tester_helper.main_helper.clear_expectations( ); end; procedure setup_temp_table_test @@ -50,7 +50,7 @@ create or replace package body test_expectations_cursor is --Act - execute the expectation on cursor opened on GTT ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); --Cleanup rollback; end; @@ -78,7 +78,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); ut3.ut.reset_nls; end; @@ -93,7 +93,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure success_on_both_null @@ -104,7 +104,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure success_to_be_null @@ -114,7 +114,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_null(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure success_not_to_be_not_null @@ -124,7 +124,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_be_not_null(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure success_not_to_be_null @@ -136,7 +136,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_not_null(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure success_to_be_not_null @@ -148,7 +148,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_not_null(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure success_is_empty @@ -160,7 +160,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_empty(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure success_is_not_empty @@ -172,7 +172,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_be_empty(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure failure_is_null @@ -184,7 +184,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_null(); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure failure_is_not_null @@ -194,7 +194,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_be_null(); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure failure_is_empty @@ -206,7 +206,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_empty(); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure failure_is_not_empty @@ -218,7 +218,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_be_empty(); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure fail_null_vs_empty @@ -231,7 +231,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure fail_on_difference @@ -245,7 +245,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure fail_on_expected_missing @@ -259,7 +259,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure fail_on_actual_missing @@ -273,7 +273,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure fail_on_different_column_name @@ -287,7 +287,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; @@ -302,7 +302,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure pass_on_different_column_order @@ -316,7 +316,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ).unordered_columns; --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure pass_on_diff_column_ord_uc @@ -330,7 +330,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ).uc; --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure fail_on_multi_diff_col_order @@ -351,7 +351,7 @@ create or replace package body test_expectations_cursor is %Rows: [ 1 differences ] %Row No. 1 - Actual: 4030 %Row No. 1 - Expected: 34]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -374,7 +374,7 @@ create or replace package body test_expectations_cursor is %Rows: [ 1 differences ] %Row No. 1 - Actual: 4030 %Row No. 1 - Expected: 34]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -390,7 +390,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure include_time_in_date_with_nls @@ -407,7 +407,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); ut3.ut.reset_nls; end; @@ -422,7 +422,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure exclude_columns_as_list @@ -436,7 +436,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>ut3.ut_varchar2_list('A_COLUMN','Some_Col')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure exclude_columns_as_csv @@ -450,7 +450,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>'A_COLUMN,Some_Col'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure exclude_columns_as_mixed_list is @@ -463,7 +463,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>ut3.ut_varchar2_list('A_COLUMN','/ROW/Some_Col')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure exclude_columns_as_mix_csv_lst is @@ -476,7 +476,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>'A_COLUMN,/ROW/Some_Col'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure exclude_columns_xpath_invalid @@ -501,7 +501,7 @@ create or replace package body test_expectations_cursor is %Row No. 2 - Expected: c %Row No. 3 - Actual: d %Row No. 3 - Expected: c]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -517,7 +517,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>'/ROW/A_COLUMN|/ROW/Some_Col'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure exclude_ignores_invalid_column @@ -531,7 +531,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>ut3.ut_varchar2_list('A_COLUMN','non_existing_column')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure include_columns_as_list @@ -545,7 +545,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure include_columns_as_csv @@ -559,7 +559,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).include('RN,//A_Column, SOME_COL'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure include_columns_xpath @@ -573,7 +573,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).include('/ROW/RN|//A_Column|//SOME_COL'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure include_ignores_invalid_column @@ -587,7 +587,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list(' RN ',' non_existing_column ')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure include_exclude_col_csv_xpath @@ -601,7 +601,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude('Some_Col').include('/ROW/RN|//Some_Col'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure include_exclude_columns_list @@ -615,7 +615,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude(ut3.ut_varchar2_list('A_COLUMN')).include(ut3.ut_varchar2_list('RN','A_Column','A_COLUMN')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure data_diff_on_rows_mismatch @@ -637,7 +637,7 @@ Rows: [ 2 differences ] Row No. 2 - Actual: 6 Row No. 2 - Expected: 2 Row No. 3 - Missing: 3]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -659,7 +659,7 @@ Columns: Column [position: 2, data-type: NUMBER] is not expected in results. Rows: [ 1 differences ] All rows are different as the columns are not matching.]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -682,7 +682,7 @@ Columns: Column data-type is invalid. Expected: NUMBER, actual: VARCHAR2. Rows: [ all different ] All rows are different as the columns position is not matching.]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -704,7 +704,7 @@ Diff: Columns:% Column [data-type: NUMBER] is missing. Expected column position: 2.% Column [position: 2, data-type: NUMBER] is not expected in results.%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -729,7 +729,7 @@ Columns: Column is misplaced. Expected position: 4, actual position: 3. Rows: [ all different ] All rows are different as the columns position is not matching.]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -746,7 +746,7 @@ Rows: [ all different ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered_columns; - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; --%test(Reports only mismatched columns on column data mismatch) @@ -769,7 +769,7 @@ Rows: [ 2 differences ] Row No. 1 - Expected: 1 Row No. 2 - Actual: -2 Row No. 2 - Expected: 2]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -806,7 +806,7 @@ Rows: [ 60 differences, showing first 20 ] Row No. 38 - Expected: 38 Row No. 40 - Actual: -40 Row No. 40 - Expected: 40]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -843,7 +843,7 @@ Rows: [ 4 differences ] Row No. 3 - Actual: JESSICAJONES42345 Row No. 3 - Expected: 3TONYSTARK100000 Row No. 4 - Extra: MLUKESKYWALKER21000]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -879,7 +879,7 @@ Rows: [ 4 differences ] Row No. 3 - Actual: JESSICAJONES42345 Row No. 3 - Expected: 3TONYSTARK100000 Row No. 4 - Extra: MLUKESKYWALKER21000]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -937,7 +937,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_expected).to_equal(l_actual); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure closes_cursor_after_use @@ -1014,7 +1014,7 @@ Rows: [ 4 differences ] ut3.ut.expect(l_actual).to_equal(l_expected); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; function get_cursor return sys_refcursor is @@ -1029,8 +1029,8 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(get_cursor()).to_equal(get_cursor(), a_exclude => 'A_COLUMN,Some_Col'); --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); end; procedure deprec_to_equal_excl_list is @@ -1038,8 +1038,8 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(get_cursor()).to_equal(get_cursor(), a_exclude => ut3.ut_varchar2_list('A_COLUMN','Some_Col')); --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); end; procedure deprec_not_to_equal_excl_varch is @@ -1047,8 +1047,8 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(get_cursor()).not_to_equal(get_cursor(), a_exclude => 'A_COLUMN,Some_Col'); --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); end; procedure deprec_not_to_equal_excl_list is @@ -1056,8 +1056,8 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(get_cursor()).not_to_equal(get_cursor(), a_exclude => ut3.ut_varchar2_list('A_COLUMN','Some_Col')); --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); end; procedure deprec_equal_excl_varch is @@ -1065,8 +1065,8 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(get_cursor()).to_(ut3.equal(get_cursor(), a_exclude => 'A_COLUMN,Some_Col')); --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); end; procedure deprec_equal_excl_list is @@ -1074,8 +1074,8 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(get_cursor()).to_(ut3.equal(get_cursor(), a_exclude => ut3.ut_varchar2_list('A_COLUMN','Some_Col'))); --Assert - ut.expect(cardinality(ut3.ut_expectation_processor.get_warnings())).to_equal(1); - ut.expect(ut3.ut_expectation_processor.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); end; procedure col_diff_on_col_name_implicit is @@ -1099,7 +1099,7 @@ Rows: [ 4 differences ] %Column <2> [position: 2, data-type: CHAR] is not expected in results. %Rows: [ all different ] %All rows are different as the columns position is not matching.]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1116,7 +1116,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_unorderd_compr_success is @@ -1129,7 +1129,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered; --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_unord_compr_success_uc is @@ -1142,7 +1142,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered().uc(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_unordered_compare_fail is @@ -1168,7 +1168,7 @@ Rows: [ 4 differences ] %Rows: [ 2 differences ]% %Extra: test-666% %Missing: test-667%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1184,7 +1184,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('OBJECT_ID').uc(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_joinby_compare is @@ -1198,7 +1198,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('OBJECT_ID'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_joinby_col_not_ord @@ -1221,7 +1221,7 @@ Rows: [ 4 differences ] %PK 1 - Expected: 3 %PK 1 - Actual: 40 %PK 1 - Expected: 4]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1237,7 +1237,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by(ut3.ut_varchar2_list('OBJECT_ID,OBJECT_NAME')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_joinby_compare_nokey is @@ -1258,7 +1258,7 @@ Diff:% %Unable to join sets:% %Join key OWNER does not exists in expected% %Join key OWNER does not exists in actual%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1283,7 +1283,7 @@ Diff:% %Join key USER_ID does not exists in expected% %Join key OWNER does not exists in actual% %Join key USER_ID does not exists in actual%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1306,7 +1306,7 @@ Diff:% %Unable to join sets:% %Join key SOME_COL does not exists in expected% %Join key SOME_COL does not exists in actual%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1329,7 +1329,7 @@ Diff:% %Unable to join sets:% %Join key RN does not exists in expected% %Join key RN does not exists in actual%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1351,7 +1351,7 @@ Diff:% Diff:% %Unable to join sets:% %Join key RNI does not exists in expected%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1373,7 +1373,7 @@ Diff:% Diff:% %Unable to join sets:% %Join key RNI does not exists in actual%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1388,7 +1388,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('OBJECT_ID'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_unorder_compare_1000 is @@ -1401,7 +1401,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered; --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_joinby_compare_fail is @@ -1425,7 +1425,7 @@ Diff:% %Rows: [ 1 differences ]% %PK TEST - Actual:%-610% %PK TEST - Expected:%-600%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1451,7 +1451,7 @@ Diff:% %Rows: [ 2 differences ]% %PK TEST-610 - Extra: TEST-610% %PK TEST-600 - Missing: TEST-600%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1477,7 +1477,7 @@ Diff:% %Rows: [ 1 differences ]% %PK TESTY - Actual:%-610% %PK TESTY - Expected:%-600%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1493,7 +1493,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')).unordered; --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure joinby_incl_cols_as_list @@ -1507,7 +1507,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')).join_by('RN'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure joinby_excl_cols_as_list @@ -1521,7 +1521,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude(ut3.ut_varchar2_list('//Some_Col','A_COLUMN')).join_by('RN'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure unord_excl_cols_as_list @@ -1535,7 +1535,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude(ut3.ut_varchar2_list('A_COLUMN|//Some_Col')).unordered; --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure excl_dif_cols_as_list @@ -1549,7 +1549,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude(ut3.ut_varchar2_list('A_COLUMN')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure inlc_dif_cols_as_list @@ -1563,7 +1563,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure inlc_exc_dif_cols_as_list @@ -1577,7 +1577,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN')).exclude(ut3.ut_varchar2_list('A_COLUMN')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure compare_obj_typ_col_un is @@ -1585,16 +1585,16 @@ Diff:% l_expected sys_refcursor; begin --Arrange - open l_actual for select test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_actual for select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum asc; - open l_expected for select test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_expected for select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum desc; --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered; --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure compare_obj_typ_col_jb is @@ -1602,16 +1602,16 @@ Diff:% l_expected sys_refcursor; begin --Arrange - open l_actual for select test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_actual for select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum asc; - open l_expected for select test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_expected for select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum desc; --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('COLVAL/ID'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure comp_obj_typ_col_un_fail is @@ -1621,10 +1621,10 @@ Diff:% l_actual_message varchar2(32767); begin --Arrange - open l_actual for select test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_actual for select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum asc; - open l_expected for select test_dummy_object( rownum, 'Somethings '||rownum, rownum) as colval + open l_expected for select ut3_tester_helper.test_dummy_object( rownum, 'Somethings '||rownum, rownum) as colval from dual connect by level <=3 order by rownum desc; --Act @@ -1637,7 +1637,7 @@ Rows: [ 5 differences% %Missing: 3Somethings 33% %Missing: 2Somethings 22% %Missing: 1Somethings 11%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1647,16 +1647,16 @@ Rows: [ 5 differences% l_expected sys_refcursor; begin --Arrange - open l_actual for select test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_actual for select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum asc; - open l_expected for select test_dummy_object( rownum, 'Somethings '||rownum, rownum) as colval + open l_expected for select ut3_tester_helper.test_dummy_object( rownum, 'Somethings '||rownum, rownum) as colval from dual connect by level <=2 order by rownum desc; --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('COLVAL/ID'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_not_null(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure comp_obj_typ_col_jb_multi is @@ -1664,16 +1664,16 @@ Rows: [ 5 differences% l_expected sys_refcursor; begin --Arrange - open l_actual for select rownum as rn,test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_actual for select rownum as rn,ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum asc; - open l_expected for select rownum as rn,test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_expected for select rownum as rn,ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum desc; --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by(ut3.ut_varchar2_list('RN,COLVAL/ID')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure comp_obj_typ_col_jb_nokey is @@ -1683,10 +1683,10 @@ Rows: [ 5 differences% l_actual_message varchar2(32767); begin --Arrange - open l_actual for select test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_actual for select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum asc; - open l_expected for select test_dummy_object( rownum, 'Something '||rownum, rownum) as colval + open l_expected for select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) as colval from dual connect by level <=2 order by rownum desc; --Act @@ -1697,7 +1697,7 @@ Diff:% %Unable to join sets:% %Join key COLVAL/IDS does not exists in expected% %Join key COLVAL/IDS does not exists in actual%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1729,7 +1729,7 @@ Diff:% ut3.ut.expect(l_actual).to_equal(l_expected).join_by('KEY'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure compare_nest_tab_col_jb_fail is @@ -1764,7 +1764,7 @@ Diff:% %PK % - Expected: %% %PK % - Actual: %% %PK % - Expected: %%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1796,7 +1796,7 @@ Diff:% ut3.ut.expect(l_actual).to_equal(l_expected).join_by(ut3.ut_varchar2_list('KEY,VALUE')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure compare_nest_tab_cols_jb_fail is @@ -1831,7 +1831,7 @@ Diff:% %PK %% - Extra% %PK %% - Missing% %PK %% - Missing%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -1870,7 +1870,7 @@ Diff:% %PK %%%%%%%%%%%%%Extra%%% %PK %%%%%%%%%%%%%Missing%%% %PK %%%%%%%%%%%%%Missing%%%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); @@ -1902,7 +1902,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; @@ -1940,7 +1940,7 @@ Diff:% %Extra: 21Apples 12Apples 2 %Missing: 11Peaches 12Peaches 2 %Missing: 21Peaches 12Peaches 2%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); @@ -1974,7 +1974,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('NESTED_TABLE'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; @@ -2006,7 +2006,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('NESTED_TABLE/OBJECT_OWNER'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; @@ -2038,7 +2038,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('NESTED_TABLE/ANNOTATIONS'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; @@ -2081,10 +2081,10 @@ Diff:% %Rows: [ 1 differences ] %PK TEST - Actual: TESTTESTTEST%1testtesttest2testtesttest% %PK TEST - Expected: TESTTESTTEST%11testtesttest2testtesttest%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); - --ut.expect(expectations.failed_expectations_data()).not_to_be_empty(); + --ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); end; procedure compare_rec_coll_as_join is @@ -2122,7 +2122,7 @@ Diff:% %Join key NESTED_TABLE/ANNOTATIONS/TEXT does not exists in expected% %Join key NESTED_TABLE/ANNOTATIONS/TEXT does not exists in actual% %Please make sure that your join clause is not refferring to collection element%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); @@ -2154,7 +2154,7 @@ Diff:% %Diff: %Rows: [ 1 differences ] %Missing: Table%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); @@ -2171,9 +2171,9 @@ Diff:% and rownum < 20; --Act - ut3.ut.expect(l_actual).to_( ut3.contain(l_expected) ); + ut3.ut.expect(l_actual).to_contain(l_expected); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_to_contain_uc is @@ -2187,9 +2187,9 @@ Diff:% and rownum < 20; --Act - ut3.ut.expect(l_actual).to_( ut3.contain(l_expected).uc() ); + ut3.ut.expect(l_actual).to_contain(l_expected).uc(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_to_contain_unordered is @@ -2204,9 +2204,9 @@ Diff:% select owner, object_name,object_type from all_objects where owner = user and rownum < 20; --Act - ut3.ut.expect(l_actual).to_( ut3.contain(l_expected).unordered() ); + ut3.ut.expect(l_actual).to_contain(l_expected).unordered(); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_to_contain_fail is @@ -2232,7 +2232,7 @@ Diff:% %Missing: %%%% %Missing: %%%% %Missing: %%%%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -2248,7 +2248,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).join_by('USERNAME'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_contain_joinby_fail is @@ -2275,7 +2275,7 @@ Diff:% %Rows: [ 1 differences ] %PK TEST - Actual: -600 %PK TEST - Expected: -601%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); @@ -2292,7 +2292,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure to_cont_join_incl_cols_as_lst @@ -2306,7 +2306,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')).join_by('RN'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure contain_join_excl_cols_as_lst @@ -2320,7 +2320,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).exclude(ut3.ut_varchar2_list('//Some_Col','A_COLUMN')).join_by('RN'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure contain_excl_cols_as_list @@ -2334,7 +2334,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).exclude(ut3.ut_varchar2_list('A_COLUMN|//Some_Col')); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_not_to_contain @@ -2351,7 +2351,7 @@ Diff:% --Act ut3.ut.expect(l_actual).not_to_contain(l_expected); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure cursor_not_to_contain_fail is @@ -2379,7 +2379,7 @@ Diff:% %CHARNUMBER% %Data:% %TEST-600%]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; @@ -2395,7 +2395,7 @@ Diff:% --Act ut3.ut.expect(l_actual).not_to_contain(l_expected).join_by('USER_ID'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure not_cont_join_incl_cols_as_lst is @@ -2408,7 +2408,7 @@ Diff:% --Act ut3.ut.expect(l_actual).not_to_contain(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')).join_by('RN'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure not_cont_join_excl_cols_as_lst is @@ -2421,7 +2421,7 @@ Diff:% --Act ut3.ut.expect(l_actual).not_to_contain(l_expected).exclude(ut3.ut_varchar2_list('//Some_Col','A_COLUMN')).join_by('RN'); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure to_contain_duplicates is @@ -2437,7 +2437,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected); --Assert - ut.expect(expectations.failed_expectations_data()).to_be_empty(); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); end; procedure to_contain_duplicates_fail is @@ -2460,10 +2460,70 @@ Diff:% %Missing: % %Missing: % %Missing: %]'; - l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); end; + procedure udt_messg_format_eq is + l_actual sys_refcursor; + l_expected sys_refcursor; + l_expected_tab ut3.ut_key_value_pairs := ut3.ut_key_value_pairs(); + l_expected_message varchar2(32767); + l_actual_message varchar2(32767); + begin + select ut3.ut_key_value_pair(rownum,'Something '||rownum) + bulk collect into l_expected_tab + from dual connect by level <=2; + + --Arrange + open l_actual for select object_name, owner from all_objects where rownum < 3; + open l_expected for select value(x) as udt from table(l_expected_tab) x; + + --Act + ut3.ut.expect(l_actual).to_contain(l_expected); + --Assert + l_expected_message := q'[%Actual: refcursor [ count = 2 ] was expected to contain: refcursor [ count = 2 ] +%Diff: +%Columns: +%Column [data-type: UT_KEY_VALUE_PAIR] is missing. Expected column position: 1. +%Column [position: 1, data-type: VARCHAR2] is not expected in results. +%Column [position: 2, data-type: VARCHAR2] is not expected in results. +%Rows: [ 2 differences ] +%Missing: 1Something 1 +%Missing: 2Something 2%]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure udt_messg_format_empt is + l_actual sys_refcursor; + l_actual_tab ut3.ut_key_value_pairs := ut3.ut_key_value_pairs(); + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + select ut3.ut_key_value_pair(rownum,'Something '||rownum) + bulk collect into l_actual_tab + from dual connect by level <=2; + + --Arrange + open l_actual for select value(x) as udt from table(l_actual_tab) x; + + --Act + ut3.ut.expect(l_actual).to_be_empty(); + --Assert + l_expected_message := q'[%Actual: (refcursor [ count = 2 ]) +%Data-types: +%UT_KEY_VALUE_PAIR +%Data: +%1Something 12Something 2 +%was expected to be empty%]'; + + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + end; / diff --git a/test/core/expectations/test_expectations_cursor.pks b/test/ut3_user/expectations/test_expectations_cursor.pks similarity index 98% rename from test/core/expectations/test_expectations_cursor.pks rename to test/ut3_user/expectations/test_expectations_cursor.pks index c0195393e..e8f492674 100644 --- a/test/core/expectations/test_expectations_cursor.pks +++ b/test/ut3_user/expectations/test_expectations_cursor.pks @@ -390,6 +390,11 @@ create or replace package test_expectations_cursor is --%test(Cursor to contain duplicates fail) procedure to_contain_duplicates_fail; - + + --%test(Display a message with a uer defined type with only type name not structure on equal) + procedure udt_messg_format_eq; + + --%test(Display a message with a uer defined type with only type name not structure on empty) + procedure udt_messg_format_empt; end; / diff --git a/test/ut3_user/expectations/test_matchers.pkb b/test/ut3_user/expectations/test_matchers.pkb index 114e34267..c84a623eb 100644 --- a/test/ut3_user/expectations/test_matchers.pkb +++ b/test/ut3_user/expectations/test_matchers.pkb @@ -2,7 +2,7 @@ create or replace package body test_matchers is procedure cleanup_expectations is begin - ut3_tester_helper.core.clear_expectations( ); + ut3_tester_helper.main_helper.clear_expectations( ); end; procedure exec_matcher(a_type varchar2, a_actual_value varchar2, a_expected_value varchar2, a_matcher varchar2, a_result integer, a_prefix varchar2 := null) is @@ -16,10 +16,10 @@ create or replace package body test_matchers is ut3.ut.expect( l_actual ).'||a_prefix||'to_'||a_matcher||'( l_expected ); end;'; execute immediate l_statement; - if a_result = ut3_tester_helper.core.gc_success then - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + if a_result = ut3_tester_helper.main_helper.gc_success then + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); else - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); end if; cleanup_expectations(); end exec_matcher; @@ -36,10 +36,10 @@ create or replace package body test_matchers is ut3.ut.expect(l_actual_value).to_be_between(l_lower, l_higher); end;'; execute immediate l_statement; - if a_result = ut3_tester_helper.core.gc_success then - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + if a_result = ut3_tester_helper.main_helper.gc_success then + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); else - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); end if; cleanup_expectations(); end exec_be_between; @@ -56,10 +56,10 @@ create or replace package body test_matchers is ut3.ut.expect(l_actual_value).'||a_not_prefix||'to_be_between(l_value1, l_value2); end;'; execute immediate l_statement; - if a_result = ut3_tester_helper.core.gc_success then - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + if a_result = ut3_tester_helper.main_helper.gc_success then + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); else - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); end if; cleanup_expectations(); end exec_be_between2; @@ -76,10 +76,10 @@ create or replace package body test_matchers is ut3.ut.expect( l_actual ).' || a_prefix ||q'[to_be_like(l_pattern, l_escape_char); end;]' using a_pattern, a_escape; - if a_result = ut3_tester_helper.core.gc_success then - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + if a_result = ut3_tester_helper.main_helper.gc_success then + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); else - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); end if; cleanup_expectations(); end; @@ -97,10 +97,10 @@ create or replace package body test_matchers is ut3.ut.expect( l_actual ).'||a_not_prefix||'to_match(l_pattern, l_modifiers); end;'; execute immediate l_statement using a_pattern, a_modifiers; - if a_result = ut3_tester_helper.core.gc_success then - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_equal(0); + if a_result = ut3_tester_helper.main_helper.gc_success then + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); else - ut.expect(ut3_tester_helper.core.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); end if; cleanup_expectations(); end; @@ -109,135 +109,135 @@ create or replace package body test_matchers is begin --failure when value out of range - exec_be_between2('date', 'sysdate', 'sysdate-2', 'sysdate-1', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('number', '2.0', '1.99', '1.999', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('varchar2(1)', '''c''', '''a''', '''b''', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('timestamp', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('timestamp with time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('interval year to month', '''2-2''', '''2-0''', '''2-1''', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 00:59:59''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('date', 'sysdate', 'sysdate-2', 'sysdate-1', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('number', '2.0', '1.99', '1.999', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('varchar2(1)', '''c''', '''a''', '''b''', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('timestamp', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('timestamp with time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('interval year to month', '''2-2''', '''2-0''', '''2-1''', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 00:59:59''', ut3_tester_helper.main_helper.gc_failure, ''); --success when value in range - exec_be_between2('date', 'sysdate', 'sysdate-1', 'sysdate+1', ut3_tester_helper.core.gc_success, ''); - exec_be_between2('number', '2.0', '1.99', '2.01', ut3_tester_helper.core.gc_success, ''); - exec_be_between2('varchar2(1)', '''b''', '''a''', '''c''', ut3_tester_helper.core.gc_success, ''); - exec_be_between2('timestamp', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_success, ''); - exec_be_between2('timestamp with local time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_success, ''); - exec_be_between2('timestamp with time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_success, ''); - exec_be_between2('interval year to month', '''2-1''', '''2-0''', '''2-2''', ut3_tester_helper.core.gc_success, ''); - exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 01:00:01''', ut3_tester_helper.core.gc_success, ''); + exec_be_between2('date', 'sysdate', 'sysdate-1', 'sysdate+1', ut3_tester_helper.main_helper.gc_success, ''); + exec_be_between2('number', '2.0', '1.99', '2.01', ut3_tester_helper.main_helper.gc_success, ''); + exec_be_between2('varchar2(1)', '''b''', '''a''', '''c''', ut3_tester_helper.main_helper.gc_success, ''); + exec_be_between2('timestamp', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.main_helper.gc_success, ''); + exec_be_between2('timestamp with local time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.main_helper.gc_success, ''); + exec_be_between2('timestamp with time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.main_helper.gc_success, ''); + exec_be_between2('interval year to month', '''2-1''', '''2-0''', '''2-2''', ut3_tester_helper.main_helper.gc_success, ''); + exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 01:00:01''', ut3_tester_helper.main_helper.gc_success, ''); --success when value not in range - exec_be_between2('date', 'sysdate', 'sysdate-2', 'sysdate-1', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_between2('number', '2.0', '1.99', '1.999', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_between2('varchar2(1)', '''c''', '''a''', '''b''', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_between2('timestamp', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_between2('timestamp with time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_between2('interval year to month', '''2-2''', '''2-0''', '''2-1''', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 00:59:59''', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_between2('date', 'sysdate', 'sysdate-2', 'sysdate-1', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_between2('number', '2.0', '1.99', '1.999', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_between2('varchar2(1)', '''c''', '''a''', '''b''', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_between2('timestamp', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_between2('timestamp with time zone', 'systimestamp+1', 'systimestamp-1', 'systimestamp', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_between2('interval year to month', '''2-2''', '''2-0''', '''2-1''', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 00:59:59''', ut3_tester_helper.main_helper.gc_success, 'not_'); --failure when value not out of range - exec_be_between2('date', 'sysdate', 'sysdate-1', 'sysdate+1', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('number', '2.0', '1.99', '2.01', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('varchar2(1)', '''b''', '''a''', '''c''', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('timestamp', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('timestamp with local time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('timestamp with time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('interval year to month', '''2-1''', '''2-0''', '''2-2''', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 01:00:01''', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('date', 'sysdate', 'sysdate-1', 'sysdate+1', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('number', '2.0', '1.99', '2.01', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('varchar2(1)', '''b''', '''a''', '''c''', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('timestamp', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('timestamp with local time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('timestamp with time zone', 'systimestamp', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('interval year to month', '''2-1''', '''2-0''', '''2-2''', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('interval day to second', '''2 01:00:00''', '''2 00:59:58''', '''2 01:00:01''', ut3_tester_helper.main_helper.gc_failure, 'not_'); --failure when value is null - exec_be_between2('date', 'null', 'sysdate-1', 'sysdate+1', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('number', 'null', '1.99', '2.01', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('varchar2(1)', 'null', '''a''', '''c''', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('timestamp', 'null', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('timestamp with local time zone', 'null', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('timestamp with time zone', 'null', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('interval year to month', 'null', '''2-0''', '''2-2''', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('interval day to second', 'null', '''2 00:59:58''', '''2 01:00:01''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('date', 'null', 'sysdate-1', 'sysdate+1', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('number', 'null', '1.99', '2.01', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('varchar2(1)', 'null', '''a''', '''c''', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('timestamp', 'null', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('timestamp with local time zone', 'null', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('timestamp with time zone', 'null', 'systimestamp-1', 'systimestamp+1', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('interval year to month', 'null', '''2-0''', '''2-2''', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('interval day to second', 'null', '''2 00:59:58''', '''2 01:00:01''', ut3_tester_helper.main_helper.gc_failure, ''); - exec_be_between2('date', 'null', 'sysdate-2', 'sysdate-1', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('number', 'null', '1.99', '1.999', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('varchar2(1)', 'null', '''a''', '''b''', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('timestamp', 'null', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('timestamp with local time zone', 'null', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('timestamp with time zone', 'null', 'systimestamp-1', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('interval year to month', 'null', '''2-0''', '''2-1''', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('interval day to second', 'null', '''2 00:59:58''', '''2 00:59:59''', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('date', 'null', 'sysdate-2', 'sysdate-1', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('number', 'null', '1.99', '1.999', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('varchar2(1)', 'null', '''a''', '''b''', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('timestamp', 'null', 'systimestamp-1', 'systimestamp', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('timestamp with local time zone', 'null', 'systimestamp-1', 'systimestamp', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('timestamp with time zone', 'null', 'systimestamp-1', 'systimestamp', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('interval year to month', 'null', '''2-0''', '''2-1''', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('interval day to second', 'null', '''2 00:59:58''', '''2 00:59:59''', ut3_tester_helper.main_helper.gc_failure, 'not_'); --failure when lower bound is null - exec_be_between2('date', 'sysdate', 'null', 'sysdate+1', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('number', '2.0', 'null', '2.01', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('varchar2(1)', '''b''', 'null', '''c''', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('timestamp', 'systimestamp', 'null', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('timestamp with local time zone', 'systimestamp', 'null', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('timestamp with time zone', 'systimestamp', 'null', 'systimestamp+1', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('interval year to month', '''2-1''', 'null', '''2-2''', ut3_tester_helper.core.gc_failure, ''); - exec_be_between2('interval day to second', '''2 01:00:00''', 'null', '''2 01:00:01''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('date', 'sysdate', 'null', 'sysdate+1', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('number', '2.0', 'null', '2.01', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('varchar2(1)', '''b''', 'null', '''c''', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('timestamp', 'systimestamp', 'null', 'systimestamp+1', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('timestamp with local time zone', 'systimestamp', 'null', 'systimestamp+1', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('timestamp with time zone', 'systimestamp', 'null', 'systimestamp+1', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('interval year to month', '''2-1''', 'null', '''2-2''', ut3_tester_helper.main_helper.gc_failure, ''); + exec_be_between2('interval day to second', '''2 01:00:00''', 'null', '''2 01:00:01''', ut3_tester_helper.main_helper.gc_failure, ''); - exec_be_between2('date', 'sysdate', 'null', 'sysdate-1', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('number', '2.0', 'null', '1.999', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('varchar2(1)', '''b''', 'null', '''b''', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('timestamp', 'systimestamp+1', 'null', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'null', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('timestamp with time zone', 'systimestamp+1', 'null', 'systimestamp', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('interval year to month', '''2-2''', 'null', '''2-1''', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_between2('interval day to second', '''2 01:00:00''', 'null', '''2 00:59:59''', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_between2('date', 'sysdate', 'null', 'sysdate-1', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('number', '2.0', 'null', '1.999', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('varchar2(1)', '''b''', 'null', '''b''', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('timestamp', 'systimestamp+1', 'null', 'systimestamp', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('timestamp with local time zone', 'systimestamp+1', 'null', 'systimestamp', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('timestamp with time zone', 'systimestamp+1', 'null', 'systimestamp', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('interval year to month', '''2-2''', 'null', '''2-1''', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_between2('interval day to second', '''2 01:00:00''', 'null', '''2 00:59:59''', ut3_tester_helper.main_helper.gc_failure, 'not_'); --Fails for unsupported data-type - exec_be_between2('clob', '''b''', '''a''', '''c''', ut3_tester_helper.core.gc_failure, ''); + exec_be_between2('clob', '''b''', '''a''', '''c''', ut3_tester_helper.main_helper.gc_failure, ''); end; procedure test_match is begin - exec_match('varchar2(100)', '''Stephen''', '^Ste(v|ph)en$', '', ut3_tester_helper.core.gc_success); - exec_match('varchar2(100)', '''sTEPHEN''', '^Ste(v|ph)en$', 'i', ut3_tester_helper.core.gc_success); - exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', 'Ste(v|ph)en$', '', ut3_tester_helper.core.gc_success); - exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', 'Ste(v|ph)en$', 'i', ut3_tester_helper.core.gc_success); + exec_match('varchar2(100)', '''Stephen''', '^Ste(v|ph)en$', '', ut3_tester_helper.main_helper.gc_success); + exec_match('varchar2(100)', '''sTEPHEN''', '^Ste(v|ph)en$', 'i', ut3_tester_helper.main_helper.gc_success); + exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', 'Ste(v|ph)en$', '', ut3_tester_helper.main_helper.gc_success); + exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', 'Ste(v|ph)en$', 'i', ut3_tester_helper.main_helper.gc_success); - exec_match('varchar2(100)', '''Stephen''', '^Steven$', '', ut3_tester_helper.core.gc_failure); - exec_match('varchar2(100)', '''sTEPHEN''', '^Steven$', 'i', ut3_tester_helper.core.gc_failure); - exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', '^Stephen', '', ut3_tester_helper.core.gc_failure); - exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', '^Stephen', 'i', ut3_tester_helper.core.gc_failure); + exec_match('varchar2(100)', '''Stephen''', '^Steven$', '', ut3_tester_helper.main_helper.gc_failure); + exec_match('varchar2(100)', '''sTEPHEN''', '^Steven$', 'i', ut3_tester_helper.main_helper.gc_failure); + exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', '^Stephen', '', ut3_tester_helper.main_helper.gc_failure); + exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', '^Stephen', 'i', ut3_tester_helper.main_helper.gc_failure); - exec_match('varchar2(100)', '''Stephen''', '^Ste(v|ph)en$', '', ut3_tester_helper.core.gc_failure, 'not_'); - exec_match('varchar2(100)', '''sTEPHEN''', '^Ste(v|ph)en$', 'i', ut3_tester_helper.core.gc_failure, 'not_'); - exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', 'Ste(v|ph)en$', '', ut3_tester_helper.core.gc_failure, 'not_'); - exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', 'Ste(v|ph)en$', 'i', ut3_tester_helper.core.gc_failure, 'not_'); + exec_match('varchar2(100)', '''Stephen''', '^Ste(v|ph)en$', '', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_match('varchar2(100)', '''sTEPHEN''', '^Ste(v|ph)en$', 'i', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', 'Ste(v|ph)en$', '', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', 'Ste(v|ph)en$', 'i', ut3_tester_helper.main_helper.gc_failure, 'not_'); - exec_match('varchar2(100)', '''Stephen''', '^Steven$', '', ut3_tester_helper.core.gc_success, 'not_'); - exec_match('varchar2(100)', '''sTEPHEN''', '^Steven$', 'i', ut3_tester_helper.core.gc_success, 'not_'); - exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', '^Stephen', '', ut3_tester_helper.core.gc_success, 'not_'); - exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', '^Stephen', 'i', ut3_tester_helper.core.gc_success, 'not_'); + exec_match('varchar2(100)', '''Stephen''', '^Steven$', '', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_match('varchar2(100)', '''sTEPHEN''', '^Steven$', 'i', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_match('clob', 'to_clob(rpad('', '',32767)||''Stephen'')', '^Stephen', '', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_match('clob', 'to_clob(rpad('', '',32767)||''sTEPHEN'')', '^Stephen', 'i', ut3_tester_helper.main_helper.gc_success, 'not_'); --Fails for unsupported data-type - exec_match('number', '12345', '^123.*', 'i', ut3_tester_helper.core.gc_failure); + exec_match('number', '12345', '^123.*', 'i', ut3_tester_helper.main_helper.gc_failure); end; procedure test_be_like is begin - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en%', '', ut3_tester_helper.core.gc_success); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en\_K%', '\', ut3_tester_helper.core.gc_success); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en%', '', ut3_tester_helper.core.gc_success); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en\_K%', '\', ut3_tester_helper.core.gc_success); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en%', '', ut3_tester_helper.main_helper.gc_success); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en\_K%', '\', ut3_tester_helper.main_helper.gc_success); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en%', '', ut3_tester_helper.main_helper.gc_success); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en\_K%', '\', ut3_tester_helper.main_helper.gc_success); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste_en%', '', ut3_tester_helper.core.gc_failure); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Stephe\__%', '\', ut3_tester_helper.core.gc_failure); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste_en%', '', ut3_tester_helper.core.gc_failure); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Stephe\__%', '\', ut3_tester_helper.core.gc_failure); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste_en%', '', ut3_tester_helper.main_helper.gc_failure); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Stephe\__%', '\', ut3_tester_helper.main_helper.gc_failure); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste_en%', '', ut3_tester_helper.main_helper.gc_failure); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Stephe\__%', '\', ut3_tester_helper.main_helper.gc_failure); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en%', '', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en\_K%', '\', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en%', '', ut3_tester_helper.core.gc_failure, 'not_'); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en\_K%', '\', ut3_tester_helper.core.gc_failure, 'not_'); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en%', '', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste__en\_K%', '\', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en%', '', ut3_tester_helper.main_helper.gc_failure, 'not_'); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste__en\_K%', '\', ut3_tester_helper.main_helper.gc_failure, 'not_'); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste_en%', '', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_like('varchar2(100)', '''Stephen_King''', 'Stephe\__%', '\', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste_en%', '', ut3_tester_helper.core.gc_success, 'not_'); - exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Stephe\__%', '\', ut3_tester_helper.core.gc_success, 'not_'); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Ste_en%', '', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_like('varchar2(100)', '''Stephen_King''', 'Stephe\__%', '\', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Ste_en%', '', ut3_tester_helper.main_helper.gc_success, 'not_'); + exec_be_like('clob', 'to_clob(rpad(''a'',32767,''a'')||''Stephen_King'')', 'a%Stephe\__%', '\', ut3_tester_helper.main_helper.gc_success, 'not_'); --Fails for unsupported data-type - exec_be_like('number', '12345', '123%', '', ut3_tester_helper.core.gc_failure); + exec_be_like('number', '12345', '123%', '', ut3_tester_helper.main_helper.gc_failure); end; procedure test_timestamp_between is From c56943e8cbe11303cbcc35d2119e2008fe3fedec Mon Sep 17 00:00:00 2001 From: Lukasz Date: Sun, 24 Mar 2019 16:47:14 +0000 Subject: [PATCH 03/31] Update properties --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index ce865e05a..f23501e05 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,6 +25,8 @@ env: - UT3_USER_PASSWORD=ut3 - UT3_TESTER=ut3_tester - UT3_TESTER_PASSWORD=ut3 + - UT3_TESTER_HELPER=ut3_tester_helper + - UT3_TESTER_HELPER_PASSWORD=ut3 - UT3_TABLESPACE=users # Environment for building a release - CURRENT_BRANCH=${TRAVIS_BRANCH} From 5afba1000b1a2ccdb0f6a3b7621dab107eabb556 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Sun, 24 Mar 2019 18:02:00 +0000 Subject: [PATCH 04/31] Change user that executes tests as helper that is super user. --- .travis/install.sh | 1 - test/install_and_run_tests.sh | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis/install.sh b/.travis/install.sh index 3cd476981..a6ab0cc16 100755 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -86,7 +86,6 @@ grant drop public database link to $UT3_TESTER_HELPER; set feedback on --Needed for testing coverage outside of main UT3 schema. grant create any procedure, drop any procedure, execute any procedure, create any type, drop any type, execute any type, under any type, select any table, update any table, insert any table, delete any table, create any table, drop any table, alter any table, select any dictionary to $UT3_TESTER_HELPER; -revoke execute on dbms_crypto from $UT3_TESTER_HELPER; grant create job to $UT3_TESTER_HELPER; exit SQL diff --git a/test/install_and_run_tests.sh b/test/install_and_run_tests.sh index 421732be1..953d75bc7 100755 --- a/test/install_and_run_tests.sh +++ b/test/install_and_run_tests.sh @@ -14,7 +14,7 @@ time "$SQLCLI" ${UT3_TESTER}/${UT3_TESTER_PASSWORD}@//${CONNECTION_STR} @install cd .. -time utPLSQL-cli/bin/utplsql run ${UT3_TESTER}/${UT3_TESTER_PASSWORD}@${CONNECTION_STR} \ +time utPLSQL-cli/bin/utplsql run ${UT3_TESTER_HELPER}/${UT3_TESTER_HELPER_PASSWORD}@${CONNECTION_STR} \ -source_path=source -owner=ut3 \ -p='ut3_tester,ut3$user#' \ -test_path=test -c \ From 7cd92e77e4807e1ae33776a2b70ab05211df8d09 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Sun, 24 Mar 2019 23:05:11 +0000 Subject: [PATCH 05/31] Adding next set of tests migrated. expectations/binary/test_equal expectations/binary/test_expect_to_be_less_than expectations/test_expectation_anydata expectations/test_expectation_processor --- test/grant_ut3_owner_to_ut3_tester.sql | 35 + test/install_and_run_tests.sh | 2 + test/install_ut3_tester_helper.sql | 6 + test/install_ut3_tester_tests.sql | 4 + test/install_ut3_user_tests.sql | 6 + test/ut3_tester/core.pkb | 11 + test/ut3_tester/core.pks | 10 + .../test_before_after_annotations.pks | 2 +- test/ut3_tester/core/core.pkb | 125 --- test/ut3_tester/core/core.pks | 32 - .../test_expectation_processor.pkb | 71 ++ .../test_expectation_processor.pks | 17 + .../ut3_tester_helper/expectations_helper.pkb | 57 + .../ut3_tester_helper/expectations_helper.pks | 25 + test/ut3_tester_helper/main_helper.pkb | 10 + test/ut3_tester_helper/main_helper.pks | 6 +- test/ut3_tester_helper/other_dummy_object.tps | 16 + test/ut3_tester_helper/test_dummy_object.tps | 3 - .../test_dummy_object_list.tps | 2 + test/ut3_tester_helper/test_tab_varchar2.tps | 12 + test/ut3_tester_helper/test_tab_varray.tps | 13 + test/ut3_user/api/test_ut_runner.pks | 2 +- .../expectations/binary/test_equal.pkb | 264 +++++ .../expectations/binary/test_equal.pks | 38 + .../binary/test_expect_to_be_less_than.pkb | 263 +++++ .../binary/test_expect_to_be_less_than.pks | 97 ++ .../expectations/test_expectation_anydata.pkb | 974 ++++++++++++++++++ .../expectations/test_expectation_anydata.pks | 202 ++++ .../expectations/test_expectations_cursor.pks | 2 +- test/ut3_user/expectations/test_matchers.pks | 2 +- 30 files changed, 2144 insertions(+), 165 deletions(-) create mode 100644 test/grant_ut3_owner_to_ut3_tester.sql create mode 100644 test/ut3_tester/core.pkb create mode 100644 test/ut3_tester/core.pks delete mode 100644 test/ut3_tester/core/core.pkb delete mode 100644 test/ut3_tester/core/core.pks create mode 100644 test/ut3_tester/core/expectations/test_expectation_processor.pkb create mode 100644 test/ut3_tester/core/expectations/test_expectation_processor.pks create mode 100644 test/ut3_tester_helper/expectations_helper.pkb create mode 100644 test/ut3_tester_helper/expectations_helper.pks create mode 100644 test/ut3_tester_helper/other_dummy_object.tps create mode 100644 test/ut3_tester_helper/test_dummy_object_list.tps create mode 100644 test/ut3_tester_helper/test_tab_varchar2.tps create mode 100644 test/ut3_tester_helper/test_tab_varray.tps create mode 100644 test/ut3_user/expectations/binary/test_equal.pkb create mode 100644 test/ut3_user/expectations/binary/test_equal.pks create mode 100644 test/ut3_user/expectations/binary/test_expect_to_be_less_than.pkb create mode 100644 test/ut3_user/expectations/binary/test_expect_to_be_less_than.pks create mode 100644 test/ut3_user/expectations/test_expectation_anydata.pkb create mode 100644 test/ut3_user/expectations/test_expectation_anydata.pks diff --git a/test/grant_ut3_owner_to_ut3_tester.sql b/test/grant_ut3_owner_to_ut3_tester.sql new file mode 100644 index 000000000..d06a24ace --- /dev/null +++ b/test/grant_ut3_owner_to_ut3_tester.sql @@ -0,0 +1,35 @@ +set define off +whenever sqlerror exit failure rollback +whenever oserror exit failure rollback + +alter session set plsql_optimize_level=0; + +set linesize 200 +set define on +set verify off + +prompt Empowering UT3_TESTER to UT3_OWNER objects + +begin + for i in ( select object_name from all_objects t + where t.object_type in ('PACKAGE','TYPE') + and owner = 'UT3' + and generated = 'N' + and lower(object_name) not like 'sys%') + loop + execute immediate 'grant execute on ut3.'||i.object_name||' to UT3_TESTER'; + end loop; +end; +/ + +prompt Empowering UT3_TESTER to UT3_OWNER tables + +begin + for i in ( select table_name from all_tables t where owner = 'UT3' and nested = 'NO' and IOT_TYPE is NULL) + loop + execute immediate 'grant select on UT3.'||i.table_name||' to UT3_TESTER'; + end loop; +end; +/ + +exit; diff --git a/test/install_and_run_tests.sh b/test/install_and_run_tests.sh index 953d75bc7..9f5752b5e 100755 --- a/test/install_and_run_tests.sh +++ b/test/install_and_run_tests.sh @@ -6,6 +6,8 @@ git rev-parse && cd "$(git rev-parse --show-cdup)" cd test +time "$SQLCLI" sys/${ORACLE_PWD}@//${CONNECTION_STR} AS SYSDBA @grant_ut3_owner_to_ut3_tester.sql + time "$SQLCLI" ${UT3_TESTER_HELPER}/${UT3_TESTER_HELPER_PASSWORD}@//${CONNECTION_STR} @install_ut3_tester_helper.sql time "$SQLCLI" ${UT3_USER}/${UT3_USER_PASSWORD}@//${CONNECTION_STR} @install_ut3_user_tests.sql diff --git a/test/install_ut3_tester_helper.sql b/test/install_ut3_tester_helper.sql index 14586c469..acfb55aff 100644 --- a/test/install_ut3_tester_helper.sql +++ b/test/install_ut3_tester_helper.sql @@ -5,12 +5,18 @@ whenever oserror exit failure rollback alter session set plsql_optimize_level=0; --Install ut3_tester_helper @@ut3_tester_helper/test_dummy_object.tps +@@ut3_tester_helper/other_dummy_object.tps +@@ut3_tester_helper/test_dummy_object_list.tps +@@ut3_tester_helper/test_tab_varchar2.tps +@@ut3_tester_helper/test_tab_varray.tps @@ut3_tester_helper/main_helper.pks @@ut3_tester_helper/run_helper.pks +@@ut3_tester_helper/expectations_helper.pks @@ut3_tester_helper/main_helper.pkb @@ut3_tester_helper/run_helper.pkb +@@ut3_tester_helper/expectations_helper.pkb set linesize 200 set define on diff --git a/test/install_ut3_tester_tests.sql b/test/install_ut3_tester_tests.sql index 85b0ae201..146a3a211 100644 --- a/test/install_ut3_tester_tests.sql +++ b/test/install_ut3_tester_tests.sql @@ -6,9 +6,13 @@ alter session set plsql_optimize_level=0; --Install tests +@@ut3_tester/core.pks @@ut3_tester/core/annotations/test_before_after_annotations.pks +@@ut3_tester/core/expectations/test_expectation_processor.pks +@@ut3_tester/core.pkb @@ut3_tester/core/annotations/test_before_after_annotations.pkb +@@ut3_tester/core/expectations/test_expectation_processor.pkb set linesize 200 set define on diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 666a410a4..b38375c34 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -5,11 +5,17 @@ whenever oserror exit failure rollback alter session set plsql_optimize_level=0; prompt Install user tests +@@ut3_user/expectations/binary/test_equal.pks +@@ut3_user/expectations/binary/test_expect_to_be_less_than.pks @@ut3_user/expectations/test_matchers.pks +@@ut3_user/expectations/test_expectation_anydata.pks @@ut3_user/expectations/test_expectations_cursor.pks @@ut3_user/api/test_ut_runner.pks +@@ut3_user/expectations/binary/test_equal.pkb +@@ut3_user/expectations/binary/test_expect_to_be_less_than.pkb @@ut3_user/expectations/test_matchers.pkb +@@ut3_user/expectations/test_expectation_anydata.pkb @@ut3_user/expectations/test_expectations_cursor.pkb @@ut3_user/api/test_ut_runner.pkb diff --git a/test/ut3_tester/core.pkb b/test/ut3_tester/core.pkb new file mode 100644 index 000000000..a1da097a9 --- /dev/null +++ b/test/ut3_tester/core.pkb @@ -0,0 +1,11 @@ +create or replace package body core is + + procedure global_setup is + begin + ut3.ut_coverage.set_develop_mode(true); + --improve performance of test execution by disabling all compiler optimizations + ut3_tester_helper.main_helper.execute_autonomous('ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=0'); + end; + +end; +/ diff --git a/test/ut3_tester/core.pks b/test/ut3_tester/core.pks new file mode 100644 index 000000000..0edf2ae54 --- /dev/null +++ b/test/ut3_tester/core.pks @@ -0,0 +1,10 @@ +create or replace package core is + + --%suite + --%suitepath(utplsql) + + --%beforeall + procedure global_setup; + +end; +/ diff --git a/test/ut3_tester/core/annotations/test_before_after_annotations.pks b/test/ut3_tester/core/annotations/test_before_after_annotations.pks index a4ce52727..1a0a2ebaf 100644 --- a/test/ut3_tester/core/annotations/test_before_after_annotations.pks +++ b/test/ut3_tester/core/annotations/test_before_after_annotations.pks @@ -1,7 +1,7 @@ create or replace package test_before_after_annotations is --%suite(annotations - beforetest and aftertest) - --%suitepath(utplsql.core.annotations) + --%suitepath(utplsql.framework_tester.core.annotations) subtype t_procedure_name is varchar2(250) not null; type t_procedures is table of t_procedure_name; diff --git a/test/ut3_tester/core/core.pkb b/test/ut3_tester/core/core.pkb deleted file mode 100644 index 9b70f3826..000000000 --- a/test/ut3_tester/core/core.pkb +++ /dev/null @@ -1,125 +0,0 @@ -create or replace package body core is - - function get_dbms_output_as_clob return clob is - l_status number; - l_line varchar2(32767); - l_result clob; - begin - - dbms_output.get_line(line => l_line, status => l_status); - if l_status != 1 then - dbms_lob.createtemporary(l_result, true, dur => dbms_lob.session); - end if; - while l_status != 1 loop - if l_line is not null then - ut3.ut_utils.append_to_clob(l_result, l_line||chr(10)); - end if; - dbms_output.get_line(line => l_line, status => l_status); - end loop; - return l_result; - end; - - procedure global_setup is - begin - ut3.ut_coverage.set_develop_mode(true); - --improve performance of test execution by disabling all compiler optimizations - execute_autonomous('ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=0'); - - execute_autonomous( - q'[create or replace package ut_transaction_control as - function count_rows(a_val varchar2) return number; - procedure setup; - procedure test; - procedure test_failure; - end;]' - ); - execute_autonomous( - q'[create or replace package body ut_transaction_control - as - - function count_rows(a_val varchar2) return number is - l_cnt number; - begin - select count(*) into l_cnt from ut$test_table t where t.val = a_val; - return l_cnt; - end; - procedure setup is begin - insert into ut$test_table values ('s'); - end; - procedure test is - begin - insert into ut$test_table values ('t'); - end; - procedure test_failure is - begin - insert into ut$test_table values ('t'); - --raise no_data_found; - raise_application_error(-20001,'Error'); - end; - end;]' - ); - end; - - procedure global_cleanup is - begin - execute_autonomous('drop package ut_transaction_control'); - end; - - procedure execute_autonomous(a_sql varchar2) is - pragma autonomous_transaction; - begin - if a_sql is not null then - execute immediate a_sql; - end if; - commit; - end; - - function run_test(a_path varchar2) return clob is - l_lines ut3.ut_varchar2_list; - begin - select * bulk collect into l_lines from table(ut3.ut.run(a_path)); - return ut3.ut_utils.table_to_clob(l_lines); - end; - - function get_value(a_variable varchar2) return integer is - l_glob_val integer; - begin - execute immediate 'begin :l_glob_val := '||a_variable||'; end;' using out l_glob_val; - return l_glob_val; - end; - - function get_failed_expectations return ut3.ut_varchar2_list is - l_expectations_result ut3.ut_expectation_results := ut3.ut_expectation_processor.get_failed_expectations(); - l_result ut3.ut_varchar2_list; - begin - for i in 1..l_expectations_result.count loop - l_result := l_result multiset union l_expectations_result(i).get_result_lines(); - end loop; - return l_result; - end; - - function failed_expectations_data return anydata is - begin - return anydata.convertCollection(ut3.ut_expectation_processor.get_failed_expectations()); - end; - - function get_failed_expectations_n return number is - l_num_failed number; - l_results ut3.ut_expectation_results := ut3.ut_expectation_processor.get_failed_expectations(); - begin - l_num_failed := l_results.count; - return l_num_failed; - end; - - procedure clear_expectations is - begin - ut3.ut_expectation_processor.clear_expectations(); - end; - - function table_to_clob(a_results in ut3.ut_varchar2_list) return clob is - begin - return ut3.ut_utils.table_to_clob(a_results); - end; - -end; -/ diff --git a/test/ut3_tester/core/core.pks b/test/ut3_tester/core/core.pks deleted file mode 100644 index c011d8916..000000000 --- a/test/ut3_tester/core/core.pks +++ /dev/null @@ -1,32 +0,0 @@ -create or replace package main_helper is - - gc_success number := ut3.ut_utils.gc_success; - gc_failure number := ut3.ut_utils.gc_failure; - - --%suite - --%suitepath(utplsql) - - --%beforeall - procedure global_setup; - - --%afterall - procedure global_cleanup; - - procedure execute_autonomous(a_sql varchar2); - - function run_test(a_path varchar2) return clob; - - function get_value(a_variable varchar2) return integer; - - function get_dbms_output_as_clob return clob; - - function get_failed_expectations return ut3.ut_varchar2_list; - - function get_failed_expectations_n return number; - - procedure clear_expectations; - - function table_to_clob(a_results in ut3.ut_varchar2_list) return clob; - -end; -/ diff --git a/test/ut3_tester/core/expectations/test_expectation_processor.pkb b/test/ut3_tester/core/expectations/test_expectation_processor.pkb new file mode 100644 index 000000000..17ffbec3c --- /dev/null +++ b/test/ut3_tester/core/expectations/test_expectation_processor.pkb @@ -0,0 +1,71 @@ +create or replace package body test_expectation_processor is + + procedure who_called_expectation is + l_stack_trace varchar2(4000); + l_source_line varchar2(4000); + begin + l_stack_trace := q'[----- PL/SQL Call Stack ----- + object line object + handle number name +34f88e4420 124 package body SCH_TEST.UT_EXPECTATION_PROCESSOR +353dfeb2f8 26 SCH_TEST.UT_EXPECTATION_RESULT +cba249ce0 112 SCH_TEST.UT_EXPECTATION +3539881cf0 21 SCH_TEST.UT_EXPECTATION_NUMBER +351a608008 28 package body SCH_TEST.TPKG_PRIOR_YEAR_GENERATION +351a6862b8 6 anonymous block +351fe31010 1825 package body SYS.DBMS_SQL +20befbe4d8 129 SCH_TEST.UT_EXECUTABLE +20befbe4d8 65 SCH_TEST.UT_EXECUTABLE +34f8ab7cd8 80 SCH_TEST.UT_TEST +34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM +34f8ab9b10 74 SCH_TEST.UT_SUITE +34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM +cba24bfd0 75 SCH_TEST.UT_LOGICAL_SUITE +353dfecf30 59 SCH_TEST.UT_RUN +34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM +357f5421e8 77 package body SCH_TEST.UT_RUNNER +357f5421e8 111 package body SCH_TEST.UT_RUNNER +20be951ab0 292 package body SCH_TEST.UT +20be951ab0 320 package body SCH_TEST.UT +]'; + ut.expect( + ut3.ut_expectation_processor.who_called_expectation(l_stack_trace) + ).to_be_like('at "SCH_TEST.TPKG_PRIOR_YEAR_GENERATION", line 28 %'); + end; + + + procedure who_called_expectation_0x is + l_stack_trace varchar2(4000); + l_source_line varchar2(4000); + begin + l_stack_trace := q'[----- PL/SQL Call Stack ----- + object line object + handle number name +34f88e4420 124 package body SCH_TEST.UT_EXPECTATION_PROCESSOR +353dfeb2f8 26 SCH_TEST.UT_EXPECTATION_RESULT +cba249ce0 112 SCH_TEST.UT_EXPECTATION +3539881cf0 21 SCH_TEST.UT_EXPECTATION_NUMBER +351a608008 28 package body SCH_TEST.TPKG_PRIOR_YEAR_GENERATION +351a6862b8 6 anonymous block +351fe31010 1825 package body SYS.DBMS_SQL +20befbe4d8 129 SCH_TEST.UT_EXECUTABLE +20befbe4d8 65 SCH_TEST.UT_EXECUTABLE +34f8ab7cd8 80 SCH_TEST.UT_TEST +34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM +34f8ab9b10 74 SCH_TEST.UT_SUITE +34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM +cba24bfd0 75 SCH_TEST.UT_LOGICAL_SUITE +353dfecf30 59 SCH_TEST.UT_RUN +34f8ab98f0 48 SCH_TEST.UT_SUITE_ITEM +357f5421e8 77 package body SCH_TEST.UT_RUNNER +357f5421e8 111 package body SCH_TEST.UT_RUNNER +20be951ab0 292 package body SCH_TEST.UT +20be951ab0 320 package body SCH_TEST.UT +]'; + ut.expect( + ut3.ut_expectation_processor.who_called_expectation(l_stack_trace) + ).to_be_like('at "SCH_TEST.TPKG_PRIOR_YEAR_GENERATION", line 28 %'); + end; + +end; +/ diff --git a/test/ut3_tester/core/expectations/test_expectation_processor.pks b/test/ut3_tester/core/expectations/test_expectation_processor.pks new file mode 100644 index 000000000..c6f80f20d --- /dev/null +++ b/test/ut3_tester/core/expectations/test_expectation_processor.pks @@ -0,0 +1,17 @@ +create or replace package test_expectation_processor is + + --%suite(expectation_processor) + --%suitepath(utplsql.framework_tester.core.expectations) + + --%context(who_called_expectation) + + --%test(parses stack trace and returns object and line that called expectation) + procedure who_called_expectation; + + --%test(parses stack trace containing 0x and returns object and line that called expectation) + procedure who_called_expectation_0x; + + --%endcontext + +end; +/ diff --git a/test/ut3_tester_helper/expectations_helper.pkb b/test/ut3_tester_helper/expectations_helper.pkb new file mode 100644 index 000000000..cc86f18a6 --- /dev/null +++ b/test/ut3_tester_helper/expectations_helper.pkb @@ -0,0 +1,57 @@ +create or replace package body expectations_helper is + + function unary_expectation_block( + a_matcher_name varchar2, + a_data_type varchar2, + a_data_value varchar2 + ) return varchar2 is + l_execute varchar2(32000); + begin + l_execute := ' + declare + l_expected '||a_data_type||' := '||a_data_value||'; + begin + --act - execute the expectation + ut3.ut.expect(l_expected).'||a_matcher_name||'(); + end;'; + return l_execute; + end; + + function unary_expectation_object_block( + a_matcher_name varchar2, + a_object_name varchar2, + a_object_value varchar2, + a_object_type varchar2 + ) return varchar2 is + begin + return ' + declare + l_object '||a_object_name||' := '||a_object_value||'; + begin + ut3.ut.expect(anydata.convert'||a_object_type||'(l_object)).'||a_matcher_name||'(); + end;'; + end; + + function binary_expectation_block( + a_matcher_name varchar2, + a_actual_data_type varchar2, + a_actual_data varchar2, + a_expected_data_type varchar2, + a_expected_data varchar2 + ) return varchar2 + is + l_execute varchar2(32000); + begin + l_execute := ' + declare + l_actual '||a_actual_data_type||' := '||a_actual_data||'; + l_expected '||a_expected_data_type||' := '||a_expected_data||'; + begin + --act - execute the expectation + ut3.ut.expect( l_actual ).'||a_matcher_name||'(l_expected); + end;'; + return l_execute; + end; + +end; +/ diff --git a/test/ut3_tester_helper/expectations_helper.pks b/test/ut3_tester_helper/expectations_helper.pks new file mode 100644 index 000000000..9c1d54333 --- /dev/null +++ b/test/ut3_tester_helper/expectations_helper.pks @@ -0,0 +1,25 @@ +create or replace package expectations_helper is + + function unary_expectation_block( + a_matcher_name varchar2, + a_data_type varchar2, + a_data_value varchar2 + ) return varchar2; + + function unary_expectation_object_block( + a_matcher_name varchar2, + a_object_name varchar2, + a_object_value varchar2, + a_object_type varchar2 + ) return varchar2; + + function binary_expectation_block( + a_matcher_name varchar2, + a_actual_data_type varchar2, + a_actual_data varchar2, + a_expected_data_type varchar2, + a_expected_data varchar2 + ) return varchar2; + +end; +/ diff --git a/test/ut3_tester_helper/main_helper.pkb b/test/ut3_tester_helper/main_helper.pkb index 9ceedd68a..4c93720cd 100644 --- a/test/ut3_tester_helper/main_helper.pkb +++ b/test/ut3_tester_helper/main_helper.pkb @@ -86,5 +86,15 @@ create or replace package body main_helper is return ut3.ut_expectation_processor.get_warnings(); end; + procedure reset_nulls_equal is + begin + ut3.ut_expectation_processor.nulls_Are_equal(ut3.ut_expectation_processor.gc_default_nulls_are_equal); + end; + + procedure nulls_are_equal(a_nulls_equal boolean := true) is + begin + ut3.ut_expectation_processor.nulls_Are_equal(a_nulls_equal); + end; + end; / diff --git a/test/ut3_tester_helper/main_helper.pks b/test/ut3_tester_helper/main_helper.pks index 6c7f34bc0..be755fea6 100644 --- a/test/ut3_tester_helper/main_helper.pks +++ b/test/ut3_tester_helper/main_helper.pks @@ -22,6 +22,10 @@ create or replace package main_helper is function table_to_clob(a_results in ut3.ut_varchar2_list) return clob; function get_warnings return ut3.ut_varchar2_rows; - + + procedure reset_nulls_equal; + + procedure nulls_are_equal(a_nulls_equal boolean := true); + end; / diff --git a/test/ut3_tester_helper/other_dummy_object.tps b/test/ut3_tester_helper/other_dummy_object.tps new file mode 100644 index 000000000..7453d5dcf --- /dev/null +++ b/test/ut3_tester_helper/other_dummy_object.tps @@ -0,0 +1,16 @@ +declare + l_exists integer; +begin + select count(1) into l_exists from user_types where type_name = 'OTHER_DUMMY_OBJECT'; + if l_exists > 0 then + execute immediate 'drop type other_dummy_object force'; + end if; +end; +/ + +create or replace type other_dummy_object as object ( + id number, + "name" varchar2(30), + "Value" varchar2(30) +) +/ diff --git a/test/ut3_tester_helper/test_dummy_object.tps b/test/ut3_tester_helper/test_dummy_object.tps index 79eed3e6e..7f095fc0a 100644 --- a/test/ut3_tester_helper/test_dummy_object.tps +++ b/test/ut3_tester_helper/test_dummy_object.tps @@ -14,6 +14,3 @@ create or replace type test_dummy_object as object ( "Value" varchar2(30) ) / - - -grant execute on test_dummy_object to ut3$user#; \ No newline at end of file diff --git a/test/ut3_tester_helper/test_dummy_object_list.tps b/test/ut3_tester_helper/test_dummy_object_list.tps new file mode 100644 index 000000000..67bba558e --- /dev/null +++ b/test/ut3_tester_helper/test_dummy_object_list.tps @@ -0,0 +1,2 @@ +create or replace type test_dummy_object_list as table of test_dummy_object +/ diff --git a/test/ut3_tester_helper/test_tab_varchar2.tps b/test/ut3_tester_helper/test_tab_varchar2.tps new file mode 100644 index 000000000..17086292a --- /dev/null +++ b/test/ut3_tester_helper/test_tab_varchar2.tps @@ -0,0 +1,12 @@ +declare + l_exists integer; +begin + select count(1) into l_exists from user_types where type_name = 'T_TAB_VARCHAR'; + if l_exists > 0 then + execute immediate 'drop type t_tab_varchar force'; + end if; +end; +/ + +create or replace type t_tab_varchar is table of varchar2(1) +/ \ No newline at end of file diff --git a/test/ut3_tester_helper/test_tab_varray.tps b/test/ut3_tester_helper/test_tab_varray.tps new file mode 100644 index 000000000..3c684afca --- /dev/null +++ b/test/ut3_tester_helper/test_tab_varray.tps @@ -0,0 +1,13 @@ +declare + l_exists integer; +begin + select count(1) into l_exists from user_types where type_name = 'T_VARRAY'; + if l_exists > 0 then + execute immediate 'drop type t_varray force'; + end if; +end; +/ + + +create or replace type t_varray is varray(1) of number +/ \ No newline at end of file diff --git a/test/ut3_user/api/test_ut_runner.pks b/test/ut3_user/api/test_ut_runner.pks index d67ee45fc..70eed747f 100644 --- a/test/ut3_user/api/test_ut_runner.pks +++ b/test/ut3_user/api/test_ut_runner.pks @@ -1,7 +1,7 @@ create or replace package test_ut_runner is --%suite(ut_runner) - --%suitepath(utplsql.api) + --%suitepath(utplsql.test_user.api) --%rollback(manual) --%test(transaction stays open after the run if it was opened before the run) diff --git a/test/ut3_user/expectations/binary/test_equal.pkb b/test/ut3_user/expectations/binary/test_equal.pkb new file mode 100644 index 000000000..8b369d0e7 --- /dev/null +++ b/test/ut3_user/expectations/binary/test_equal.pkb @@ -0,0 +1,264 @@ +create or replace package body test_equal is + + procedure reset_nulls_equal is + begin + ut3_tester_helper.main_helper.reset_nulls_equal; + end; + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + function to_equal_block( + a_matcher_name varchar2, + a_actual_type varchar2, + a_expected_type varchar2, + a_actual varchar2, + a_expected varchar2, + a_nulls_equal boolean := null + ) return varchar2 is + l_nulls_equal varchar2(10); + begin + l_nulls_equal := case when a_nulls_equal then 'true' when not a_nulls_equal then 'false' else 'null' end; + return ' + declare + l_actual '||a_actual_type||' := '||a_actual||'; + l_expected '||a_expected_type||' := '||a_expected||'; + begin + ut3.ut.expect( l_actual ).'||a_matcher_name||'(l_expected, a_nulls_are_equal=>'||l_nulls_equal||'); + end;'; + end; + + procedure test_to_equal_success( + a_actual_type varchar2, + a_expected_type varchar2, + a_actual varchar2, + a_expected varchar2, + a_nulls_equal boolean := null + ) is + begin + execute immediate + to_equal_block( 'to_equal', a_actual_type, a_expected_type, a_actual, a_expected, a_nulls_equal ); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + cleanup_expectations; + end; + + procedure test_to_equal_success( + a_actual_type varchar2, + a_actual varchar2, + a_expected varchar2, + a_nulls_equal boolean := null + ) is + begin + test_to_equal_success(a_actual_type, a_actual_type, a_actual, a_expected, a_nulls_equal); + end; + + + procedure test_to_equal_fail( + a_actual_type varchar2, + a_expected_type varchar2, + a_actual varchar2, + a_expected varchar2, + a_nulls_equal boolean := null + ) is + begin + execute immediate + to_equal_block( 'to_equal', a_actual_type, a_expected_type, a_actual, a_expected, a_nulls_equal ); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + cleanup_expectations; + end; + + procedure test_not_to_equal_fail( + a_actual_type varchar2, + a_expected_type varchar2, + a_actual varchar2, + a_expected varchar2, + a_nulls_equal boolean := null + ) is + begin + execute immediate + to_equal_block( 'not_to_equal', a_actual_type, a_expected_type, a_actual, a_expected, a_nulls_equal ); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + cleanup_expectations; + end; + + procedure test_to_equal_fail( + a_actual_type varchar2, + a_actual varchar2, + a_expected varchar2, + a_nulls_equal boolean := null + ) is + begin + test_to_equal_fail(a_actual_type, a_actual_type, a_actual, a_expected, a_nulls_equal); + end; + + procedure equal_fail_on_type_diff is + begin + test_to_equal_fail('boolean', 'integer', 'true', '1'); + test_to_equal_fail('integer', 'boolean', '1', 'true'); + test_to_equal_fail('blob', 'clob', 'to_blob(''ABC'')', '''ABC'''); + test_to_equal_fail('clob', 'blob', '''ABC''', 'to_blob(''ABC'')'); + test_to_equal_fail('clob', 'anydata', '''ABC''', 'null'); + test_to_equal_fail('anydata', 'sys_refcursor', 'null', 'null'); + test_to_equal_fail('sys_refcursor', 'anydata', 'null', 'null'); + test_to_equal_fail('clob', 'varchar2(4000)', '''Abc''', '''Abc'''); + test_to_equal_fail('date', 'timestamp', 'sysdate', 'sysdate'); + test_to_equal_fail('date', 'timestamp with local time zone', 'sysdate', 'sysdate'); + test_to_equal_fail('timestamp', 'date', 'sysdate', 'sysdate'); + test_to_equal_fail('timestamp with local time zone', 'timestamp', 'sysdate', 'sysdate'); + test_to_equal_fail('timestamp with local time zone', 'timestamp with time zone', 'sysdate', 'sysdate'); + test_to_equal_fail('number', 'varchar2(4000)', '1', '''1'''); + test_to_equal_fail('varchar2(4000)', 'number', '''1''', '1'); + test_to_equal_fail('varchar2(4000)', 'boolean', '''true''', 'true'); + test_to_equal_fail('interval day to second', 'interval year to month', '''2 01:00:00''', '''1-1'''); + test_to_equal_fail('interval year to month', 'interval day to second', '''1-1''', '''2 01:00:00'''); + end; + + procedure not_equal_fail_on_type_diff is + begin + test_not_to_equal_fail('boolean', 'integer', 'true', '1'); + test_not_to_equal_fail('integer', 'boolean', '1', 'true'); + test_not_to_equal_fail('blob', 'clob', 'to_blob(''ABC'')', '''ABC'''); + test_not_to_equal_fail('clob', 'blob', '''ABC''', 'to_blob(''ABC'')'); + test_not_to_equal_fail('clob', 'anydata', '''ABC''', 'null'); + test_not_to_equal_fail('anydata', 'sys_refcursor', 'null', 'null'); + test_not_to_equal_fail('sys_refcursor', 'anydata', 'null', 'null'); + test_not_to_equal_fail('clob', 'varchar2(4000)', '''Abc''', '''Abc'''); + test_not_to_equal_fail('date', 'timestamp', 'sysdate', 'sysdate'); + test_not_to_equal_fail('date', 'timestamp with local time zone', 'sysdate', 'sysdate'); + test_not_to_equal_fail('timestamp', 'date', 'sysdate', 'sysdate'); + test_not_to_equal_fail('timestamp with local time zone', 'timestamp', 'sysdate', 'sysdate'); + test_not_to_equal_fail('timestamp with local time zone', 'timestamp with time zone', 'sysdate', 'sysdate'); + test_not_to_equal_fail('number', 'varchar2(4000)', '1', '''1'''); + test_not_to_equal_fail('varchar2(4000)', 'number', '''1''', '1'); + test_not_to_equal_fail('varchar2(4000)', 'boolean', '''true''', 'true'); + test_not_to_equal_fail('interval day to second', 'interval year to month', '''2 01:00:00''', '''1-1'''); + test_not_to_equal_fail('interval year to month', 'interval day to second', '''1-1''', '''2 01:00:00'''); + end; + + procedure failure_on_data_diff is + begin + test_to_equal_fail('blob', 'to_blob(''abc'')', 'to_blob(''abd'')'); + test_to_equal_fail('boolean', 'false', 'true'); + test_to_equal_fail('boolean', 'true', 'false'); + test_to_equal_fail('clob', '''Abc''', '''abc'''); + test_to_equal_fail('date', 'sysdate', 'sysdate-1'); + test_to_equal_fail('number', '0.1', '0.3'); + test_to_equal_fail('timestamp', 'systimestamp', 'systimestamp'); + test_to_equal_fail('timestamp with local time zone', 'systimestamp', 'systimestamp'); + test_to_equal_fail('timestamp with time zone', 'systimestamp', 'systimestamp'); + test_to_equal_fail('varchar2(4000)', '''Abc''', '''abc'''); + test_to_equal_fail('interval day to second', '''2 01:00:00''', '''2 01:00:01'''); + test_to_equal_fail('interval year to month', '''1-1''', '''1-2'''); + end; + + procedure failure_on_actual_null is + begin + test_to_equal_fail('blob', 'NULL', 'to_blob(''abc'')'); + test_to_equal_fail('boolean', 'NULL', 'true'); + test_to_equal_fail('clob', 'NULL', '''abc'''); + test_to_equal_fail('date', 'NULL', 'sysdate'); + test_to_equal_fail('number', 'NULL', '1'); + test_to_equal_fail('timestamp', 'NULL', 'systimestamp'); + test_to_equal_fail('timestamp with local time zone', 'NULL', 'systimestamp'); + test_to_equal_fail('timestamp with time zone', 'NULL', 'systimestamp'); + test_to_equal_fail('varchar2(4000)', 'NULL', '''abc'''); + test_to_equal_fail('interval day to second', 'NULL', '''2 01:00:00'''); + test_to_equal_fail('interval year to month', 'NULL', '''1-1'''); + end; + + procedure failure_on_expected_null is + begin + test_to_equal_fail('blob', 'to_blob(''abc'')', 'NULL'); + test_to_equal_fail('boolean', 'true', 'NULL'); + test_to_equal_fail('clob', '''abc''', 'NULL'); + test_to_equal_fail('date', 'sysdate', 'NULL'); + test_to_equal_fail('number', '1234', 'NULL'); + test_to_equal_fail('timestamp', 'systimestamp', 'NULL'); + test_to_equal_fail('timestamp with local time zone', 'systimestamp', 'NULL'); + test_to_equal_fail('timestamp with time zone', 'systimestamp', 'NULL'); + test_to_equal_fail('varchar2(4000)', '''abc''', 'NULL'); + test_to_equal_fail('interval day to second', '''2 01:00:00''', 'NULL'); + test_to_equal_fail('interval year to month', '''1-1''', 'NULL'); + end; + + procedure failure_on_both_null_with_parm is + begin + test_to_equal_fail('blob', 'NULL', 'NULL', false); + test_to_equal_fail('boolean', 'NULL', 'NULL', false); + test_to_equal_fail('clob', 'NULL', 'NULL', false); + test_to_equal_fail('date', 'NULL', 'NULL', false); + test_to_equal_fail('number', 'NULL', 'NULL', false); + test_to_equal_fail('timestamp', 'NULL', 'NULL', false); + test_to_equal_fail('timestamp with local time zone', 'NULL', 'NULL', false); + test_to_equal_fail('timestamp with time zone', 'NULL', 'NULL', false); + test_to_equal_fail('varchar2(4000)', 'NULL', 'NULL', false); + test_to_equal_fail('interval day to second', 'NULL', 'NULL', false); + test_to_equal_fail('interval year to month', 'NULL', 'NULL', false); + end; + + procedure failure_on_both_null_with_conf is + begin + ut3_tester_helper.main_helper.nulls_are_equal(false); + test_to_equal_fail('blob', 'NULL', 'NULL'); + test_to_equal_fail('boolean', 'NULL', 'NULL'); + test_to_equal_fail('clob', 'NULL', 'NULL'); + test_to_equal_fail('date', 'NULL', 'NULL'); + test_to_equal_fail('number', 'NULL', 'NULL'); + test_to_equal_fail('timestamp', 'NULL', 'NULL'); + test_to_equal_fail('timestamp with local time zone', 'NULL', 'NULL'); + test_to_equal_fail('timestamp with time zone', 'NULL', 'NULL'); + test_to_equal_fail('varchar2(4000)', 'NULL', 'NULL'); + test_to_equal_fail('interval day to second', 'NULL', 'NULL'); + test_to_equal_fail('interval year to month', 'NULL', 'NULL'); + end; + + procedure success_on_equal_data is + begin + test_to_equal_success('blob', 'to_blob(''Abc'')', 'to_blob(''abc'')'); + test_to_equal_success('boolean', 'true', 'true'); + test_to_equal_success('clob', '''Abc''', '''Abc'''); + test_to_equal_success('date', 'sysdate', 'sysdate'); + test_to_equal_success('number', '12345', '12345'); + test_to_equal_success('timestamp(9)', 'to_Timestamp(''2016 123456789'',''yyyy ff'')', 'to_Timestamp(''2016 123456789'',''yyyy ff'')'); + test_to_equal_success('timestamp(9) with local time zone', 'to_Timestamp(''2016 123456789'',''yyyy ff'')', 'to_Timestamp(''2016 123456789'',''yyyy ff'')'); + test_to_equal_success('timestamp(9) with time zone', 'to_Timestamp(''2016 123456789'',''yyyy ff'')', 'to_Timestamp(''2016 123456789'',''yyyy ff'')'); + test_to_equal_success('varchar2(4000)', '''Abc''', '''Abc'''); + test_to_equal_success('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); + test_to_equal_success('interval year to month', '''1-1''', '''1-1'''); + end; + + procedure success_on_both_null is + begin + test_to_equal_success('blob', 'NULL', 'NULL'); + test_to_equal_success('boolean', 'NULL', 'NULL'); + test_to_equal_success('clob', 'NULL', 'NULL'); + test_to_equal_success('date', 'NULL', 'NULL'); + test_to_equal_success('number', 'NULL', 'NULL'); + test_to_equal_success('timestamp', 'NULL', 'NULL'); + test_to_equal_success('timestamp with local time zone', 'NULL', 'NULL'); + test_to_equal_success('timestamp with time zone', 'NULL', 'NULL'); + test_to_equal_success('varchar2(4000)', 'NULL', 'NULL'); + test_to_equal_success('interval day to second', 'NULL', 'NULL'); + test_to_equal_success('interval year to month', 'NULL', 'NULL'); + end; + + procedure success_on_both_null_with_parm is + begin + ut3_tester_helper.main_helper.nulls_are_equal(false); + test_to_equal_success('blob', 'NULL', 'NULL', true); + test_to_equal_success('boolean', 'NULL', 'NULL', true); + test_to_equal_success('clob', 'NULL', 'NULL', true); + test_to_equal_success('date', 'NULL', 'NULL', true); + test_to_equal_success('number', 'NULL', 'NULL', true); + test_to_equal_success('timestamp', 'NULL', 'NULL', true); + test_to_equal_success('timestamp with local time zone', 'NULL', 'NULL', true); + test_to_equal_success('timestamp with time zone', 'NULL', 'NULL', true); + test_to_equal_success('varchar2(4000)', 'NULL', 'NULL', true); + test_to_equal_success('interval day to second', 'NULL', 'NULL', true); + test_to_equal_success('interval year to month', 'NULL', 'NULL', true); + end; + +end; +/ diff --git a/test/ut3_user/expectations/binary/test_equal.pks b/test/ut3_user/expectations/binary/test_equal.pks new file mode 100644 index 000000000..923d43a31 --- /dev/null +++ b/test/ut3_user/expectations/binary/test_equal.pks @@ -0,0 +1,38 @@ +create or replace package test_equal is + + --%suite((not)to_be_equal) + --%suitepath(utplsql.test_user.expectations.binary) + + procedure reset_nulls_equal; + + --%aftereach + procedure cleanup_expectations; + + --%test(Gives failure for different data types) + procedure equal_fail_on_type_diff; + --%test(Negated - gives failure for different data types) + procedure not_equal_fail_on_type_diff; + --%test(Gives failure for different data values) + procedure failure_on_data_diff; + --%test(Gives failure when actual is null) + procedure failure_on_actual_null; + --%test(Gives failure when expected is null) + procedure failure_on_expected_null; + --%test(Gives failure when both values are null and argument nulls_are_equal is false) + procedure failure_on_both_null_with_parm; + + --%test(Gives failure when both values are null and configuration nulls_are_equal is false) + --%aftertest(reset_nulls_equal) + procedure failure_on_both_null_with_conf; + + --%test(Gives success for equal values) + procedure success_on_equal_data; + --%test(Gives success when both values are null) + procedure success_on_both_null; + + --%test(Gives success when both values are null and argument nulls_are_equal is true) + --%aftertest(reset_nulls_equal) + procedure success_on_both_null_with_parm; + +end; +/ diff --git a/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pkb b/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pkb new file mode 100644 index 000000000..4212e4822 --- /dev/null +++ b/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pkb @@ -0,0 +1,263 @@ +create or replace package body test_expect_to_be_less_than is + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + function to_be_less_than_block( + a_data_type varchar2, + a_actual varchar2, + a_expected varchar2 + ) return varchar2 is + begin + return ut3_tester_helper.expectations_helper.binary_expectation_block( + 'to_be_less_than', a_data_type, a_actual, a_data_type, a_expected + ); + end; + + function not_to_be_less_than_block( + a_data_type varchar2, + a_actual varchar2, + a_expected varchar2 + ) return varchar2 is + begin + return ut3_tester_helper.expectations_helper.binary_expectation_block( + 'not_to_be_less_than', a_data_type, a_actual, a_data_type, a_expected + ); + end; + + procedure actual_date_greater is + begin + --Act + execute immediate to_be_less_than_block('date', 'sysdate', 'sysdate-1'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_number_greater is + begin + --Act + execute immediate to_be_less_than_block('number', '2.0', '1.99'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_interval_ym_greater is + begin + --Act + execute immediate to_be_less_than_block('interval year to month', '''2-1''', '''2-0'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_interval_ds_greater is + begin + --Act + execute immediate to_be_less_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_timestamp_greater is + begin + --Act + execute immediate to_be_less_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_timestamp_tz_greater is + begin + --Act + execute immediate to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_timestamp_ltz_greater is + begin + --Act + execute immediate to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_date_equal is + begin + --Act + execute immediate to_be_less_than_block('date', 'sysdate', 'sysdate'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_number_equal is + begin + --Act + execute immediate to_be_less_than_block('number', '2.0', '2.00'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_interval_ym_equal is + begin + --Act + execute immediate to_be_less_than_block('interval year to month', '''2-1''', '''2-1'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_interval_ds_equal is + begin + --Act + execute immediate to_be_less_than_block('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_timestamp_equal is + begin + --Act + execute immediate to_be_less_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_timestamp_tz_equal is + begin + --Act + execute immediate to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_timestamp_ltz_equal is + begin + --Act + execute immediate to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure actual_date_less is + begin + --Act + execute immediate to_be_less_than_block('date', 'sysdate-1', 'sysdate'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure actual_number_less is + begin + --Act + execute immediate to_be_less_than_block('number', '1.0', '1.01'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure actual_interval_ym_less is + begin + --Act + execute immediate to_be_less_than_block('interval year to month', '''2-1''', '''2-2'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure actual_interval_ds_less is + begin + --Act + execute immediate to_be_less_than_block('interval day to second', '''2 00:59:58''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure actual_timestamp_less is + begin + --Act + execute immediate to_be_less_than_block('timestamp', 'to_timestamp(''1997 12'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure actual_timestamp_tz_less is + begin + --Act + execute immediate to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure actual_timestamp_ltz_less is + begin + --Act + execute immediate to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure not_actual_date_greater is + begin + --Act + execute immediate not_to_be_less_than_block('date', 'sysdate', 'sysdate-1'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure not_actual_number_greater is + begin + --Act + execute immediate not_to_be_less_than_block('number', '2.0', '1.99'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure not_actual_interval_ym_greater is + begin + --Act + execute immediate not_to_be_less_than_block('interval year to month', '''2-1''', '''2-0'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure not_actual_interval_ds_greater is + begin + --Act + execute immediate not_to_be_less_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure not_actual_timestamp_greater is + begin + --Act + execute immediate not_to_be_less_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure not_actual_timestamp_tz_gretr is + begin + --Act + execute immediate not_to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure not_actual_timestamp_ltz_gretr is + begin + --Act + execute immediate not_to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure actual_clob is + begin + --Act + ut3.ut.expect(to_clob('3')).to_( ut3.be_less_than(4) ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + +end; +/ diff --git a/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pks b/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pks new file mode 100644 index 000000000..c03f0d28e --- /dev/null +++ b/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pks @@ -0,0 +1,97 @@ +create or replace package test_expect_to_be_less_than is + + --%suite((not)to_be_less_than) + --%suitepath(utplsql.test_user.expectations.binary) + + --%aftereach + procedure cleanup_expectations; + + --%test(Gives failure when actual date is greater than expected) + procedure actual_date_greater; + + --%test(Gives failure when actual number is greater than expected) + procedure actual_number_greater; + + --%test(Gives failure when actual interval year to month is greater than expected) + procedure actual_interval_ym_greater; + + --%test(Gives failure when actual interval day to second is greater than expected) + procedure actual_interval_ds_greater; + + --%test(Gives failure when actual timestamp is greater than expected) + procedure actual_timestamp_greater; + + --%test(Gives failure when actual timestamp with time zone is greater than expected) + procedure actual_timestamp_tz_greater; + + --%test(Gives failure when actual timestamp with local time zone is greater than expected) + procedure actual_timestamp_ltz_greater; + + --%test(Gives failure when actual date is equal expected) + procedure actual_date_equal; + + --%test(Gives failure when actual number is equal expected) + procedure actual_number_equal; + + --%test(Gives failure when actual interval year to month is equal expected) + procedure actual_interval_ym_equal; + + --%test(Gives failure when actual interval day to second is equal expected) + procedure actual_interval_ds_equal; + + --%test(Gives failure when actual timestamp is equal expected) + procedure actual_timestamp_equal; + + --%test(Gives failure when actual timestamp with time zone is equal expected) + procedure actual_timestamp_tz_equal; + + --%test(Gives failure when actual timestamp with local time zone is equal expected) + procedure actual_timestamp_ltz_equal; + + --%test(Gives success when actual date is less than expected) + procedure actual_date_less; + + --%test(Gives success when actual number is less than expected) + procedure actual_number_less; + + --%test(Gives success when actual interval year to month is less than expected) + procedure actual_interval_ym_less; + + --%test(Gives success when actual interval day to second is less than expected) + procedure actual_interval_ds_less; + + --%test(Gives success when actual timestamp is less than expected) + procedure actual_timestamp_less; + + --%test(Gives success when actual timestamp with time zone is less than expected) + procedure actual_timestamp_tz_less; + + --%test(Gives success when actual timestamp with local time zone is less than expected) + procedure actual_timestamp_ltz_less; + + --%test(Negated - Gives success when actual date is greater than expected) + procedure not_actual_date_greater; + + --%test(Negated - Gives success when actual number is greater than expected) + procedure not_actual_number_greater; + + --%test(Negated - Gives success when actual interval year to month is greater than expected) + procedure not_actual_interval_ym_greater; + + --%test(Negated - Gives success when actual interval day to second is greater than expected) + procedure not_actual_interval_ds_greater; + + --%test(Negated - Gives success when actual timestamp is greater than expected) + procedure not_actual_timestamp_greater; + + --%test(Negated - Gives success when actual timestamp with time zone is greater than expected) + procedure not_actual_timestamp_tz_gretr; + + --%test(Negated - Gives success when actual timestamp with local time zone is greater than expected) + procedure not_actual_timestamp_ltz_gretr; + + --%test(Gives failure when running against CLOB) + procedure actual_clob; + +end; +/ diff --git a/test/ut3_user/expectations/test_expectation_anydata.pkb b/test/ut3_user/expectations/test_expectation_anydata.pkb new file mode 100644 index 000000000..21445cb3b --- /dev/null +++ b/test/ut3_user/expectations/test_expectation_anydata.pkb @@ -0,0 +1,974 @@ +create or replace package body test_expectation_anydata is + + g_test_expected anydata; + g_test_actual anydata; + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + procedure cleanup is + begin + g_test_expected := null; + g_test_actual := null; + cleanup_expectations(); + end; + + procedure fail_on_different_type_null is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertObject( cast(null as ut3_tester_helper.test_dummy_object) ); + g_test_actual := anydata.convertObject( cast(null as ut3_tester_helper.other_dummy_object) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_expected_message := q'[%Actual (ut3_tester_helper.other_dummy_object) cannot be compared to Expected (ut3_tester_helper.test_dummy_object) using matcher 'equal'.]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure fail_on_different_type is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.other_dummy_object(1, 'A', '0') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_expected_message := q'[%Actual (ut3_tester_helper.other_dummy_object) cannot be compared to Expected (ut3_tester_helper.test_dummy_object) using matcher 'equal'.]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure fail_on_different_object_data is + begin + --Arrange + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, null, '0') ); + --Act + ut3.ut.expect( g_test_actual ).not_to_equal( g_test_expected ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure fail_on_one_object_null is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + g_test_actual := anydata.convertObject( cast(null as ut3_tester_helper.test_dummy_object) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_object was expected to equal: ut3_tester_helper.test_dummy_object +%Diff: +%Rows: [ 1 differences ] +%Row No. 1 - Missing: 1A0]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + + end; + + procedure fail_on_collection_vs_object is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(ut3_tester_helper.test_dummy_object(1, 'A', '0')) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_expected_message := q'[%Actual (ut3_tester_helper.test_dummy_object_list) cannot be compared to Expected (ut3_tester_helper.test_dummy_object) using matcher 'equal'.]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure fail_on_null_vs_empty_coll is + l_null_list ut3_tester_helper.test_dummy_object_list; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list() ); + g_test_actual := anydata.convertCollection( l_null_list ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_object_list [ count = ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 0 ] +%Diff: +%Rows: [ all different ] +%All rows are different as the columns position is not matching.]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + + end; + + procedure fail_on_one_collection_null is + l_null_list ut3_tester_helper.test_dummy_object_list; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(ut3_tester_helper.test_dummy_object(1, 'A', '0')) ); + g_test_actual := anydata.convertCollection( l_null_list ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_object_list [ count = ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 1 ] +%Diff: +%Rows: [ 1 differences ] +%Row No. 1 - Missing: 1A0]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure fail_on_one_collection_empty is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(ut3_tester_helper.test_dummy_object(1, 'A', '0')) ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list() ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_object_list [ count = 0 ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 1 ] +%Diff: +%Rows: [ 1 differences ] +%Row No. 1 - Missing: 1A0]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + + end; + + procedure fail_on_different_coll_data is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + l_obj ut3_tester_helper.test_dummy_object := ut3_tester_helper.test_dummy_object(1, 'A', '0'); + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(l_obj) ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(l_obj, l_obj) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 1 ] +%Diff: +%Rows: [ 1 differences ] +%Row No. 2 - Extra: 1A0]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + --%test(Gives success when both anydata are NULL) + procedure success_on_both_anydata_null is + --Arrange + l_null_anydata anydata; + begin + --Act + ut3.ut.expect( l_null_anydata ).to_equal( l_null_anydata ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure success_on_both_object_null is + --Arrange + l_null_object ut3_tester_helper.test_dummy_object; + l_anydata anydata := anydata.convertObject(l_null_object); + begin + --Act + ut3.ut.expect( l_anydata ).to_equal( l_anydata ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure success_on_both_coll_null is + --Arrange + l_null_collection ut3_tester_helper.test_dummy_object_list; + l_anydata anydata := anydata.convertCollection(l_null_collection); + begin + --Act + ut3.ut.expect( l_anydata ).to_equal( l_anydata ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure success_on_same_coll_data is + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(ut3_tester_helper.test_dummy_object(1, 'A', '0')) ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(ut3_tester_helper.test_dummy_object(1, 'A', '0')) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure fail_on_coll_different_order is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + l_first_obj ut3_tester_helper.test_dummy_object := ut3_tester_helper.test_dummy_object(1, 'A', '0'); + l_second_obj ut3_tester_helper.test_dummy_object := ut3_tester_helper.test_dummy_object(2, 'b', '1'); + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(l_first_obj, l_second_obj) ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(l_second_obj, l_first_obj) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + end; + + procedure success_on_same_object_data is + begin + --Arrange + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure exclude_attributes_as_list is + l_list ut3.ut_varchar2_list; + begin + --Arrange + l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','/TEST_DUMMY_OBJECT/ID'); + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>3, "name"=>'A',"Value"=>'1') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_list ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure exclude_attributes_as_csv is + l_list varchar2(100); + begin + --Arrange + l_list := 'TEST_DUMMY_OBJECT/Value,TEST_DUMMY_OBJECT/ID'; + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>2, "name"=>'A',"Value"=>'1') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_list ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure exclude_attributes_xpath is + l_xpath varchar2(100); + begin + --Arrange + l_xpath := '//TEST_DUMMY_OBJECT/Value|//TEST_DUMMY_OBJECT/ID'; + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>2, "name"=>'A',"Value"=>'1') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_xpath ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure exclude_ignores_invalid_attrib is + l_exclude varchar2(100); + begin + --Arrange + l_exclude := 'BadAttributeName'; + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_exclude ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure include_attributes_as_list is + l_list ut3.ut_varchar2_list; + begin + --Arrange + l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','TEST_DUMMY_OBJECT/ID'); + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'b',"Value"=>'0') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_list ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure include_attributes_as_csv is + l_xpath varchar2(100); + begin + --Arrange + l_xpath := 'TEST_DUMMY_OBJECT/key,TEST_DUMMY_OBJECT/ID'; + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_xpath ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure include_attributes_xpath is + l_xpath varchar2(100); + begin + --Arrange + l_xpath := '//TEST_DUMMY_OBJECT/key|//TEST_DUMMY_OBJECT/ID'; + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_xpath ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure include_ignores_invalid_attrib is + l_include varchar2(100); + begin + --Arrange + l_include := ' BadAttributeName, TEST_DUMMY_OBJECT/ID '; + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'B',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_include ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure include_exclude_attributes_csv is + l_exclude varchar2(100); + l_include varchar2(100); + begin + --Arrange + l_include := 'TEST_DUMMY_OBJECT/key,TEST_DUMMY_OBJECT/ID,TEST_DUMMY_OBJECT/Value'; + l_exclude := '//TEST_DUMMY_OBJECT/key|//TEST_DUMMY_OBJECT/Value'; + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'B',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).exclude( l_exclude ).include( l_include ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure include_exclude_attrib_list is + l_exclude ut3.ut_varchar2_list; + l_include ut3.ut_varchar2_list; + l_expected varchar2(32767); + l_actual varchar2(32767); + begin + --Arrange + l_include := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/key','TEST_DUMMY_OBJECT/ID','TEST_DUMMY_OBJECT/Value'); + l_exclude := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/key','TEST_DUMMY_OBJECT/Value'); + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'B',"Value"=>'0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(id=>1, "name"=>'A',"Value"=>'1') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).exclude( l_exclude ).include( l_include ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure reports_diff_attribute is + l_expected varchar2(32767); + l_actual varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, NULL, '0') ); + l_expected := q'[Actual: ut3_tester_helper.test_dummy_object was expected to equal: ut3_tester_helper.test_dummy_object +Diff: +Rows: [ 1 differences ] + Row No. 1 - Actual: + Row No. 1 - Expected: A]'; + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_actual := ut3_tester_helper.main_helper.get_failed_expectations(1); + ut.expect(l_actual).to_be_like(l_expected); + end; + + + procedure reports_diff_structure is + l_obj ut3_tester_helper.test_dummy_object := ut3_tester_helper.test_dummy_object(1, 'A', '0'); + l_expected varchar2(32767); + l_actual varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(l_obj) ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list(l_obj, l_obj) ); + l_expected := q'[Actual: ut3_tester_helper.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 1 ] +Diff: +Rows: [ 1 differences ] + Row No. 2 - Extra: 1A0]'; + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + --Assert + l_actual := ut3_tester_helper.main_helper.get_failed_expectations(1); + ut.expect(l_actual).to_be_like(l_expected); + end; + + function get_anydata return anydata is + begin + return anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'B', '0') ); + end; + + procedure deprec_to_equal_excl_varch is + begin + --Act + ut3.ut.expect(get_anydata()).to_equal(get_anydata(), a_exclude => 'A_COLUMN,Some_Col'); + --Assert + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + end; + + procedure deprec_to_equal_excl_list is + begin + --Act + ut3.ut.expect(get_anydata()).to_equal(get_anydata(), a_exclude => ut3.ut_varchar2_list('A_COLUMN','Some_Col')); + --Assert + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + end; + + procedure deprec_not_to_equal_excl_varch is + begin + --Act + ut3.ut.expect(get_anydata()).not_to_equal(get_anydata(), a_exclude => 'A_COLUMN,Some_Col'); + --Assert + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + end; + + procedure deprec_not_to_equal_excl_list is + begin + --Act + ut3.ut.expect(get_anydata()).not_to_equal(get_anydata(), a_exclude => ut3.ut_varchar2_list('A_COLUMN','Some_Col')); + --Assert + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + end; + + procedure deprec_equal_excl_varch is + begin + --Act + ut3.ut.expect(get_anydata()).to_(ut3.equal(get_anydata(), a_exclude => 'A_COLUMN,Some_Col')); + --Assert + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + end; + + procedure deprec_equal_excl_list is + begin + --Act + ut3.ut.expect(get_anydata()).to_(ut3.equal(get_anydata(), a_exclude => ut3.ut_varchar2_list('A_COLUMN','Some_Col'))); + --Assert + ut.expect(cardinality(ut3_tester_helper.main_helper.get_warnings())).to_equal(1); + ut.expect(ut3_tester_helper.main_helper.get_warnings()(1)).to_be_like('The syntax: "%" is deprecated.%'); + end; + + procedure data_diff_on_atr_data_mismatch is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_actual + from dual connect by level <=2; + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=2 + order by rownum desc; + --Act + ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + l_expected_message := q'[Actual: ut3_tester_helper.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 2 ] +Diff: +Rows: [ 2 differences ] + Row No. 1 - Actual: 1Something 11 + Row No. 1 - Expected: 2Something 22 + Row No. 2 - Actual: 2Something 22 + Row No. 2 - Expected: 1Something 11]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure data_diff_on_20_rows_only is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + select ut3_tester_helper.test_dummy_object( rn, 'Something '||rn, rn1) + bulk collect into l_actual + from (select rownum * case when mod(rownum,2) = 0 then -1 else 1 end rn, + rownum * case when mod(rownum,4) = 0 then -1 else 1 end rn1 + from dual connect by level <=100); + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=110; + --Act + ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + l_expected_message := q'[Actual: ut3_tester_helper.test_dummy_object_list [ count = 100 ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 110 ] +Diff: +Rows: [ 60 differences, showing first 20 ] + Row No. 2 - Actual: -2Something -2 + Row No. 2 - Expected: 2Something 2 + Row No. 4 - Actual: -4Something -4-4 + Row No. 4 - Expected: 4Something 44 + % + Row No. 38 - Actual: -38Something -38 + Row No. 38 - Expected: 38Something 38 + Row No. 40 - Actual: -40Something -40-40 + Row No. 40 - Expected: 40Something 4040]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure collection_include_list is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + l_list ut3.ut_varchar2_list; + begin + l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','TEST_DUMMY_OBJECT/ID'); + --Arrange + select ut3_tester_helper.test_dummy_object( rownum, 'SomethingsDifferent '||rownum, rownum) + bulk collect into l_actual + from dual connect by level <=2; + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=2; + --Act + ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).include( l_list ); + + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure collection_exclude_list is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + l_list ut3.ut_varchar2_list; + begin + l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/Value','TEST_DUMMY_OBJECT/ID'); + --Arrange + select ut3_tester_helper.test_dummy_object( rownum*2, 'Something '||rownum, rownum*2) + bulk collect into l_actual + from dual connect by level <=2; + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=2; + --Act + ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).exclude( l_list ); + + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure collection_include_list_fail is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + l_list ut3.ut_varchar2_list; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + l_list := ut3.ut_varchar2_list('TEST_DUMMY_OBJECT/name'); + --Arrange + select ut3_tester_helper.test_dummy_object( rownum, 'SomethingsDifferent '||rownum, rownum) + bulk collect into l_actual + from dual connect by level <=2; + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=2; + --Act + ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).include( l_list ); + + l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 2 ] +%Diff: +%Rows: [ 2 differences ] +%All rows are different as the columns are not matching.]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure array_same_data is + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.t_tab_varchar('A') ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.t_tab_varchar('A') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure array_diff_data is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.t_tab_varchar('A') ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.t_tab_varchar('B') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + l_expected_message := q'[%Actual: ut3_tester_helper.t_tab_varchar [ count = 1 ] was expected to equal: ut3_tester_helper.t_tab_varchar [ count = 1 ] +%Diff: +%Rows: [ 1 differences ] +%Row No. 1 - Actual: B +%Row No. 1 - Expected: A]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure array_is_null is + l_is_null ut3_tester_helper.t_tab_varchar ; + begin + ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_be_null; + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure array_null_equal_array_null is + l_is_null ut3_tester_helper.t_tab_varchar ; + l_is_null_bis ut3_tester_helper.t_tab_varchar ; + begin + ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_equal(anydata.convertCollection( l_is_null_bis )); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure array_null_equal_array_notnull is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + l_is_null ut3_tester_helper.t_tab_varchar ; + begin + --Arrange + g_test_expected := anydata.convertCollection( l_is_null ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.t_tab_varchar('A') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + l_expected_message := q'[%Actual: ut3_tester_helper.t_tab_varchar [ count = 1 ] was expected to equal: ut3_tester_helper.t_tab_varchar [ count = ] +%Diff: +%Rows: [ 1 differences ] +%Row No. 1 - Extra: A]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure empty_array_have_zero_elem is + begin + ut3.ut.expect( anydata.convertCollection(ut3_tester_helper.t_tab_varchar())).to_have_count(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure array_empty_equal_array_empty is + begin + --Arrange + g_test_expected := anydata.convertCollection(ut3_tester_helper.t_tab_varchar()); + g_test_actual := anydata.convertCollection(ut3_tester_helper.t_tab_varchar()); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure arr_empty_equal_arr_notempty is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + l_is_null ut3_tester_helper.t_tab_varchar ; + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.t_tab_varchar() ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.t_tab_varchar('A') ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + l_expected_message := q'[%Actual: ut3_tester_helper.t_tab_varchar [ count = 1 ] was expected to equal: ut3_tester_helper.t_tab_varchar [ count = 0 ] +%Diff: +%Rows: [ 1 differences ] +%Row No. 1 - Extra: A]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure collection_is_null is + l_null_list ut3_tester_helper.test_dummy_object_list; + begin + --Arrange + g_test_actual := anydata.convertCollection( l_null_list ); + --Act + ut3.ut.expect( g_test_actual ).to_be_null; + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure collection_is_empty is + begin + --Arrange + g_test_actual := anydata.convertCollection( ut3_tester_helper.test_dummy_object_list() ); + --Act + ut3.ut.expect( g_test_actual ).to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + + end; + + procedure varray_same_data is + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.t_varray(1) ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.t_varray(1) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure varray_diff_data is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.t_varray(1) ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.t_varray(2) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + l_expected_message := q'[%Actual: ut3_tester_helper.t_varray [ count = 1 ] was expected to equal: ut3_tester_helper.t_varray [ count = 1 ] +%Diff: +%Rows: [ 1 differences ] +%Row No. 1 - Actual: 2 +%Row No. 1 - Expected: 1]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure varray_is_null is + l_is_null ut3_tester_helper.t_varray ; + begin + ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_be_null; + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure varray_null_equal_varray_null is + l_is_null ut3_tester_helper.t_varray ; + l_is_null_bis ut3_tester_helper.t_varray ; + begin + ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_equal(anydata.convertCollection( l_is_null_bis )); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure varr_null_equal_varr_notnull is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + l_is_null ut3_tester_helper.t_varray ; + begin + --Arrange + g_test_expected := anydata.convertCollection( l_is_null ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.t_varray(1) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + l_expected_message := q'[%Actual: ut3_tester_helper.t_varray [ count = 1 ] was expected to equal: ut3_tester_helper.t_varray [ count = ] +%Diff: +%Rows: [ 1 differences ] +%Row No. 1 - Extra: 1]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure empty_varray_have_zero_elem is + begin + ut3.ut.expect( anydata.convertCollection(ut3_tester_helper.t_varray())).to_have_count(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure varr_empty_equal_varr_empty is + begin + --Arrange + g_test_expected := anydata.convertCollection(ut3_tester_helper.t_varray()); + g_test_actual := anydata.convertCollection(ut3_tester_helper.t_varray()); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure varr_empty_equal_varr_notempty is + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + l_is_null ut3_tester_helper.t_varray ; + begin + --Arrange + g_test_expected := anydata.convertCollection( ut3_tester_helper.t_varray() ); + g_test_actual := anydata.convertCollection( ut3_tester_helper.t_varray(1) ); + --Act + ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); + l_expected_message := q'[%Actual: ut3_tester_helper.t_varray [ count = 1 ] was expected to equal: ut3_tester_helper.t_varray [ count = 0 ] +%Diff: +%Rows: [ 1 differences ] +%Row No. 1 - Extra: 1]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure collection_join_by is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_actual + from dual connect by level <=2; + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=2 + order by rownum desc; + --Act + ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).join_by('TEST_DUMMY_OBJECT/ID'); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure collection_join_by_fail is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_actual + from dual connect by level <=2; + select ut3_tester_helper.test_dummy_object( rownum * 2, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=2 + order by rownum desc; + --Act + ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).join_by('TEST_DUMMY_OBJECT/ID'); + l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 2 ] +%Diff: +%Rows: [ 3 differences ] +%PK 2 - Actual: Something 2 +%PK 2 - Actual: 2 +%PK 2 - Expected: Something 1 +%PK 2 - Expected: 1 +%PK 1 - Extra: 1Something 11 +%PK 4 - Missing: 4Something 22]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure collection_unordered is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + begin + --Arrange + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_actual + from dual connect by level <=3; + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=3 + order by rownum desc; + --Act + ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).unordered; + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure collection_unordered_fail is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_actual + from dual connect by level <=2; + select ut3_tester_helper.test_dummy_object( rownum * 2, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=2 + order by rownum desc; + + l_expected_message := q'[%Actual: ut3_tester_helper.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester_helper.test_dummy_object_list [ count = 2 ] +%Diff: +%Rows: [ 4 differences ] +%Extra: 1Something 11 +%Extra: 2Something 22 +%Missing: 4Something 22 +%Missing: 2Something 11]'; + + ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).unordered; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure object_join_by is + begin + --Arrange + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + + --Act + ut3.ut.expect(g_test_actual).to_equal(g_test_expected).join_by('TEST_DUMMY_OBJECT/ID'); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure object_unordered is + begin + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + + --Act + ut3.ut.expect(g_test_actual).to_equal(g_test_expected).unordered; + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure collection_to_contain is + l_actual ut3_tester_helper.test_dummy_object_list; + l_expected ut3_tester_helper.test_dummy_object_list; + begin + --Arrange + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_actual + from dual connect by level <=4; + select ut3_tester_helper.test_dummy_object( rownum, 'Something '||rownum, rownum) + bulk collect into l_expected + from dual connect by level <=2 + order by rownum desc; + --Act + ut3.ut.expect(anydata.convertCollection(l_actual)).to_contain(anydata.convertCollection(l_expected)); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + + procedure object_to_contain is + begin + --Arrange + g_test_expected := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + g_test_actual := anydata.convertObject( ut3_tester_helper.test_dummy_object(1, 'A', '0') ); + + --Act + ut3.ut.expect(g_test_actual).to_contain(g_test_expected); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + end; + +end; +/ \ No newline at end of file diff --git a/test/ut3_user/expectations/test_expectation_anydata.pks b/test/ut3_user/expectations/test_expectation_anydata.pks new file mode 100644 index 000000000..dd414a5c2 --- /dev/null +++ b/test/ut3_user/expectations/test_expectation_anydata.pks @@ -0,0 +1,202 @@ +create or replace package test_expectation_anydata is + + --%suite(equal on anydata) + --%suitepath(utplsql.test_user.expectations) + + --%aftereach + procedure cleanup; + + --%test(Gives failure when comparing NULL objects of different type) + procedure fail_on_different_type_null; + + --%test(Gives failure when comparing objects of different type) + procedure fail_on_different_type; + + --%test(Gives failure when objects holds different data) + procedure fail_on_different_object_data; + + --%test(Gives failure when one of objects is NULL) + procedure fail_on_one_object_null; + + --%test(Gives failure when comparing object to collection) + procedure fail_on_collection_vs_object; + + --%test(Gives failure when comparing empty collection to NULL collection) + procedure fail_on_null_vs_empty_coll; + + --%test(Gives failure when one of collections is NULL) + procedure fail_on_one_collection_null; + + --%test(Gives failure when one of collections is empty) + procedure fail_on_one_collection_empty; + + --%test(Gives failure when collections holds different data) + procedure fail_on_different_coll_data; + + --%test(Gives success when both anydata are NULL) + procedure success_on_both_anydata_null; + + --%test(Gives success when both objects are null) + procedure success_on_both_object_null; + + --%test(Gives success when both collections are null) + procedure success_on_both_coll_null; + + --%test(Gives success when both collections are of same type contain identical data) + procedure success_on_same_coll_data; + + --%test(Gives failure when both collections contain the same data in different order) + procedure fail_on_coll_different_order; + + --%test(Gives success when both objects are of same type and hold the same data) + procedure success_on_same_object_data; + + --%test(List of attributes to exclude is case sensitive) + procedure exclude_attributes_as_list; + + --%test(Comma separated list of attributes to exclude is case sensitive) + procedure exclude_attributes_as_csv; + + --%test(Exclude attributes by XPath is case sensitive) + procedure exclude_attributes_xpath; + + --%test(Excludes existing attributes when some of attributes on exclude are not valid column names) + procedure exclude_ignores_invalid_attrib; + + --%test(List of attributes to include is case sensitive) + procedure include_attributes_as_list; + + --%test(Comma separated list of attributes to include is case sensitive) + procedure include_attributes_as_csv; + + --%test(Include attributes by XPath is case sensitive) + procedure include_attributes_xpath; + + --%test(Includes existing attributes when some of attributes on exclude are not valid column names) + procedure include_ignores_invalid_attrib; + + --%test(Includes only attributes that are not excluded) + procedure include_exclude_attributes_csv; + + --%test(Includes only attributes that are not on exclude list) + procedure include_exclude_attrib_list; + + --%test(Reports diff on incorrect attributes of an object type) + procedure reports_diff_attribute; + + --%test(Reports diff on incorrect rows and attributes of a collection type) + procedure reports_diff_structure; + + --%test(Adds a warning when using depreciated syntax to_equal( a_expected anydata, a_exclude varchar2 )) + procedure deprec_to_equal_excl_varch; + + --%test(Adds a warning when using depreciated syntax to_equal( a_expected anydata, a_exclude ut_varchar2_list )) + procedure deprec_to_equal_excl_list; + + --%test(Adds a warning when using depreciated syntax not_to_equal( a_expected anydata, a_exclude varchar2 )) + procedure deprec_not_to_equal_excl_varch; + + --%test(Adds a warning when using depreciated syntax not_to_equal( a_expected anydata, a_exclude ut_varchar2_list )) + procedure deprec_not_to_equal_excl_list; + + --%test(Adds a warning when using depreciated syntax to_( equal( a_expected anydata, a_exclude varchar2 ) )) + procedure deprec_equal_excl_varch; + + --%test(Adds a warning when using depreciated syntax to_( equal( a_expected anydata, a_exclude ut_varchar2_list )) ) + procedure deprec_equal_excl_list; + + --%test(Reports only mismatched attributes on row data mismatch) + procedure data_diff_on_atr_data_mismatch; + + --%test(Reports only first 20 rows of diff and gives a full diff count) + procedure data_diff_on_20_rows_only; + + --%test(Validate include list on collections of objects) + procedure collection_include_list; + + --%test(Validate exclude list on collections of objects) + procedure collection_exclude_list; + + --%test(Validate include list on collections of objects fail) + procedure collection_include_list_fail; + + --%test(Two ARRAYS with same data) + procedure array_same_data; + + --%test(Two ARRAYS with different data) + procedure array_diff_data; + + --%test(ARRAY is atomically null) + procedure array_is_null; + + --%test(Compare two null ARRAYs) + procedure array_null_equal_array_null; + + --%test(Compare null ARRAY to ARRAY with data) + procedure array_null_equal_array_notnull; + + --%test(Empty ARRAY have count of 0) + procedure empty_array_have_zero_elem; + + --%test(Compare two empty ARRAYs) + procedure array_empty_equal_array_empty; + + --%test(Compare empty ARRAY to ARRAY with data) + procedure arr_empty_equal_arr_notempty; + + --%test(Collection is atomically NULL) + procedure collection_is_null; + + --%test(Collection is empty) + procedure collection_is_empty; + + --%test(Two VARRAYS with same data) + procedure varray_same_data; + + --%test(Two VARRAYS with different data) + procedure varray_diff_data; + + --%test(VARRAY is atomically null) + procedure varray_is_null; + + --%test(Compare two null VARRAYs) + procedure varray_null_equal_varray_null; + + --%test(Compare null VARRAY to VARRAY with data) + procedure varr_null_equal_varr_notnull; + + --%test(Empty VARRAY have count of 0) + procedure empty_varray_have_zero_elem; + + --%test(Compare two empty VARRAYs) + procedure varr_empty_equal_varr_empty; + + --%test(Compare empty VARRAY to VARRAY with data) + procedure varr_empty_equal_varr_notempty; + + --%test( Anydata collection using joinby ) + procedure collection_join_by; + + --%test( Anydata collection using joinby fail) + procedure collection_join_by_fail; + + --%test( Anydata collection unordered ) + procedure collection_unordered; + + --%test( Anydata collection unordered fail ) + procedure collection_unordered_fail; + + --%test( Anydata object using joinby ) + procedure object_join_by; + + --%test( Anydata object unordered ) + procedure object_unordered; + + --%test( Success when anydata collection contains data from another anydata collection) + procedure collection_to_contain; + + --%test( Success when anydata object contains data from another anydata) + procedure object_to_contain; + +end; +/ diff --git a/test/ut3_user/expectations/test_expectations_cursor.pks b/test/ut3_user/expectations/test_expectations_cursor.pks index e8f492674..ae37b37d3 100644 --- a/test/ut3_user/expectations/test_expectations_cursor.pks +++ b/test/ut3_user/expectations/test_expectations_cursor.pks @@ -1,7 +1,7 @@ create or replace package test_expectations_cursor is --%suite(cursor expectations) - --%suitepath(utplsql.core.expectations) + --%suitepath(utplsql.test_user.expectations) --%aftereach procedure cleanup_expectations; diff --git a/test/ut3_user/expectations/test_matchers.pks b/test/ut3_user/expectations/test_matchers.pks index b8fc699ee..e3e22e0cd 100644 --- a/test/ut3_user/expectations/test_matchers.pks +++ b/test/ut3_user/expectations/test_matchers.pks @@ -1,7 +1,7 @@ create or replace package test_matchers is --%suite(matchers) - --%suitepath(utplsql.core.expectations) + --%suitepath(utplsql.test_user.expectations) --%aftereach procedure cleanup_expectations; From e2561bc70599bc0fffa20480ba1aab5248b9eb7a Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 25 Mar 2019 07:32:46 +0000 Subject: [PATCH 06/31] Adding next set of tests migrated. expectations/binary/test_be_less_or_equal changing name of function to more meaningful. --- test/install_ut3_user_tests.sql | 2 + test/ut3_tester_helper/main_helper.pkb | 2 +- test/ut3_tester_helper/main_helper.pks | 2 +- .../binary/test_be_less_or_equal.pkb | 263 ++++++++++++++++++ .../binary/test_be_less_or_equal.pks | 97 +++++++ .../expectations/binary/test_equal.pkb | 6 +- .../binary/test_expect_to_be_less_than.pkb | 58 ++-- .../expectations/test_expectation_anydata.pkb | 74 ++--- .../expectations/test_expectations_cursor.pkb | 158 +++++------ test/ut3_user/expectations/test_matchers.pkb | 20 +- 10 files changed, 522 insertions(+), 160 deletions(-) create mode 100644 test/ut3_user/expectations/binary/test_be_less_or_equal.pkb create mode 100644 test/ut3_user/expectations/binary/test_be_less_or_equal.pks diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index b38375c34..aad875984 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -7,6 +7,7 @@ alter session set plsql_optimize_level=0; prompt Install user tests @@ut3_user/expectations/binary/test_equal.pks @@ut3_user/expectations/binary/test_expect_to_be_less_than.pks +@@ut3_user/expectations/binary/test_be_less_or_equal.pks @@ut3_user/expectations/test_matchers.pks @@ut3_user/expectations/test_expectation_anydata.pks @@ut3_user/expectations/test_expectations_cursor.pks @@ -14,6 +15,7 @@ prompt Install user tests @@ut3_user/expectations/binary/test_equal.pkb @@ut3_user/expectations/binary/test_expect_to_be_less_than.pkb +@@ut3_user/expectations/binary/test_be_less_or_equal.pkb @@ut3_user/expectations/test_matchers.pkb @@ut3_user/expectations/test_expectation_anydata.pkb @@ut3_user/expectations/test_expectations_cursor.pkb diff --git a/test/ut3_tester_helper/main_helper.pkb b/test/ut3_tester_helper/main_helper.pkb index 4c93720cd..1085e5c47 100644 --- a/test/ut3_tester_helper/main_helper.pkb +++ b/test/ut3_tester_helper/main_helper.pkb @@ -63,7 +63,7 @@ create or replace package body main_helper is return anydata.convertCollection(ut3.ut_expectation_processor.get_failed_expectations()); end; - function get_failed_expectations_n return number is + function get_failed_expectations_num return number is l_num_failed number; l_results ut3.ut_expectation_results := ut3.ut_expectation_processor.get_failed_expectations(); begin diff --git a/test/ut3_tester_helper/main_helper.pks b/test/ut3_tester_helper/main_helper.pks index be755fea6..8f904501f 100644 --- a/test/ut3_tester_helper/main_helper.pks +++ b/test/ut3_tester_helper/main_helper.pks @@ -15,7 +15,7 @@ create or replace package main_helper is function get_failed_expectations(a_pos in number) return varchar2; - function get_failed_expectations_n return number; + function get_failed_expectations_num return number; procedure clear_expectations; diff --git a/test/ut3_user/expectations/binary/test_be_less_or_equal.pkb b/test/ut3_user/expectations/binary/test_be_less_or_equal.pkb new file mode 100644 index 000000000..81634f7f5 --- /dev/null +++ b/test/ut3_user/expectations/binary/test_be_less_or_equal.pkb @@ -0,0 +1,263 @@ +create or replace package body test_be_less_or_equal is + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + function to_less_or_equal_block( + a_data_type varchar2, + a_actual varchar2, + a_expected varchar2 + ) return varchar2 is + begin + return ut3_tester_helper.expectations_helper.binary_expectation_block( + 'to_be_less_or_equal', a_data_type, a_actual, a_data_type, a_expected + ); + end; + + function not_to_less_or_equal_block( + a_data_type varchar2, + a_actual varchar2, + a_expected varchar2 + ) return varchar2 is + begin + return ut3_tester_helper.expectations_helper.binary_expectation_block( + 'not_to_be_less_or_equal', a_data_type, a_actual, a_data_type, a_expected + ); + end; + + procedure actual_date_greater is + begin + --Act + execute immediate to_less_or_equal_block('date', 'sysdate', 'sysdate-1'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_number_greater is + begin + --Act + execute immediate to_less_or_equal_block('number', '2.0', '1.99'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_interval_ym_greater is + begin + --Act + execute immediate to_less_or_equal_block('interval year to month', '''2-1''', '''2-0'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_interval_ds_greater is + begin + --Act + execute immediate to_less_or_equal_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_greater is + begin + --Act + execute immediate to_less_or_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_tz_greater is + begin + --Act + execute immediate to_less_or_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_ltz_greater is + begin + --Act + execute immediate to_less_or_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_date_equal is + begin + --Act + execute immediate to_less_or_equal_block('date', 'sysdate', 'sysdate'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_number_equal is + begin + --Act + execute immediate to_less_or_equal_block('number', '2.0', '2.00'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ym_equal is + begin + --Act + execute immediate to_less_or_equal_block('interval year to month', '''2-1''', '''2-1'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ds_equal is + begin + --Act + execute immediate to_less_or_equal_block('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_equal is + begin + --Act + execute immediate to_less_or_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_tz_equal is + begin + --Act + execute immediate to_less_or_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_ltz_equal is + begin + --Act + execute immediate to_less_or_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_date_less is + begin + --Act + execute immediate to_less_or_equal_block('date', 'sysdate-1', 'sysdate'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_number_less is + begin + --Act + execute immediate to_less_or_equal_block('number', '1.0', '1.01'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ym_less is + begin + --Act + execute immediate to_less_or_equal_block('interval year to month', '''2-1''', '''2-2'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ds_less is + begin + --Act + execute immediate to_less_or_equal_block('interval day to second', '''2 00:59:58''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_less is + begin + --Act + execute immediate to_less_or_equal_block('timestamp', 'to_timestamp(''1997 12'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_tz_less is + begin + --Act + execute immediate to_less_or_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_ltz_less is + begin + --Act + execute immediate to_less_or_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure not_actual_date_greater is + begin + --Act + execute immediate not_to_less_or_equal_block('date', 'sysdate', 'sysdate-1'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure not_actual_number_greater is + begin + --Act + execute immediate not_to_less_or_equal_block('number', '2.0', '1.99'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure not_actual_interval_ym_greater is + begin + --Act + execute immediate not_to_less_or_equal_block('interval year to month', '''2-1''', '''2-0'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure not_actual_interval_ds_greater is + begin + --Act + execute immediate not_to_less_or_equal_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure not_actual_timestamp_greater is + begin + --Act + execute immediate not_to_less_or_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure not_actual_timestamp_tz_gretr is + begin + --Act + execute immediate not_to_less_or_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure not_actual_timestamp_ltz_gretr is + begin + --Act + execute immediate not_to_less_or_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_clob is + begin + --Act + ut3.ut.expect(to_clob('3')).to_( ut3.be_less_or_equal(3) ); + --Assert + ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); + end; + +end; +/ diff --git a/test/ut3_user/expectations/binary/test_be_less_or_equal.pks b/test/ut3_user/expectations/binary/test_be_less_or_equal.pks new file mode 100644 index 000000000..a6ab01664 --- /dev/null +++ b/test/ut3_user/expectations/binary/test_be_less_or_equal.pks @@ -0,0 +1,97 @@ +create or replace package test_be_less_or_equal is + + --%suite((not)to_be_less_or_equal) + --%suitepath(utplsql.core.expectations.binary) + + --%aftereach + procedure cleanup_expectations; + + --%test(Gives failure when actual date is greater than expected) + procedure actual_date_greater; + + --%test(Gives failure when actual number is greater than expected) + procedure actual_number_greater; + + --%test(Gives failure when actual interval year to month is greater than expected) + procedure actual_interval_ym_greater; + + --%test(Gives failure when actual interval day to second is greater than expected) + procedure actual_interval_ds_greater; + + --%test(Gives failure when actual timestamp is greater than expected) + procedure actual_timestamp_greater; + + --%test(Gives failure when actual timestamp with time zone is greater than expected) + procedure actual_timestamp_tz_greater; + + --%test(Gives failure when actual timestamp with local time zone is greater than expected) + procedure actual_timestamp_ltz_greater; + + --%test(Gives success when actual date is equal expected) + procedure actual_date_equal; + + --%test(Gives success when actual number is equal expected) + procedure actual_number_equal; + + --%test(Gives success when actual interval year to month is equal expected) + procedure actual_interval_ym_equal; + + --%test(Gives success when actual interval day to second is equal expected) + procedure actual_interval_ds_equal; + + --%test(Gives success when actual timestamp is equal expected) + procedure actual_timestamp_equal; + + --%test(Gives success when actual timestamp with time zone is equal expected) + procedure actual_timestamp_tz_equal; + + --%test(Gives success when actual timestamp with local time zone is equal expected) + procedure actual_timestamp_ltz_equal; + + --%test(Gives success when actual date is less than expected) + procedure actual_date_less; + + --%test(Gives success when actual number is less than expected) + procedure actual_number_less; + + --%test(Gives success when actual interval year to month is less than expected) + procedure actual_interval_ym_less; + + --%test(Gives success when actual interval day to second is less than expected) + procedure actual_interval_ds_less; + + --%test(Gives success when actual timestamp is less than expected) + procedure actual_timestamp_less; + + --%test(Gives success when actual timestamp with time zone is less than expected) + procedure actual_timestamp_tz_less; + + --%test(Gives success when actual timestamp with local time zone is less than expected) + procedure actual_timestamp_ltz_less; + + --%test(Negated - Gives success when actual date is greater than expected) + procedure not_actual_date_greater; + + --%test(Negated - Gives success when actual number is greater than expected) + procedure not_actual_number_greater; + + --%test(Negated - Gives success when actual interval year to month is greater than expected) + procedure not_actual_interval_ym_greater; + + --%test(Negated - Gives success when actual interval day to second is greater than expected) + procedure not_actual_interval_ds_greater; + + --%test(Negated - Gives success when actual timestamp is greater than expected) + procedure not_actual_timestamp_greater; + + --%test(Negated - Gives success when actual timestamp with time zone is greater than expected) + procedure not_actual_timestamp_tz_gretr; + + --%test(Negated - Gives success when actual timestamp with local time zone is greater than expected) + procedure not_actual_timestamp_ltz_gretr; + + --%test(Gives failure when running against CLOB) + procedure actual_clob; + +end; +/ diff --git a/test/ut3_user/expectations/binary/test_equal.pkb b/test/ut3_user/expectations/binary/test_equal.pkb index 8b369d0e7..95fd594c7 100644 --- a/test/ut3_user/expectations/binary/test_equal.pkb +++ b/test/ut3_user/expectations/binary/test_equal.pkb @@ -40,7 +40,7 @@ create or replace package body test_equal is begin execute immediate to_equal_block( 'to_equal', a_actual_type, a_expected_type, a_actual, a_expected, a_nulls_equal ); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); cleanup_expectations; end; @@ -65,7 +65,7 @@ create or replace package body test_equal is begin execute immediate to_equal_block( 'to_equal', a_actual_type, a_expected_type, a_actual, a_expected, a_nulls_equal ); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); cleanup_expectations; end; @@ -79,7 +79,7 @@ create or replace package body test_equal is begin execute immediate to_equal_block( 'not_to_equal', a_actual_type, a_expected_type, a_actual, a_expected, a_nulls_equal ); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); cleanup_expectations; end; diff --git a/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pkb b/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pkb index 4212e4822..d7bf5533b 100644 --- a/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pkb +++ b/test/ut3_user/expectations/binary/test_expect_to_be_less_than.pkb @@ -32,7 +32,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('date', 'sysdate', 'sysdate-1'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_number_greater is @@ -40,7 +40,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('number', '2.0', '1.99'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_interval_ym_greater is @@ -48,7 +48,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('interval year to month', '''2-1''', '''2-0'''); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_interval_ds_greater is @@ -56,7 +56,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_timestamp_greater is @@ -64,7 +64,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_timestamp_tz_greater is @@ -72,7 +72,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_timestamp_ltz_greater is @@ -80,7 +80,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_date_equal is @@ -88,7 +88,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('date', 'sysdate', 'sysdate'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_number_equal is @@ -96,7 +96,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('number', '2.0', '2.00'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_interval_ym_equal is @@ -104,7 +104,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('interval year to month', '''2-1''', '''2-1'''); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_interval_ds_equal is @@ -112,7 +112,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_timestamp_equal is @@ -120,7 +120,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_timestamp_tz_equal is @@ -128,7 +128,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_timestamp_ltz_equal is @@ -136,7 +136,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure actual_date_less is @@ -144,7 +144,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('date', 'sysdate-1', 'sysdate'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure actual_number_less is @@ -152,7 +152,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('number', '1.0', '1.01'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure actual_interval_ym_less is @@ -160,7 +160,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('interval year to month', '''2-1''', '''2-2'''); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure actual_interval_ds_less is @@ -168,7 +168,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('interval day to second', '''2 00:59:58''', '''2 00:59:59'''); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure actual_timestamp_less is @@ -176,7 +176,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('timestamp', 'to_timestamp(''1997 12'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure actual_timestamp_tz_less is @@ -184,7 +184,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure actual_timestamp_ltz_less is @@ -192,7 +192,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure not_actual_date_greater is @@ -200,7 +200,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate not_to_be_less_than_block('date', 'sysdate', 'sysdate-1'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure not_actual_number_greater is @@ -208,7 +208,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate not_to_be_less_than_block('number', '2.0', '1.99'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure not_actual_interval_ym_greater is @@ -216,7 +216,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate not_to_be_less_than_block('interval year to month', '''2-1''', '''2-0'''); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure not_actual_interval_ds_greater is @@ -224,7 +224,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate not_to_be_less_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure not_actual_timestamp_greater is @@ -232,7 +232,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate not_to_be_less_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure not_actual_timestamp_tz_gretr is @@ -240,7 +240,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate not_to_be_less_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure not_actual_timestamp_ltz_gretr is @@ -248,7 +248,7 @@ create or replace package body test_expect_to_be_less_than is --Act execute immediate not_to_be_less_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure actual_clob is @@ -256,7 +256,7 @@ create or replace package body test_expect_to_be_less_than is --Act ut3.ut.expect(to_clob('3')).to_( ut3.be_less_than(4) ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; end; diff --git a/test/ut3_user/expectations/test_expectation_anydata.pkb b/test/ut3_user/expectations/test_expectation_anydata.pkb index 21445cb3b..edab706c0 100644 --- a/test/ut3_user/expectations/test_expectation_anydata.pkb +++ b/test/ut3_user/expectations/test_expectation_anydata.pkb @@ -55,7 +55,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).not_to_equal( g_test_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure fail_on_one_object_null is @@ -183,7 +183,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( l_null_anydata ).to_equal( l_null_anydata ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_on_both_object_null is @@ -194,7 +194,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( l_anydata ).to_equal( l_anydata ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_on_both_coll_null is @@ -205,7 +205,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( l_anydata ).to_equal( l_anydata ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_on_same_coll_data is @@ -216,7 +216,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure fail_on_coll_different_order is @@ -231,7 +231,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure success_on_same_object_data is @@ -242,7 +242,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_attributes_as_list is @@ -255,7 +255,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_list ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_attributes_as_csv is @@ -268,7 +268,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_list ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_attributes_xpath is @@ -281,7 +281,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_xpath ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_ignores_invalid_attrib is @@ -294,7 +294,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected, a_exclude=> l_exclude ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_attributes_as_list is @@ -307,7 +307,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_list ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_attributes_as_csv is @@ -320,7 +320,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_xpath ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_attributes_xpath is @@ -333,7 +333,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_xpath ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_ignores_invalid_attrib is @@ -346,7 +346,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).include( l_include ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_exclude_attributes_csv is @@ -361,7 +361,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).exclude( l_exclude ).include( l_include ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_exclude_attrib_list is @@ -378,7 +378,7 @@ create or replace package body test_expectation_anydata is --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ).exclude( l_exclude ).include( l_include ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure reports_diff_attribute is @@ -559,7 +559,7 @@ Rows: [ 60 differences, showing first 20 ] --Act ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).include( l_list ); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure collection_exclude_list is @@ -578,7 +578,7 @@ Rows: [ 60 differences, showing first 20 ] --Act ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).exclude( l_list ); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure collection_include_list_fail is @@ -615,7 +615,7 @@ Rows: [ 60 differences, showing first 20 ] g_test_actual := anydata.convertCollection( ut3_tester_helper.t_tab_varchar('A') ); --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure array_diff_data is @@ -641,7 +641,7 @@ Rows: [ 60 differences, showing first 20 ] l_is_null ut3_tester_helper.t_tab_varchar ; begin ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_be_null; - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure array_null_equal_array_null is @@ -649,7 +649,7 @@ Rows: [ 60 differences, showing first 20 ] l_is_null_bis ut3_tester_helper.t_tab_varchar ; begin ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_equal(anydata.convertCollection( l_is_null_bis )); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure array_null_equal_array_notnull is @@ -674,7 +674,7 @@ Rows: [ 60 differences, showing first 20 ] procedure empty_array_have_zero_elem is begin ut3.ut.expect( anydata.convertCollection(ut3_tester_helper.t_tab_varchar())).to_have_count(0); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure array_empty_equal_array_empty is @@ -684,7 +684,7 @@ Rows: [ 60 differences, showing first 20 ] g_test_actual := anydata.convertCollection(ut3_tester_helper.t_tab_varchar()); --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure arr_empty_equal_arr_notempty is @@ -714,7 +714,7 @@ Rows: [ 60 differences, showing first 20 ] --Act ut3.ut.expect( g_test_actual ).to_be_null; --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure collection_is_empty is @@ -724,7 +724,7 @@ Rows: [ 60 differences, showing first 20 ] --Act ut3.ut.expect( g_test_actual ).to_have_count(0); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; @@ -735,7 +735,7 @@ Rows: [ 60 differences, showing first 20 ] g_test_actual := anydata.convertCollection( ut3_tester_helper.t_varray(1) ); --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure varray_diff_data is @@ -761,7 +761,7 @@ Rows: [ 60 differences, showing first 20 ] l_is_null ut3_tester_helper.t_varray ; begin ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_be_null; - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure varray_null_equal_varray_null is @@ -769,7 +769,7 @@ Rows: [ 60 differences, showing first 20 ] l_is_null_bis ut3_tester_helper.t_varray ; begin ut3.ut.expect( anydata.convertCollection( l_is_null ) ).to_equal(anydata.convertCollection( l_is_null_bis )); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure varr_null_equal_varr_notnull is @@ -794,7 +794,7 @@ Rows: [ 60 differences, showing first 20 ] procedure empty_varray_have_zero_elem is begin ut3.ut.expect( anydata.convertCollection(ut3_tester_helper.t_varray())).to_have_count(0); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure varr_empty_equal_varr_empty is @@ -804,7 +804,7 @@ Rows: [ 60 differences, showing first 20 ] g_test_actual := anydata.convertCollection(ut3_tester_helper.t_varray()); --Act ut3.ut.expect( g_test_actual ).to_equal( g_test_expected ); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure varr_empty_equal_varr_notempty is @@ -842,7 +842,7 @@ Rows: [ 60 differences, showing first 20 ] order by rownum desc; --Act ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).join_by('TEST_DUMMY_OBJECT/ID'); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure collection_join_by_fail is @@ -889,7 +889,7 @@ Rows: [ 60 differences, showing first 20 ] order by rownum desc; --Act ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).unordered; - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure collection_unordered_fail is @@ -929,7 +929,7 @@ Rows: [ 60 differences, showing first 20 ] --Act ut3.ut.expect(g_test_actual).to_equal(g_test_expected).join_by('TEST_DUMMY_OBJECT/ID'); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure object_unordered is @@ -939,7 +939,7 @@ Rows: [ 60 differences, showing first 20 ] --Act ut3.ut.expect(g_test_actual).to_equal(g_test_expected).unordered; - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure collection_to_contain is @@ -956,7 +956,7 @@ Rows: [ 60 differences, showing first 20 ] order by rownum desc; --Act ut3.ut.expect(anydata.convertCollection(l_actual)).to_contain(anydata.convertCollection(l_expected)); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure object_to_contain is @@ -967,7 +967,7 @@ Rows: [ 60 differences, showing first 20 ] --Act ut3.ut.expect(g_test_actual).to_contain(g_test_expected); - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; end; diff --git a/test/ut3_user/expectations/test_expectations_cursor.pkb b/test/ut3_user/expectations/test_expectations_cursor.pkb index 5bae87df6..a83fb0ae9 100644 --- a/test/ut3_user/expectations/test_expectations_cursor.pkb +++ b/test/ut3_user/expectations/test_expectations_cursor.pkb @@ -50,7 +50,7 @@ create or replace package body test_expectations_cursor is --Act - execute the expectation on cursor opened on GTT ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); --Cleanup rollback; end; @@ -78,7 +78,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); ut3.ut.reset_nls; end; @@ -93,7 +93,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_on_both_null @@ -104,7 +104,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_to_be_null @@ -114,7 +114,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_null(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_not_to_be_not_null @@ -124,7 +124,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_be_not_null(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_not_to_be_null @@ -136,7 +136,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_not_null(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_to_be_not_null @@ -148,7 +148,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_not_null(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_is_empty @@ -160,7 +160,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_empty(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure success_is_not_empty @@ -172,7 +172,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_be_empty(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure failure_is_null @@ -184,7 +184,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_null(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure failure_is_not_null @@ -194,7 +194,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_be_null(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure failure_is_empty @@ -206,7 +206,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_be_empty(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure failure_is_not_empty @@ -218,7 +218,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_be_empty(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure fail_null_vs_empty @@ -231,7 +231,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).not_to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure fail_on_difference @@ -245,7 +245,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure fail_on_expected_missing @@ -259,7 +259,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure fail_on_actual_missing @@ -273,7 +273,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure fail_on_different_column_name @@ -287,7 +287,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; @@ -302,7 +302,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure pass_on_different_column_order @@ -316,7 +316,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ).unordered_columns; --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure pass_on_diff_column_ord_uc @@ -330,7 +330,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ).uc; --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure fail_on_multi_diff_col_order @@ -390,7 +390,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure include_time_in_date_with_nls @@ -407,7 +407,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect( l_actual ).to_equal( l_expected ); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); ut3.ut.reset_nls; end; @@ -422,7 +422,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_columns_as_list @@ -436,7 +436,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>ut3.ut_varchar2_list('A_COLUMN','Some_Col')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_columns_as_csv @@ -450,7 +450,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>'A_COLUMN,Some_Col'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_columns_as_mixed_list is @@ -463,7 +463,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>ut3.ut_varchar2_list('A_COLUMN','/ROW/Some_Col')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_columns_as_mix_csv_lst is @@ -476,7 +476,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>'A_COLUMN,/ROW/Some_Col'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_columns_xpath_invalid @@ -517,7 +517,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>'/ROW/A_COLUMN|/ROW/Some_Col'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure exclude_ignores_invalid_column @@ -531,7 +531,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected, a_exclude=>ut3.ut_varchar2_list('A_COLUMN','non_existing_column')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_columns_as_list @@ -545,7 +545,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_columns_as_csv @@ -559,7 +559,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).include('RN,//A_Column, SOME_COL'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_columns_xpath @@ -573,7 +573,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).include('/ROW/RN|//A_Column|//SOME_COL'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_ignores_invalid_column @@ -587,7 +587,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list(' RN ',' non_existing_column ')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_exclude_col_csv_xpath @@ -601,7 +601,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude('Some_Col').include('/ROW/RN|//Some_Col'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure include_exclude_columns_list @@ -615,7 +615,7 @@ create or replace package body test_expectations_cursor is --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude(ut3.ut_varchar2_list('A_COLUMN')).include(ut3.ut_varchar2_list('RN','A_Column','A_COLUMN')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure data_diff_on_rows_mismatch @@ -746,7 +746,7 @@ Rows: [ all different ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered_columns; - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; --%test(Reports only mismatched columns on column data mismatch) @@ -937,7 +937,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_expected).to_equal(l_actual); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure closes_cursor_after_use @@ -1014,7 +1014,7 @@ Rows: [ 4 differences ] ut3.ut.expect(l_actual).to_equal(l_expected); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; function get_cursor return sys_refcursor is @@ -1116,7 +1116,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_unorderd_compr_success is @@ -1129,7 +1129,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered; --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_unord_compr_success_uc is @@ -1142,7 +1142,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered().uc(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_unordered_compare_fail is @@ -1184,7 +1184,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('OBJECT_ID').uc(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_joinby_compare is @@ -1198,7 +1198,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('OBJECT_ID'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_joinby_col_not_ord @@ -1237,7 +1237,7 @@ Rows: [ 4 differences ] --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by(ut3.ut_varchar2_list('OBJECT_ID,OBJECT_NAME')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_joinby_compare_nokey is @@ -1388,7 +1388,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('OBJECT_ID'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_unorder_compare_1000 is @@ -1401,7 +1401,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered; --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_joinby_compare_fail is @@ -1493,7 +1493,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')).unordered; --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure joinby_incl_cols_as_list @@ -1507,7 +1507,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')).join_by('RN'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure joinby_excl_cols_as_list @@ -1521,7 +1521,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude(ut3.ut_varchar2_list('//Some_Col','A_COLUMN')).join_by('RN'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure unord_excl_cols_as_list @@ -1535,7 +1535,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude(ut3.ut_varchar2_list('A_COLUMN|//Some_Col')).unordered; --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure excl_dif_cols_as_list @@ -1549,7 +1549,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).exclude(ut3.ut_varchar2_list('A_COLUMN')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure inlc_dif_cols_as_list @@ -1563,7 +1563,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure inlc_exc_dif_cols_as_list @@ -1577,7 +1577,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).include(ut3.ut_varchar2_list('RN')).exclude(ut3.ut_varchar2_list('A_COLUMN')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure compare_obj_typ_col_un is @@ -1594,7 +1594,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).unordered; --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure compare_obj_typ_col_jb is @@ -1611,7 +1611,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('COLVAL/ID'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure comp_obj_typ_col_un_fail is @@ -1656,7 +1656,7 @@ Rows: [ 5 differences% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('COLVAL/ID'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure comp_obj_typ_col_jb_multi is @@ -1673,7 +1673,7 @@ Rows: [ 5 differences% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by(ut3.ut_varchar2_list('RN,COLVAL/ID')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure comp_obj_typ_col_jb_nokey is @@ -1729,7 +1729,7 @@ Diff:% ut3.ut.expect(l_actual).to_equal(l_expected).join_by('KEY'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure compare_nest_tab_col_jb_fail is @@ -1796,7 +1796,7 @@ Diff:% ut3.ut.expect(l_actual).to_equal(l_expected).join_by(ut3.ut_varchar2_list('KEY,VALUE')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure compare_nest_tab_cols_jb_fail is @@ -1902,7 +1902,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; @@ -1974,7 +1974,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('NESTED_TABLE'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; @@ -2006,7 +2006,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('NESTED_TABLE/OBJECT_OWNER'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; @@ -2038,7 +2038,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_equal(l_expected).join_by('NESTED_TABLE/ANNOTATIONS'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; @@ -2084,7 +2084,7 @@ Diff:% l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); --Assert ut.expect(l_actual_message).to_be_like(l_expected_message); - --ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_be_greater_than(0); + --ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; procedure compare_rec_coll_as_join is @@ -2173,7 +2173,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_to_contain_uc is @@ -2189,7 +2189,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).uc(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_to_contain_unordered is @@ -2206,7 +2206,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).unordered(); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_to_contain_fail is @@ -2246,7 +2246,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).join_by('USERNAME'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_contain_joinby_fail is @@ -2290,7 +2290,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure to_cont_join_incl_cols_as_lst @@ -2304,7 +2304,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')).join_by('RN'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure contain_join_excl_cols_as_lst @@ -2318,7 +2318,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).exclude(ut3.ut_varchar2_list('//Some_Col','A_COLUMN')).join_by('RN'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure contain_excl_cols_as_list @@ -2332,7 +2332,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected).exclude(ut3.ut_varchar2_list('A_COLUMN|//Some_Col')); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_not_to_contain @@ -2349,7 +2349,7 @@ Diff:% --Act ut3.ut.expect(l_actual).not_to_contain(l_expected); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure cursor_not_to_contain_fail is @@ -2393,7 +2393,7 @@ Diff:% --Act ut3.ut.expect(l_actual).not_to_contain(l_expected).join_by('USER_ID'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure not_cont_join_incl_cols_as_lst is @@ -2406,7 +2406,7 @@ Diff:% --Act ut3.ut.expect(l_actual).not_to_contain(l_expected).include(ut3.ut_varchar2_list('RN','//A_Column','SOME_COL')).join_by('RN'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure not_cont_join_excl_cols_as_lst is @@ -2419,7 +2419,7 @@ Diff:% --Act ut3.ut.expect(l_actual).not_to_contain(l_expected).exclude(ut3.ut_varchar2_list('//Some_Col','A_COLUMN')).join_by('RN'); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure to_contain_duplicates is @@ -2435,7 +2435,7 @@ Diff:% --Act ut3.ut.expect(l_actual).to_contain(l_expected); --Assert - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); end; procedure to_contain_duplicates_fail is diff --git a/test/ut3_user/expectations/test_matchers.pkb b/test/ut3_user/expectations/test_matchers.pkb index c84a623eb..88e25e8b1 100644 --- a/test/ut3_user/expectations/test_matchers.pkb +++ b/test/ut3_user/expectations/test_matchers.pkb @@ -17,9 +17,9 @@ create or replace package body test_matchers is end;'; execute immediate l_statement; if a_result = ut3_tester_helper.main_helper.gc_success then - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_equal(0); else - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_be_greater_than(0); end if; cleanup_expectations(); end exec_matcher; @@ -37,9 +37,9 @@ create or replace package body test_matchers is end;'; execute immediate l_statement; if a_result = ut3_tester_helper.main_helper.gc_success then - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_equal(0); else - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_be_greater_than(0); end if; cleanup_expectations(); end exec_be_between; @@ -57,9 +57,9 @@ create or replace package body test_matchers is end;'; execute immediate l_statement; if a_result = ut3_tester_helper.main_helper.gc_success then - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_equal(0); else - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_be_greater_than(0); end if; cleanup_expectations(); end exec_be_between2; @@ -77,9 +77,9 @@ create or replace package body test_matchers is end;]' using a_pattern, a_escape; if a_result = ut3_tester_helper.main_helper.gc_success then - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_equal(0); else - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_be_greater_than(0); end if; cleanup_expectations(); end; @@ -98,9 +98,9 @@ create or replace package body test_matchers is end;'; execute immediate l_statement using a_pattern, a_modifiers; if a_result = ut3_tester_helper.main_helper.gc_success then - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_equal(0); else - ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_n()).to_be_greater_than(0); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num()).to_be_greater_than(0); end if; cleanup_expectations(); end; From 887e46ab25e2f690a27539fc571ef35cee0a494b Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 25 Mar 2019 07:50:58 +0000 Subject: [PATCH 07/31] Fixing test package --- test/ut3_user/expectations/binary/test_be_less_or_equal.pkb | 2 +- test/ut3_user/expectations/binary/test_be_less_or_equal.pks | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/ut3_user/expectations/binary/test_be_less_or_equal.pkb b/test/ut3_user/expectations/binary/test_be_less_or_equal.pkb index 81634f7f5..bf7632cc4 100644 --- a/test/ut3_user/expectations/binary/test_be_less_or_equal.pkb +++ b/test/ut3_user/expectations/binary/test_be_less_or_equal.pkb @@ -256,7 +256,7 @@ create or replace package body test_be_less_or_equal is --Act ut3.ut.expect(to_clob('3')).to_( ut3.be_less_or_equal(3) ); --Assert - ut.expect( expectations.failed_expectations_data( ) ).not_to_be_empty( ); + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); end; end; diff --git a/test/ut3_user/expectations/binary/test_be_less_or_equal.pks b/test/ut3_user/expectations/binary/test_be_less_or_equal.pks index a6ab01664..d6baf037e 100644 --- a/test/ut3_user/expectations/binary/test_be_less_or_equal.pks +++ b/test/ut3_user/expectations/binary/test_be_less_or_equal.pks @@ -1,7 +1,7 @@ create or replace package test_be_less_or_equal is --%suite((not)to_be_less_or_equal) - --%suitepath(utplsql.core.expectations.binary) + --%suitepath(utplsql.test_user.expectations.binary) --%aftereach procedure cleanup_expectations; From 28dbd1e0bcffc560109195394feb22f4f29650f0 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 25 Mar 2019 11:55:38 +0000 Subject: [PATCH 08/31] Added set of tests: expectations/binary/test_be_greater_or_equal expectations/binary/test_be_greater_than expectations/unary/test_expect_not_to_be_null Passing username implicit into ut_test_runner. --- test/install_ut3_user_tests.sql | 6 + test/ut3_user/api/test_ut_runner.pkb | 2 +- .../binary/test_be_greater_or_equal.pkb | 263 +++++++++++++++++ .../binary/test_be_greater_or_equal.pks | 97 +++++++ .../binary/test_be_greater_than.pkb | 263 +++++++++++++++++ .../binary/test_be_greater_than.pks | 97 +++++++ .../unary/test_expect_not_to_be_null.pkb | 265 ++++++++++++++++++ .../unary/test_expect_not_to_be_null.pks | 97 +++++++ 8 files changed, 1089 insertions(+), 1 deletion(-) create mode 100644 test/ut3_user/expectations/binary/test_be_greater_or_equal.pkb create mode 100644 test/ut3_user/expectations/binary/test_be_greater_or_equal.pks create mode 100644 test/ut3_user/expectations/binary/test_be_greater_than.pkb create mode 100644 test/ut3_user/expectations/binary/test_be_greater_than.pks create mode 100644 test/ut3_user/expectations/unary/test_expect_not_to_be_null.pkb create mode 100644 test/ut3_user/expectations/unary/test_expect_not_to_be_null.pks diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index aad875984..09bc29c24 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -5,17 +5,23 @@ whenever oserror exit failure rollback alter session set plsql_optimize_level=0; prompt Install user tests +@@ut3_user/expectations/unary/test_expect_not_to_be_null.pks @@ut3_user/expectations/binary/test_equal.pks @@ut3_user/expectations/binary/test_expect_to_be_less_than.pks @@ut3_user/expectations/binary/test_be_less_or_equal.pks +@@ut3_user/expectations/binary/test_be_greater_or_equal.pks +@@ut3_user/expectations/binary/test_be_greater_than.pks @@ut3_user/expectations/test_matchers.pks @@ut3_user/expectations/test_expectation_anydata.pks @@ut3_user/expectations/test_expectations_cursor.pks @@ut3_user/api/test_ut_runner.pks +@@ut3_user/expectations/unary/test_expect_not_to_be_null.pkb @@ut3_user/expectations/binary/test_equal.pkb @@ut3_user/expectations/binary/test_expect_to_be_less_than.pkb @@ut3_user/expectations/binary/test_be_less_or_equal.pkb +@@ut3_user/expectations/binary/test_be_greater_or_equal.pkb +@@ut3_user/expectations/binary/test_be_greater_than.pkb @@ut3_user/expectations/test_matchers.pkb @@ut3_user/expectations/test_expectation_anydata.pkb @@ut3_user/expectations/test_expectations_cursor.pkb diff --git a/test/ut3_user/api/test_ut_runner.pkb b/test/ut3_user/api/test_ut_runner.pkb index 4d59c78e2..0c47248bd 100644 --- a/test/ut3_user/api/test_ut_runner.pkb +++ b/test/ut3_user/api/test_ut_runner.pkb @@ -254,7 +254,7 @@ end;'; 'dummy_test_package.some_dummy_test_procedure' path, 0 disabled_flag from dual; --Act - open l_actual for select * from table(ut3.ut_runner.get_suites_info(NULL,'DUMMY_TEST_PACKAGE')); + open l_actual for select * from table(ut3.ut_runner.get_suites_info('UT3$USER#','DUMMY_TEST_PACKAGE')); --Assert ut.expect(l_actual).to_equal(l_expected); end; diff --git a/test/ut3_user/expectations/binary/test_be_greater_or_equal.pkb b/test/ut3_user/expectations/binary/test_be_greater_or_equal.pkb new file mode 100644 index 000000000..5d99d07b6 --- /dev/null +++ b/test/ut3_user/expectations/binary/test_be_greater_or_equal.pkb @@ -0,0 +1,263 @@ +create or replace package body test_be_greater_or_equal is + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + function to_greater_equal_block( + a_data_type varchar2, + a_actual varchar2, + a_expected varchar2 + ) return varchar2 is + begin + return ut3_tester_helper.expectations_helper.binary_expectation_block( + 'to_be_greater_or_equal', a_data_type, a_actual, a_data_type, a_expected + ); + end; + + function not_to_greater_equal_block( + a_data_type varchar2, + a_actual varchar2, + a_expected varchar2 + ) return varchar2 is + begin + return ut3_tester_helper.expectations_helper.binary_expectation_block( + 'not_to_be_greater_or_equal', a_data_type, a_actual, a_data_type, a_expected + ); + end; + + procedure actual_date_greater is + begin + --Act + execute immediate to_greater_equal_block('date', 'sysdate', 'sysdate-1'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_number_greater is + begin + --Act + execute immediate to_greater_equal_block('number', '2.0', '1.99'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ym_greater is + begin + --Act + execute immediate to_greater_equal_block('interval year to month', '''2-1''', '''2-0'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ds_greater is + begin + --Act + execute immediate to_greater_equal_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_greater is + begin + --Act + execute immediate to_greater_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_tz_greater is + begin + --Act + execute immediate to_greater_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_ltz_greater is + begin + --Act + execute immediate to_greater_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_date_equal is + begin + --Act + execute immediate to_greater_equal_block('date', 'sysdate', 'sysdate'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_number_equal is + begin + --Act + execute immediate to_greater_equal_block('number', '2.0', '2.00'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ym_equal is + begin + --Act + execute immediate to_greater_equal_block('interval year to month', '''2-1''', '''2-1'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ds_equal is + begin + --Act + execute immediate to_greater_equal_block('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_equal is + begin + --Act + execute immediate to_greater_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_tz_equal is + begin + --Act + execute immediate to_greater_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_ltz_equal is + begin + --Act + execute immediate to_greater_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_date_less is + begin + --Act + execute immediate to_greater_equal_block('date', 'sysdate-1', 'sysdate'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_number_less is + begin + --Act + execute immediate to_greater_equal_block('number', '1.0', '1.01'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_interval_ym_less is + begin + --Act + execute immediate to_greater_equal_block('interval year to month', '''2-1''', '''2-2'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_interval_ds_less is + begin + --Act + execute immediate to_greater_equal_block('interval day to second', '''2 00:59:58''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_less is + begin + --Act + execute immediate to_greater_equal_block('timestamp', 'to_timestamp(''1997 12'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_tz_less is + begin + --Act + execute immediate to_greater_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_ltz_less is + begin + --Act + execute immediate to_greater_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_date_greater is + begin + --Act + execute immediate not_to_greater_equal_block('date', 'sysdate', 'sysdate-1'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_number_greater is + begin + --Act + execute immediate not_to_greater_equal_block('number', '2.0', '1.99'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_interval_ym_greater is + begin + --Act + execute immediate not_to_greater_equal_block('interval year to month', '''2-1''', '''2-0'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_interval_ds_greater is + begin + --Act + execute immediate not_to_greater_equal_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_timestamp_greater is + begin + --Act + execute immediate not_to_greater_equal_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_timestamp_tz_gretr is + begin + --Act + execute immediate not_to_greater_equal_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_timestamp_ltz_gretr is + begin + --Act + execute immediate not_to_greater_equal_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_clob is + begin + --Act + ut3.ut.expect(to_clob('3')).to_( ut3.be_greater_or_equal(3) ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + +end; +/ diff --git a/test/ut3_user/expectations/binary/test_be_greater_or_equal.pks b/test/ut3_user/expectations/binary/test_be_greater_or_equal.pks new file mode 100644 index 000000000..3f51e8e3f --- /dev/null +++ b/test/ut3_user/expectations/binary/test_be_greater_or_equal.pks @@ -0,0 +1,97 @@ +create or replace package test_be_greater_or_equal is + + --%suite((not)to_be_greater_or_equal) + --%suitepath(utplsql.test_user.expectations.binary) + + --%aftereach + procedure cleanup_expectations; + + --%test(Gives success when actual date is greater than expected) + procedure actual_date_greater; + + --%test(Gives success when actual number is greater than expected) + procedure actual_number_greater; + + --%test(Gives success when actual interval year to month is greater than expected) + procedure actual_interval_ym_greater; + + --%test(Gives success when actual interval day to second is greater than expected) + procedure actual_interval_ds_greater; + + --%test(Gives success when actual timestamp is greater than expected) + procedure actual_timestamp_greater; + + --%test(Gives success when actual timestamp with time zone is greater than expected) + procedure actual_timestamp_tz_greater; + + --%test(Gives success when actual timestamp with local time zone is greater than expected) + procedure actual_timestamp_ltz_greater; + + --%test(Gives success when actual date is equal expected) + procedure actual_date_equal; + + --%test(Gives success when actual number is equal expected) + procedure actual_number_equal; + + --%test(Gives success when actual interval year to month is equal expected) + procedure actual_interval_ym_equal; + + --%test(Gives success when actual interval day to second is equal expected) + procedure actual_interval_ds_equal; + + --%test(Gives success when actual timestamp is equal expected) + procedure actual_timestamp_equal; + + --%test(Gives success when actual timestamp with time zone is equal expected) + procedure actual_timestamp_tz_equal; + + --%test(Gives success when actual timestamp with local time zone is equal expected) + procedure actual_timestamp_ltz_equal; + + --%test(Gives failure when actual date is less than expected) + procedure actual_date_less; + + --%test(Gives failure when actual number is less than expected) + procedure actual_number_less; + + --%test(Gives failure when actual interval year to month is less than expected) + procedure actual_interval_ym_less; + + --%test(Gives failure when actual interval day to second is less than expected) + procedure actual_interval_ds_less; + + --%test(Gives failure when actual timestamp is less than expected) + procedure actual_timestamp_less; + + --%test(Gives failure when actual timestamp with time zone is less than expected) + procedure actual_timestamp_tz_less; + + --%test(Gives failure when actual timestamp with local time zone is less than expected) + procedure actual_timestamp_ltz_less; + + --%test(Negated - Gives failure when actual date is greater than expected) + procedure not_actual_date_greater; + + --%test(Negated - Gives failure when actual number is greater than expected) + procedure not_actual_number_greater; + + --%test(Negated - Gives failure when actual interval year to month is greater than expected) + procedure not_actual_interval_ym_greater; + + --%test(Negated - Gives failure when actual interval day to second is greater than expected) + procedure not_actual_interval_ds_greater; + + --%test(Negated - Gives failure when actual timestamp is greater than expected) + procedure not_actual_timestamp_greater; + + --%test(Negated - Gives failure when actual timestamp with time zone is greater than expected) + procedure not_actual_timestamp_tz_gretr; + + --%test(Negated - Gives failure when actual timestamp with local time zone is greater than expected) + procedure not_actual_timestamp_ltz_gretr; + + --%test(Gives failure when running against CLOB) + procedure actual_clob; + +end; +/ diff --git a/test/ut3_user/expectations/binary/test_be_greater_than.pkb b/test/ut3_user/expectations/binary/test_be_greater_than.pkb new file mode 100644 index 000000000..37e15f633 --- /dev/null +++ b/test/ut3_user/expectations/binary/test_be_greater_than.pkb @@ -0,0 +1,263 @@ +create or replace package body test_be_greater_than is + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + function to_greater_than_block( + a_data_type varchar2, + a_actual varchar2, + a_expected varchar2 + ) return varchar2 is + begin + return ut3_tester_helper.expectations_helper.binary_expectation_block( + 'to_be_greater_than', a_data_type, a_actual, a_data_type, a_expected + ); + end; + + function not_to_greater_than_block( + a_data_type varchar2, + a_actual varchar2, + a_expected varchar2 + ) return varchar2 is + begin + return ut3_tester_helper.expectations_helper.binary_expectation_block( + 'not_to_be_greater_than', a_data_type, a_actual, a_data_type, a_expected + ); + end; + + procedure actual_date_greater is + begin + --Act + execute immediate to_greater_than_block('date', 'sysdate', 'sysdate-1'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_number_greater is + begin + --Act + execute immediate to_greater_than_block('number', '2.0', '1.99'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ym_greater is + begin + --Act + execute immediate to_greater_than_block('interval year to month', '''2-1''', '''2-0'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_interval_ds_greater is + begin + --Act + execute immediate to_greater_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_greater is + begin + --Act + execute immediate to_greater_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_tz_greater is + begin + --Act + execute immediate to_greater_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_timestamp_ltz_greater is + begin + --Act + execute immediate to_greater_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure actual_date_equal is + begin + --Act + execute immediate to_greater_than_block('date', 'sysdate', 'sysdate'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_number_equal is + begin + --Act + execute immediate to_greater_than_block('number', '2.0', '2.00'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_interval_ym_equal is + begin + --Act + execute immediate to_greater_than_block('interval year to month', '''2-1''', '''2-1'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_interval_ds_equal is + begin + --Act + execute immediate to_greater_than_block('interval day to second', '''2 01:00:00''', '''2 01:00:00'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_equal is + begin + --Act + execute immediate to_greater_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_tz_equal is + begin + --Act + execute immediate to_greater_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_ltz_equal is + begin + --Act + execute immediate to_greater_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_date_less is + begin + --Act + execute immediate to_greater_than_block('date', 'sysdate-1', 'sysdate'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_number_less is + begin + --Act + execute immediate to_greater_than_block('number', '1.0', '1.01'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_interval_ym_less is + begin + --Act + execute immediate to_greater_than_block('interval year to month', '''2-1''', '''2-2'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_interval_ds_less is + begin + --Act + execute immediate to_greater_than_block('interval day to second', '''2 00:59:58''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_less is + begin + --Act + execute immediate to_greater_than_block('timestamp', 'to_timestamp(''1997 12'',''YYYY FF'')', 'to_timestamp(''1997 13'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_tz_less is + begin + --Act + execute immediate to_greater_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_timestamp_ltz_less is + begin + --Act + execute immediate to_greater_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +03:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_date_greater is + begin + --Act + execute immediate not_to_greater_than_block('date', 'sysdate', 'sysdate-1'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_number_greater is + begin + --Act + execute immediate not_to_greater_than_block('number', '2.0', '1.99'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_interval_ym_greater is + begin + --Act + execute immediate not_to_greater_than_block('interval year to month', '''2-1''', '''2-0'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_interval_ds_greater is + begin + --Act + execute immediate not_to_greater_than_block('interval day to second', '''2 01:00:00''', '''2 00:59:59'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_timestamp_greater is + begin + --Act + execute immediate not_to_greater_than_block('timestamp', 'to_timestamp(''1997 13'',''YYYY FF'')', 'to_timestamp(''1997 12'',''YYYY FF'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_timestamp_tz_gretr is + begin + --Act + execute immediate not_to_greater_than_block('timestamp with time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_actual_timestamp_ltz_gretr is + begin + --Act + execute immediate not_to_greater_than_block('timestamp with local time zone', 'to_timestamp_tz(''1997 12 +01:00'',''YYYY FF TZR'')', 'to_timestamp_tz(''1997 12 +02:00'',''YYYY FF TZR'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure actual_clob is + begin + --Act + ut3.ut.expect(to_clob('3')).to_( ut3.be_greater_than(2) ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + +end; +/ diff --git a/test/ut3_user/expectations/binary/test_be_greater_than.pks b/test/ut3_user/expectations/binary/test_be_greater_than.pks new file mode 100644 index 000000000..fb158dddb --- /dev/null +++ b/test/ut3_user/expectations/binary/test_be_greater_than.pks @@ -0,0 +1,97 @@ +create or replace package test_be_greater_than is + + --%suite((not)to_be_greater_than) + --%suitepath(utplsql.test_user.expectations.binary) + + --%aftereach + procedure cleanup_expectations; + + --%test(Gives success when actual date is greater than expected) + procedure actual_date_greater; + + --%test(Gives success when actual number is greater than expected) + procedure actual_number_greater; + + --%test(Gives success when actual interval year to month is greater than expected) + procedure actual_interval_ym_greater; + + --%test(Gives success when actual interval day to second is greater than expected) + procedure actual_interval_ds_greater; + + --%test(Gives success when actual timestamp is greater than expected) + procedure actual_timestamp_greater; + + --%test(Gives success when actual timestamp with time zone is greater than expected) + procedure actual_timestamp_tz_greater; + + --%test(Gives success when actual timestamp with local time zone is greater than expected) + procedure actual_timestamp_ltz_greater; + + --%test(Gives failure when actual date is equal expected) + procedure actual_date_equal; + + --%test(Gives failure when actual number is equal expected) + procedure actual_number_equal; + + --%test(Gives failure when actual interval year to month is equal expected) + procedure actual_interval_ym_equal; + + --%test(Gives failure when actual interval day to second is equal expected) + procedure actual_interval_ds_equal; + + --%test(Gives failure when actual timestamp is equal expected) + procedure actual_timestamp_equal; + + --%test(Gives failure when actual timestamp with time zone is equal expected) + procedure actual_timestamp_tz_equal; + + --%test(Gives failure when actual timestamp with local time zone is equal expected) + procedure actual_timestamp_ltz_equal; + + --%test(Gives failure when actual date is less than expected) + procedure actual_date_less; + + --%test(Gives failure when actual number is less than expected) + procedure actual_number_less; + + --%test(Gives failure when actual interval year to month is less than expected) + procedure actual_interval_ym_less; + + --%test(Gives failure when actual interval day to second is less than expected) + procedure actual_interval_ds_less; + + --%test(Gives failure when actual timestamp is less than expected) + procedure actual_timestamp_less; + + --%test(Gives failure when actual timestamp with time zone is less than expected) + procedure actual_timestamp_tz_less; + + --%test(Gives failure when actual timestamp with local time zone is less than expected) + procedure actual_timestamp_ltz_less; + + --%test(Negated - Gives failure when actual date is greater than expected) + procedure not_actual_date_greater; + + --%test(Negated - Gives failure when actual number is greater than expected) + procedure not_actual_number_greater; + + --%test(Negated - Gives failure when actual interval year to month is greater than expected) + procedure not_actual_interval_ym_greater; + + --%test(Negated - Gives failure when actual interval day to second is greater than expected) + procedure not_actual_interval_ds_greater; + + --%test(Negated - Gives failure when actual timestamp is greater than expected) + procedure not_actual_timestamp_greater; + + --%test(Negated - Gives failure when actual timestamp with time zone is greater than expected) + procedure not_actual_timestamp_tz_gretr; + + --%test(Negated - Gives failure when actual timestamp with local time zone is greater than expected) + procedure not_actual_timestamp_ltz_gretr; + + --%test(Gives failure when running against CLOB) + procedure actual_clob; + +end; +/ diff --git a/test/ut3_user/expectations/unary/test_expect_not_to_be_null.pkb b/test/ut3_user/expectations/unary/test_expect_not_to_be_null.pkb new file mode 100644 index 000000000..448addb8c --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_not_to_be_null.pkb @@ -0,0 +1,265 @@ +create or replace package body test_expect_not_to_be_null +is + gc_object_name constant varchar2(30) := 't_not_to_be_null_test'; + gc_nested_table_name constant varchar2(30) := 'tt_not_to_be_null_test'; + gc_varray_name constant varchar2(30) := 'tv_not_to_be_null_test'; + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + procedure create_types is + pragma autonomous_transaction; + begin + execute immediate 'create type ' || gc_object_name || ' is object (dummy number)'; + execute immediate 'create type ' || gc_nested_table_name || ' is table of number'; + execute immediate 'create type ' || gc_varray_name || ' is varray(1) of number'; + end; + + procedure drop_types is + pragma autonomous_transaction; + begin + execute immediate 'drop type ' || gc_object_name; + execute immediate 'drop type ' || gc_nested_table_name; + execute immediate 'drop type ' || gc_varray_name; + end; + + procedure blob_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'blob', 'to_blob(''abc'')' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure blob_0_length is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'blob', 'empty_blob()' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure boolean_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'boolean', 'true' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure clob_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'clob', 'to_clob(''abc'')' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + + procedure clob_0_length is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'clob', 'empty_clob()' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure date_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'date', 'sysdate' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure number_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'number', '1234' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure timestamp_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'timestamp', 'systimestamp' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure timestamp_with_ltz_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( + 'not_to_be_null', 'timestamp with local time zone', 'systimestamp' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure timestamp_with_tz_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'timestamp with time zone', + 'systimestamp' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure varchar2_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'varchar2(4000)', '''abc''' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure initialized_object is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'not_to_be_null', gc_object_name, gc_object_name || '(1)', 'object' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure initialized_nested_table is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'not_to_be_null', gc_nested_table_name, gc_nested_table_name || '()', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure initialized_varray is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'not_to_be_null', gc_varray_name, gc_varray_name || '()', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_blob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'blob', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_boolean is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'boolean', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_clob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'clob', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_date is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'date', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_number is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'number', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_timestamp is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'timestamp', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_timestamp_with_ltz is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( + 'not_to_be_null', 'timestamp with local time zone', 'null' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_timestamp_with_tz is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( + 'not_to_be_null', 'timestamp with time zone', 'null' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_varchar2 is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'varchar2(4000)', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'not_to_be_null', 'anydata', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure uninit_object_in_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'not_to_be_null', gc_object_name, 'null', 'object' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure uninit_nested_table_in_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'not_to_be_null', gc_nested_table_name, 'null', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure uninit_varray_in_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'not_to_be_null', gc_varray_name, 'null', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + +end test_expect_not_to_be_null; +/ diff --git a/test/ut3_user/expectations/unary/test_expect_not_to_be_null.pks b/test/ut3_user/expectations/unary/test_expect_not_to_be_null.pks new file mode 100644 index 000000000..11648d5d2 --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_not_to_be_null.pks @@ -0,0 +1,97 @@ +create or replace package test_expect_not_to_be_null +is + --%suite(not_to_be_null) + --%suitepath(utplsql.test_user.expectations.unary) + + --%aftereach + procedure cleanup_expectations; + + --%beforeall + procedure create_types; + + --%afterall + procedure drop_types; + + --%test(Gives success for not null blob) + procedure blob_not_null; + + --%test(Gives success for blob with length 0) + procedure blob_0_length; + + --%test(Gives success for not null boolean) + procedure boolean_not_null; + + --%test(Gives success for not null clob) + procedure clob_not_null; + + --%test(Gives success for clob with length 0) + procedure clob_0_length; + + --%test(Gives success for not null date) + procedure date_not_null; + + --%test(Gives success for not null number) + procedure number_not_null; + + --%test(Gives success for not null timestamp) + procedure timestamp_not_null; + + --%test(Gives success for not null timestamp with local time zone) + procedure timestamp_with_ltz_not_null; + + --%test(Gives success for not null timestamp with time zone) + procedure timestamp_with_tz_not_null; + + --%test(Gives success for not null varchar2) + procedure varchar2_not_null; + + --%test(Gives success for initialized object within anydata) + procedure initialized_object; + + --%test(Gives success for initialized nested table within anydata) + procedure initialized_nested_table; + + --%test(Gives success for initialized varray within anydata) + procedure initialized_varray; + + --%test(Gives failure with null blob) + procedure null_blob; + + --%test(Gives failure with null boolean) + procedure null_boolean; + + --%test(Gives failure with null clob) + procedure null_clob; + + --%test(Gives failure with null date) + procedure null_date; + + --%test(Gives failure with null number) + procedure null_number; + + --%test(Gives failure null timestamp) + procedure null_timestamp; + + --%test(Gives failure with null timestamp with local time zone) + procedure null_timestamp_with_ltz; + + --%test(Gives failure with null timestamp with time zone) + procedure null_timestamp_with_tz; + + --%test(Gives failure with null varchar2) + procedure null_varchar2; + + --%test(Gives failure with null anydata) + procedure null_anydata; + + --%test(Gives failure with uninitialized object within anydata) + procedure uninit_object_in_anydata; + + --%test(Gives failure with uninitialized nested table within anydata) + procedure uninit_nested_table_in_anydata; + + --%test(Gives failure with uninitialized varray within anydata) + procedure uninit_varray_in_anydata; + +end test_expect_not_to_be_null; +/ From d7eb1250798317f1d4fe06315eca7d5cddb183b4 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 25 Mar 2019 12:50:26 +0000 Subject: [PATCH 09/31] Adding set of tests : expectations/unary/test_expect_to_be_empty expectations/unary/test_expect_to_be_null expectations/unary/test_expect_to_be_true_false expectations/unary/test_expect_to_have_count Adding dummy type for testing. --- test/install_ut3_tester_helper.sql | 1 + test/install_ut3_user_tests.sql | 8 + test/ut3_tester_helper/test_dummy_number.tps | 14 + .../unary/test_expect_to_be_empty.pkb | 270 ++++++++++++++++++ .../unary/test_expect_to_be_empty.pks | 93 ++++++ .../unary/test_expect_to_be_null.pkb | 260 +++++++++++++++++ .../unary/test_expect_to_be_null.pks | 97 +++++++ .../unary/test_expect_to_be_true_false.pkb | 139 +++++++++ .../unary/test_expect_to_be_true_false.pks | 58 ++++ .../unary/test_expect_to_have_count.pkb | 210 ++++++++++++++ .../unary/test_expect_to_have_count.pks | 61 ++++ 11 files changed, 1211 insertions(+) create mode 100644 test/ut3_tester_helper/test_dummy_number.tps create mode 100644 test/ut3_user/expectations/unary/test_expect_to_be_empty.pkb create mode 100644 test/ut3_user/expectations/unary/test_expect_to_be_empty.pks create mode 100644 test/ut3_user/expectations/unary/test_expect_to_be_null.pkb create mode 100644 test/ut3_user/expectations/unary/test_expect_to_be_null.pks create mode 100644 test/ut3_user/expectations/unary/test_expect_to_be_true_false.pkb create mode 100644 test/ut3_user/expectations/unary/test_expect_to_be_true_false.pks create mode 100644 test/ut3_user/expectations/unary/test_expect_to_have_count.pkb create mode 100644 test/ut3_user/expectations/unary/test_expect_to_have_count.pks diff --git a/test/install_ut3_tester_helper.sql b/test/install_ut3_tester_helper.sql index acfb55aff..f221adad6 100644 --- a/test/install_ut3_tester_helper.sql +++ b/test/install_ut3_tester_helper.sql @@ -9,6 +9,7 @@ alter session set plsql_optimize_level=0; @@ut3_tester_helper/test_dummy_object_list.tps @@ut3_tester_helper/test_tab_varchar2.tps @@ut3_tester_helper/test_tab_varray.tps +@@ut3_tester_helper/test_dummy_number.tps @@ut3_tester_helper/main_helper.pks @@ut3_tester_helper/run_helper.pks diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 09bc29c24..d30814439 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -6,6 +6,10 @@ alter session set plsql_optimize_level=0; prompt Install user tests @@ut3_user/expectations/unary/test_expect_not_to_be_null.pks +@@ut3_user/expectations/unary/test_expect_to_be_null.pks +@@ut3_user/expectations/unary/test_expect_to_be_empty.pks +@@ut3_user/expectations/unary/test_expect_to_have_count.pks +@@ut3_user/expectations/unary/test_expect_to_be_true_false.pks @@ut3_user/expectations/binary/test_equal.pks @@ut3_user/expectations/binary/test_expect_to_be_less_than.pks @@ut3_user/expectations/binary/test_be_less_or_equal.pks @@ -17,6 +21,10 @@ prompt Install user tests @@ut3_user/api/test_ut_runner.pks @@ut3_user/expectations/unary/test_expect_not_to_be_null.pkb +@@ut3_user/expectations/unary/test_expect_to_be_null.pkb +@@ut3_user/expectations/unary/test_expect_to_be_empty.pkb +@@ut3_user/expectations/unary/test_expect_to_have_count.pkb +@@ut3_user/expectations/unary/test_expect_to_be_true_false.pkb @@ut3_user/expectations/binary/test_equal.pkb @@ut3_user/expectations/binary/test_expect_to_be_less_than.pkb @@ut3_user/expectations/binary/test_be_less_or_equal.pkb diff --git a/test/ut3_tester_helper/test_dummy_number.tps b/test/ut3_tester_helper/test_dummy_number.tps new file mode 100644 index 000000000..b6283c93b --- /dev/null +++ b/test/ut3_tester_helper/test_dummy_number.tps @@ -0,0 +1,14 @@ +declare + l_exists integer; +begin + select count(1) into l_exists from user_types where type_name = 'TEST_DUMMY_NUMBER'; + if l_exists > 0 then + execute immediate 'drop type test_dummy_number force'; + end if; +end; +/ + +create or replace type test_dummy_number as object ( + id number +) +/ diff --git a/test/ut3_user/expectations/unary/test_expect_to_be_empty.pkb b/test/ut3_user/expectations/unary/test_expect_to_be_empty.pkb new file mode 100644 index 000000000..3694850fe --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_be_empty.pkb @@ -0,0 +1,270 @@ +create or replace package body test_expect_to_be_empty is + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + procedure success_be_empty_cursor is + l_cursor sys_refcursor; + begin + --Arrange + open l_cursor for select * from dual where 1 = 2; + --Act + ut3.ut.expect(l_cursor).to_be_empty; + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_be_empty_cursor is + l_cursor sys_refcursor; + begin + --Arrange + open l_cursor for select * from dual; + --Act + ut3.ut.expect(l_cursor).to_be_empty; + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_be_empty_cursor_report is + l_cursor sys_refcursor; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + open l_cursor for select * from dual; + --Act + ut3.ut.expect(l_cursor).to_be_empty; + + l_expected_message := q'[Actual: (refcursor [ count = 1 ])% + X% +was expected to be empty%%]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure success_not_be_empty_cursor is + l_cursor sys_refcursor; + begin + --Arrange + open l_cursor for select * from dual; + --Act + ut3.ut.expect(l_cursor).not_to_be_empty; + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_not_be_empty_cursor is + l_cursor sys_refcursor; + begin + --Arrange + open l_cursor for select * from dual where 1 = 2; + --Act + ut3.ut.expect(l_cursor).not_to_be_empty; + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure success_be_empty_collection is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertcollection(ora_mining_varchar2_nt()); + -- Act + ut3.ut.expect(l_actual).to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_be_empty_collection is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertcollection(ora_mining_varchar2_nt('a')); + -- Act + ut3.ut.expect(l_actual).to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure success_not_be_empty_coll is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertcollection(ora_mining_varchar2_nt('a')); + -- Act + ut3.ut.expect(l_actual).not_to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_not_be_empty_collection is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertcollection(ora_mining_varchar2_nt()); + -- Act + ut3.ut.expect(l_actual).not_to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_be_empty_null_collection is + l_actual anydata; + l_data ora_mining_varchar2_nt; + begin + --Arrange + l_actual := anydata.convertcollection(l_data); + -- Act + ut3.ut.expect(l_actual).to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_not_be_empty_null_coll is + l_actual anydata; + l_data ora_mining_varchar2_nt; + begin + --Arrange + l_actual := anydata.convertcollection(l_data); + -- Act + ut3.ut.expect(l_actual).not_to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_be_empty_object is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertObject(ut3_tester_helper.test_dummy_number(1)); + -- Act + ut3.ut.expect(l_actual).to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_be_empty_null_object is + l_actual anydata; + l_data ut3_tester_helper.test_dummy_number; + begin + --Arrange + l_actual := anydata.convertObject(l_data); + -- Act + ut3.ut.expect(l_actual).to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_be_empty_number is + begin + -- Act + ut3.ut.expect( 1 ).to_( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + /** + * https://docs.oracle.com/en/database/oracle/oracle-database/18/adobj/declaring-initializing-objects-in-plsql.html#GUID-23135172-82E2-4C3E-800D-E584B43B578E + * User-defined types, just like collections, are atomically null, until you initialize the object by calling the constructor for its object type. That is, the object itself is null, not just its attributes. + */ + procedure fail_not_be_empty_object is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertObject(ut3_tester_helper.test_dummy_number(1)); + -- Act + ut3.ut.expect(l_actual).not_to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_not_be_empty_null_object is + l_actual anydata; + l_data ut3_tester_helper.test_dummy_number; + begin + --Arrange + l_actual := anydata.convertObject(l_data); + -- Act + ut3.ut.expect(l_actual).not_to_be_empty(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_not_be_empty_number is + begin + -- Act + ut3.ut.expect( 1 ).not_to( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure success_be_empty_clob is + begin + -- Act + ut3.ut.expect( empty_clob() ).to_( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_be_empty_clob is + begin + -- Act + ut3.ut.expect( to_clob(' ') ).to_( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure success_be_empty_blob is + begin + -- Act + ut3.ut.expect( empty_blob() ).to_( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_be_empty_blob is + begin + -- Act + ut3.ut.expect( to_blob('AA') ).to_( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + + procedure fail_not_be_empty_clob is + begin + -- Act + ut3.ut.expect( empty_clob() ).not_to( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure success_not_be_empty_clob is + begin + -- Act + ut3.ut.expect( to_clob(' ') ).not_to( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_not_be_empty_blob is + begin + -- Act + ut3.ut.expect( empty_blob() ).not_to( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure success_not_be_empty_blob is + begin + -- Act + ut3.ut.expect( to_blob('AA') ).not_to( ut3.be_empty() ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + +end; +/ \ No newline at end of file diff --git a/test/ut3_user/expectations/unary/test_expect_to_be_empty.pks b/test/ut3_user/expectations/unary/test_expect_to_be_empty.pks new file mode 100644 index 000000000..a76787ac5 --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_be_empty.pks @@ -0,0 +1,93 @@ +create or replace package test_expect_to_be_empty is + + --%suite + --%suitepath(utplsql.test_user.expectations.unary) + + --%aftereach + procedure cleanup_expectations; + + --%context(to_be_empty) + + --%test(Gives success for an empty cursor) + procedure success_be_empty_cursor; + + --%test(Gives failure for a non empty cursor) + procedure fail_be_empty_cursor; + + --%test(Reports the content of cursor when cursor is not empty) + procedure fail_be_empty_cursor_report; + + --%test(Gives success for an empty collection) + procedure success_be_empty_collection; + + --%test(Gives failure for a non empty collection) + procedure fail_be_empty_collection; + + --%test(Gives failure for a NULL collection) + procedure fail_be_empty_null_collection; + + --%test(Gives failure for an object) + procedure fail_be_empty_object; + + --%test(Gives failure for a null object) + procedure fail_be_empty_null_object; + + --%test(Gives failure for number) + procedure fail_be_empty_number; + + --%test(Gives success for an empty CLOB) + procedure success_be_empty_clob; + + --%test(Gives failure for a non empty CLOB) + procedure fail_be_empty_clob; + + --%test(Gives success for an empty BLOB) + procedure success_be_empty_blob; + + --%test(Gives failure for a non empty BLOB) + procedure fail_be_empty_blob; + + --%endcontext + + --%context(not_to_be_empty) + + --%test(Gives failure for an empty cursor) + procedure fail_not_be_empty_cursor; + + --%test(Gives success for a non empty cursor) + procedure success_not_be_empty_cursor; + + --%test(Gives success for a non empty collection) + procedure success_not_be_empty_coll; + + --%test(Gives failure for an empty collection) + procedure fail_not_be_empty_collection; + + --%test(Gives failure for an empty collection) + procedure fail_not_be_empty_null_coll; + + --%test(Gives failure for an empty object) + procedure fail_not_be_empty_object; + + --%test(Gives failure for a null object) + procedure fail_not_be_empty_null_object; + + --%test(Gives failure for number) + procedure fail_not_be_empty_number; + + --%test(Gives failure for an empty CLOB) + procedure fail_not_be_empty_clob; + + --%test(Gives success for a non empty CLOB) + procedure success_not_be_empty_clob; + + --%test(Gives failure for an empty BLOB) + procedure fail_not_be_empty_blob; + + --%test(Gives success for a non empty BLOB) + procedure success_not_be_empty_blob; + + --%endcontext + +end; +/ diff --git a/test/ut3_user/expectations/unary/test_expect_to_be_null.pkb b/test/ut3_user/expectations/unary/test_expect_to_be_null.pkb new file mode 100644 index 000000000..c0899c08d --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_be_null.pkb @@ -0,0 +1,260 @@ +create or replace package body test_expect_to_be_null +is + gc_object_name constant varchar2(30) := 't_to_be_null_test'; + gc_nested_table_name constant varchar2(30) := 'tt_to_be_null_test'; + gc_varray_name constant varchar2(30) := 'tv_to_be_null_test'; + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + procedure create_types is + pragma autonomous_transaction; + begin + execute immediate 'create type ' || gc_object_name || ' is object (dummy number)'; + execute immediate 'create type ' || gc_nested_table_name || ' is table of number'; + execute immediate 'create type ' || gc_varray_name || ' is varray(1) of number'; + end; + + procedure drop_types is + pragma autonomous_transaction; + begin + execute immediate 'drop type ' || gc_object_name; + execute immediate 'drop type ' || gc_nested_table_name; + execute immediate 'drop type ' || gc_varray_name; + end; + + procedure null_blob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'blob', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_boolean is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'boolean', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_clob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'clob', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_date is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'date', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_number is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'number', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_timestamp is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'timestamp', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_timestamp_with_ltz is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'timestamp with local time zone', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_timestamp_with_tz is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'timestamp with time zone', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_varchar2 is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'varchar2(4000)', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'anydata', 'null' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure uninit_object_in_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_null', gc_object_name, 'null', 'object' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure uninit_nested_table_in_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_null', gc_nested_table_name, 'null', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure uninit_varray_in_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( 'to_be_null', gc_varray_name, + 'null', 'collection' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure blob_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'blob', 'to_blob(''abc'')' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure empty_blob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'blob', 'empty_blob()' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure boolean_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'boolean', 'true' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure clob_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'clob', 'to_clob(''abc'')' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure empty_clob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'clob', 'empty_clob()' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure date_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'date', 'sysdate' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure number_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'number', '1234' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure timestamp_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'timestamp', 'systimestamp' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure timestamp_with_ltz_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( + 'to_be_null', 'timestamp with local time zone', 'systimestamp' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure timestamp_with_tz_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( + 'to_be_null', 'timestamp with time zone', 'systimestamp' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure varchar2_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block( 'to_be_null', 'varchar2(4000)', '''abc''' ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure initialized_object is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_null', gc_object_name, gc_object_name || '(1)', 'object' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure initialized_nested_table is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_null', gc_nested_table_name, gc_nested_table_name || '()', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure initialized_varray is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_null', gc_varray_name, gc_varray_name || '()', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + +end test_expect_to_be_null; +/ diff --git a/test/ut3_user/expectations/unary/test_expect_to_be_null.pks b/test/ut3_user/expectations/unary/test_expect_to_be_null.pks new file mode 100644 index 000000000..f1758316e --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_be_null.pks @@ -0,0 +1,97 @@ +create or replace package test_expect_to_be_null +is + --%suite(to_be_null) + --%suitepath(utplsql.test_user.expectations.unary) + + --%aftereach + procedure cleanup_expectations; + + --%beforeall + procedure create_types; + + --%afterall + procedure drop_types; + + --%test(Gives success with null blob) + procedure null_blob; + + --%test(Gives success with null boolean) + procedure null_boolean; + + --%test(Gives success with null clob) + procedure null_clob; + + --%test(Gives success with null date) + procedure null_date; + + --%test(Gives success with null number) + procedure null_number; + + --%test(Gives success null timestamp) + procedure null_timestamp; + + --%test(Gives success with null timestamp with local time zone) + procedure null_timestamp_with_ltz; + + --%test(Gives success with null timestamp with time zone) + procedure null_timestamp_with_tz; + + --%test(Gives success with null varchar2) + procedure null_varchar2; + + --%test(Gives success with null anydata) + procedure null_anydata; + + --%test(Gives success with uninitialized object within anydata) + procedure uninit_object_in_anydata; + + --%test(Gives success with uninitialized nested table within anydata) + procedure uninit_nested_table_in_anydata; + + --%test(Gives success with uninitialized varray within anydata) + procedure uninit_varray_in_anydata; + + --%test(Gives failure for not null blob) + procedure blob_not_null; + + --%test(Gives failure with empty blob) + procedure empty_blob; + + --%test(Gives failure for not null boolean) + procedure boolean_not_null; + + --%test(Gives failure for not null clob) + procedure clob_not_null; + + --%test(Gives failure with empty clob) + procedure empty_clob; + + --%test(Gives failure for not null date) + procedure date_not_null; + + --%test(Gives failure for not null number) + procedure number_not_null; + + --%test(Gives failure for not null timestamp) + procedure timestamp_not_null; + + --%test(Gives failure for not null timestamp with local time zone) + procedure timestamp_with_ltz_not_null; + + --%test(Gives failure for not null timestamp with time zone) + procedure timestamp_with_tz_not_null; + + --%test(Gives failure for not null varchar2) + procedure varchar2_not_null; + + --%test(Gives failure for initialized object within anydata) + procedure initialized_object; + + --%test(Gives failure for initialized nested table within anydata) + procedure initialized_nested_table; + + --%test(Gives failure for initialized varray within anydata) + procedure initialized_varray; + +end test_expect_to_be_null; +/ diff --git a/test/ut3_user/expectations/unary/test_expect_to_be_true_false.pkb b/test/ut3_user/expectations/unary/test_expect_to_be_true_false.pkb new file mode 100644 index 000000000..6a621c6b3 --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_be_true_false.pkb @@ -0,0 +1,139 @@ +create or replace package body test_expect_to_be_true_false +is + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + procedure to_be_true_null_boolean is + begin + --Act + ut3.ut.expect( 1=null ).to_be_true(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure to_be_true_success is + begin + --Act + ut3.ut.expect( 1=1 ).to_be_true(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure to_be_true_failure is + begin + --Act + ut3.ut.expect( 1=2 ).to_be_true(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure to_be_true_bad_type is + begin + --Act + ut3.ut.expect( 1 ).to_be_true(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_to_be_true_null_boolean is + begin + --Act + ut3.ut.expect( 1=null ).not_to_be_true(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_to_be_true_success is + begin + --Act + ut3.ut.expect( 1=2 ).not_to_be_true(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure not_to_be_true_failure is + begin + --Act + ut3.ut.expect( 1=1 ).not_to_be_true(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + + procedure not_to_be_true_bad_type is + begin + --Act + ut3.ut.expect( 1 ).not_to_be_true(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure to_be_false_null_boolean is + begin + --Act + ut3.ut.expect( 1=null ).to_be_false(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure to_be_false_success is + begin + --Act + ut3.ut.expect( 1=2 ).to_be_false(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure to_be_false_failure is + begin + --Act + ut3.ut.expect( 1=1 ).to_be_false(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure to_be_false_bad_type is + begin + --Act + ut3.ut.expect( 1 ).to_be_false(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_to_be_false_null_boolean is + begin + --Act + ut3.ut.expect( 1=null ).not_to_be_false(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_to_be_false_success is + begin + --Act + ut3.ut.expect( 1=1 ).not_to_be_false(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure not_to_be_false_failure is + begin + --Act + ut3.ut.expect( 1=2 ).not_to_be_false(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure not_to_be_false_bad_type is + begin + --Act + ut3.ut.expect( 1 ).not_to_be_false(); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + +end; +/ diff --git a/test/ut3_user/expectations/unary/test_expect_to_be_true_false.pks b/test/ut3_user/expectations/unary/test_expect_to_be_true_false.pks new file mode 100644 index 000000000..28bbae6f7 --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_be_true_false.pks @@ -0,0 +1,58 @@ +create or replace package test_expect_to_be_true_false +is + --%suite(to_be_true/false) + --%suitepath(utplsql.test_user.expectations.unary) + + --%aftereach + procedure cleanup_expectations; + + --%test(to_be_true - Gives failure with null boolean) + procedure to_be_true_null_boolean; + + --%test(to_be_true - Gives success with true expression) + procedure to_be_true_success; + + --%test(to_be_true - Gives failure with false expression) + procedure to_be_true_failure; + + --%test(to_be_true - Gives failure with non-boolean data type) + procedure to_be_true_bad_type; + + --%test(not_to_be_true - Gives failure with null boolean) + procedure not_to_be_true_null_boolean; + + --%test(not_to_be_true - Gives failure with true expression) + procedure not_to_be_true_success; + + --%test(not_to_be_true - Gives success with false expression) + procedure not_to_be_true_failure; + + --%test(not_to_be_true - Gives failure with non-boolean data type) + procedure not_to_be_true_bad_type; + + --%test(to_be_false - Gives failure with null boolean) + procedure to_be_false_null_boolean; + + --%test(to_be_false - Gives failure with true expression) + procedure to_be_false_success; + + --%test(to_be_false - Gives success with false expression) + procedure to_be_false_failure; + + --%test(to_be_false - Gives failure with non-boolean data type) + procedure to_be_false_bad_type; + + --%test(not_to_be_false - Gives failure with null boolean) + procedure not_to_be_false_null_boolean; + + --%test(not_to_be_false - Gives success with true expression) + procedure not_to_be_false_success; + + --%test(not_to_be_false - Gives failure with false expression) + procedure not_to_be_false_failure; + + --%test(not_to_be_false - Gives failure with non-boolean data type) + procedure not_to_be_false_bad_type; + +end; +/ diff --git a/test/ut3_user/expectations/unary/test_expect_to_have_count.pkb b/test/ut3_user/expectations/unary/test_expect_to_have_count.pkb new file mode 100644 index 000000000..327ced120 --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_have_count.pkb @@ -0,0 +1,210 @@ +create or replace package body test_expect_to_have_count is + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + procedure success_have_count_cursor is + l_cursor sys_refcursor; + begin + --Arrange + open l_cursor for select * from dual connect by level <= 11; + --Act + ut3.ut.expect(l_cursor).to_have_count(11); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_have_count_cursor is + l_cursor sys_refcursor; + begin + --Arrange + open l_cursor for select * from dual where 0=1; + --Act + ut3.ut.expect(l_cursor).to_have_count(1); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_have_count_cursor_report is + l_cursor sys_refcursor; + l_actual_message varchar2(32767); + l_expected_message varchar2(32767); + begin + --Arrange + open l_cursor for select * from dual; + --Act + ut3.ut.expect(l_cursor).to_have_count(2); + + l_expected_message := q'[Actual: (refcursor [ count = 1 ]) was expected to have [ count = 2 ]%]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure success_not_have_count_cursor is + l_cursor sys_refcursor; + begin + --Arrange + open l_cursor for select * from dual; + --Act + ut3.ut.expect(l_cursor).not_to_have_count(2); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_not_have_count_cursor is + l_cursor sys_refcursor; + begin + --Arrange + open l_cursor for select * from dual where 1 = 2; + --Act + ut3.ut.expect(l_cursor).not_to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure success_have_count_collection is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertcollection(ora_mining_varchar2_nt()); + -- Act + ut3.ut.expect(l_actual).to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_have_count_collection is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertcollection(ora_mining_varchar2_nt('a')); + -- Act + ut3.ut.expect(l_actual).to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure success_not_have_count_coll is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertcollection(ora_mining_varchar2_nt('a')); + -- Act + ut3.ut.expect(l_actual).not_to_have_count(2); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure fail_not_have_count_coll is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertcollection(ora_mining_varchar2_nt()); + -- Act + ut3.ut.expect(l_actual).not_to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_have_count_null_coll is + l_actual anydata; + l_data ora_mining_varchar2_nt; + begin + --Arrange + l_actual := anydata.convertcollection(l_data); + -- Act + ut3.ut.expect(l_actual).to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_not_have_count_null_coll is + l_actual anydata; + l_data ora_mining_varchar2_nt; + begin + --Arrange + l_actual := anydata.convertcollection(l_data); + -- Act + ut3.ut.expect(l_actual).not_to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_have_count_object is + l_actual anydata; + begin + --Arrange + l_actual := anydata.convertObject(ut3_tester_helper.test_dummy_number(1)); + -- Act + ut3.ut.expect(l_actual).to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_have_count_null_object is + l_actual anydata; + l_data ut3_tester_helper.test_dummy_number; + begin + --Arrange + l_actual := anydata.convertObject(l_data); + -- Act + ut3.ut.expect(l_actual).to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_have_count_number is + l_expected_message varchar2(32767); + l_actual_message varchar2(32767); + begin + -- Act + ut3.ut.expect( 1 ).to_( ut3.have_count(0) ); + --Assert + l_expected_message := q'[%The matcher 'have count' cannot be used with data type (number).%]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure fail_not_have_count_object is + l_actual anydata; + l_expected_message varchar2(32767); + l_actual_message varchar2(32767); + begin + --Arrange + l_actual := anydata.convertObject(ut3_tester_helper.test_dummy_number(1)); + -- Act + ut3.ut.expect(l_actual).not_to_have_count(0); + --Assert + l_expected_message := q'[%The matcher 'have count' cannot be used with data type (ut3_tester_helper.test_dummy_number).%]'; + l_actual_message := ut3_tester_helper.main_helper.get_failed_expectations(1); + --Assert + ut.expect(l_actual_message).to_be_like(l_expected_message); + end; + + procedure fail_not_have_count_null_obj is + l_actual anydata; + l_data ut3_tester_helper.test_dummy_number; + begin + --Arrange + l_actual := anydata.convertObject(l_data); + -- Act + ut3.ut.expect(l_actual).not_to_have_count(0); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure fail_not_have_count_number is + begin + -- Act + ut3.ut.expect( 1 ).not_to( ut3.have_count(0) ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + +end; +/ \ No newline at end of file diff --git a/test/ut3_user/expectations/unary/test_expect_to_have_count.pks b/test/ut3_user/expectations/unary/test_expect_to_have_count.pks new file mode 100644 index 000000000..b944d8800 --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_have_count.pks @@ -0,0 +1,61 @@ +create or replace package test_expect_to_have_count is + + --%suite((not)to_have_count) + --%suitepath(utplsql.test_user.expectations.unary) + + --%aftereach + procedure cleanup_expectations; + + --%test(Gives success for an empty cursor) + procedure success_have_count_cursor; + + --%test(Gives failure for a non empty cursor) + procedure fail_have_count_cursor; + + --%test(Reports the content of cursor when cursor is not empty) + procedure fail_have_count_cursor_report; + + --%test(Negated - Gives success for a non empty cursor) + procedure success_not_have_count_cursor; + + --%test(Negated - Gives failure for an empty cursor) + procedure fail_not_have_count_cursor; + + --%test(Gives success for an empty collection) + procedure success_have_count_collection; + + --%test(Gives failure for a non empty collection) + procedure fail_have_count_collection; + + --%test(Negated - Gives success for a non empty collection) + procedure success_not_have_count_coll; + + --%test(Negated - Gives failure for an empty collection) + procedure fail_not_have_count_coll; + + --%test(Gives failure for a NULL collection) + procedure fail_have_count_null_coll; + + --%test(Negated - Gives failure for an empty collection) + procedure fail_not_have_count_null_coll; + + --%test(Gives failure for an object) + procedure fail_have_count_object; + + --%test(Gives failure for a null object) + procedure fail_have_count_null_object; + + --%test(Gives failure for number) + procedure fail_have_count_number; + + --%test(Negated - Gives failure for an object) + procedure fail_not_have_count_object; + + --%test(Negated - Gives failure for a null object) + procedure fail_not_have_count_null_obj; + + --%test(Negated - Gives failure for number) + procedure fail_not_have_count_number; + +end; +/ From 99e1099682dbdedfbac37a62598404aeda2f89ef Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 25 Mar 2019 17:08:45 +0000 Subject: [PATCH 10/31] Adding schema prefix to failing tests from 12.1 --- .../core/annotations/test_before_after_annotations.pkb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ut3_tester/core/annotations/test_before_after_annotations.pkb b/test/ut3_tester/core/annotations/test_before_after_annotations.pkb index 804508c61..9ee917d84 100644 --- a/test/ut3_tester/core/annotations/test_before_after_annotations.pkb +++ b/test/ut3_tester/core/annotations/test_before_after_annotations.pkb @@ -200,7 +200,7 @@ create or replace package body test_before_after_annotations is execute immediate l_test_package_body; --Execute the tests and collect the results - select * bulk collect into l_test_results from table(ut3.ut.run(('dummy_before_after_test'))); + select * bulk collect into l_test_results from table(ut3.ut.run(('ut3_tester.dummy_before_after_test'))); execute immediate 'drop package dummy_before_after_test'; execute immediate 'drop package shared_test_package'; From 04cd36c46a9841ef60d7af6e3134e7cd68c2f481 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 25 Mar 2019 17:19:40 +0000 Subject: [PATCH 11/31] Fixing development scripts --- development/cleanup.sh | 2 +- development/install.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/development/cleanup.sh b/development/cleanup.sh index 086db6786..fb0415ed1 100755 --- a/development/cleanup.sh +++ b/development/cleanup.sh @@ -3,7 +3,7 @@ #goto git root directory git rev-parse && cd "$(git rev-parse --show-cdup)" -#. development/env.sh +. development/env.sh "${SQLCLI}" sys/${ORACLE_PWD}@//${CONNECTION_STR} AS SYSDBA <<-SQL set echo on diff --git a/development/install.sh b/development/install.sh index 86d7e4da2..4104e2672 100755 --- a/development/install.sh +++ b/development/install.sh @@ -3,7 +3,7 @@ #goto git root directory git rev-parse && cd "$(git rev-parse --show-cdup)" -#. development/env.sh +. development/env.sh header="******************************************************************************************" if ! development/cleanup.sh; then From 3e98723bc0065127b4dfd9263536f4f3daaff534 Mon Sep 17 00:00:00 2001 From: Jacek Gebal Date: Mon, 25 Mar 2019 22:34:34 +0000 Subject: [PATCH 12/31] Fixed bug for deployments with uninstall included. Added new user to `template.env.sh` --- .travis/install.sh | 1 + development/template.env.sh | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.travis/install.sh b/.travis/install.sh index a6ab0cc16..3284d5aa6 100755 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -47,6 +47,7 @@ SQL alter session set plsql_optimize_level=0; @install.sql $UT3_OWNER + @@@create_synonyms_and_grants_for_public.sql $UT3_OWNER SQL fi diff --git a/development/template.env.sh b/development/template.env.sh index b19f63ec7..285b60577 100755 --- a/development/template.env.sh +++ b/development/template.env.sh @@ -13,6 +13,8 @@ export UT3_OWNER_PASSWORD=ut3 export UT3_RELEASE_VERSION_SCHEMA=ut3_latest_release export UT3_TESTER=ut3_tester export UT3_TESTER_PASSWORD=ut3 +export UT3_TESTER_HELPER=ut3_tester_helper +export UT3_TESTER_HELPER_PASSWORD=ut3 export UT3_TABLESPACE=users export UT3_USER="UT3\$USER#" export UT3_USER_PASSWORD=ut3 From 0bf1d9e33372c40163dd0998bba7ab6211b66c11 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Tue, 26 Mar 2019 07:25:30 +0000 Subject: [PATCH 13/31] FIX : removal of non existing types from uninstall script --- source/uninstall_objects.sql | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/uninstall_objects.sql b/source/uninstall_objects.sql index 62d14cb58..4c7a86156 100644 --- a/source/uninstall_objects.sql +++ b/source/uninstall_objects.sql @@ -137,10 +137,6 @@ drop type ut_data_value_boolean force; drop type ut_data_value_blob force; -drop type ut_data_value_object force; - -drop type ut_data_value_collection force; - drop type ut_data_value_anydata force; drop type ut_data_value_xmltype force; From e914d960d03c1042af7fd1743f91bb0e03008ba4 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Tue, 26 Mar 2019 07:36:35 +0000 Subject: [PATCH 14/31] INSTALL:Is it too many monkeys ?:) --- .travis/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis/install.sh b/.travis/install.sh index 3284d5aa6..a6a8a60b0 100755 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -47,7 +47,7 @@ SQL alter session set plsql_optimize_level=0; @install.sql $UT3_OWNER - @@@create_synonyms_and_grants_for_public.sql $UT3_OWNER + @create_synonyms_and_grants_for_public.sql $UT3_OWNER SQL fi From 174dcbc9a90ffa56a827dba5d61882ca7fb38330 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Tue, 26 Mar 2019 23:46:14 +0000 Subject: [PATCH 15/31] Adding set of tests: api/test_ut_run --- test/install_ut3_user_tests.sql | 2 + test/ut3_tester_helper/main_helper.pks | 2 +- test/ut3_tester_helper/run_helper.pkb | 309 ++++++++++++++++++++++++- test/ut3_tester_helper/run_helper.pks | 26 +++ 4 files changed, 327 insertions(+), 12 deletions(-) diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index d30814439..583c844be 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -19,6 +19,7 @@ prompt Install user tests @@ut3_user/expectations/test_expectation_anydata.pks @@ut3_user/expectations/test_expectations_cursor.pks @@ut3_user/api/test_ut_runner.pks +@@ut3_user/api/test_ut_run.pks @@ut3_user/expectations/unary/test_expect_not_to_be_null.pkb @@ut3_user/expectations/unary/test_expect_to_be_null.pkb @@ -34,6 +35,7 @@ prompt Install user tests @@ut3_user/expectations/test_expectation_anydata.pkb @@ut3_user/expectations/test_expectations_cursor.pkb @@ut3_user/api/test_ut_runner.pkb +@@ut3_user/api/test_ut_run.pkb set linesize 200 set define on diff --git a/test/ut3_tester_helper/main_helper.pks b/test/ut3_tester_helper/main_helper.pks index 8f904501f..dab973dfc 100644 --- a/test/ut3_tester_helper/main_helper.pks +++ b/test/ut3_tester_helper/main_helper.pks @@ -26,6 +26,6 @@ create or replace package main_helper is procedure reset_nulls_equal; procedure nulls_are_equal(a_nulls_equal boolean := true); - + end; / diff --git a/test/ut3_tester_helper/run_helper.pkb b/test/ut3_tester_helper/run_helper.pkb index 0ab574e9d..8b9353f38 100644 --- a/test/ut3_tester_helper/run_helper.pkb +++ b/test/ut3_tester_helper/run_helper.pkb @@ -48,18 +48,33 @@ create or replace package body run_helper is execute immediate q'[drop procedure ut3_tester_helper.dummy_test_procedure]'; end; - procedure db_link_setup is + procedure create_db_link is l_service_name varchar2(100); - begin - select global_name into l_service_name from global_name; - execute immediate - 'create public database link db_loopback connect to ut3$user# identified by ut3 + pragma autonomous_transaction; + begin + select global_name into l_service_name from global_name; + execute immediate + 'create public database link db_loopback connect to ut3_tester_helper identified by ut3 using ''(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP) (HOST='||sys_context('userenv','SERVER_HOST')||') - (PORT=1521) - ) - (CONNECT_DATA=(SERVICE_NAME='||l_service_name||')))'''; + (PORT=1521) + ) + (CONNECT_DATA=(SERVICE_NAME='||l_service_name||')))'''; + end; + + procedure drop_db_link is + begin + execute immediate 'drop public database link db_loopback'; + exception + when others then + null; + end; + + procedure db_link_setup is + l_service_name varchar2(100); + begin + create_db_link; execute immediate q'[ create or replace package ut3$user#.test_db_link is --%suite @@ -79,13 +94,285 @@ create or replace package body run_helper is end; end;]'; - end; + end; procedure db_link_cleanup is begin - begin execute immediate 'drop public database link db_loopback'; exception when others then null; end; + drop_db_link; begin execute immediate 'drop package ut3$user#.test_db_link'; exception when others then null; end; end; - + + procedure create_suite_with_link is + pragma autonomous_transaction; + begin + create_db_link; + execute immediate 'create table tst(id number(18,0))'; + execute immediate q'[ + create or replace package test_distributed_savepoint is + --%suite + --%suitepath(alltests) + + --%beforeall + procedure setup; + + --%test + procedure test; + end;]'; + + execute immediate q'[ + create or replace package body test_distributed_savepoint is + + g_expected constant integer := 1; + + procedure setup is + begin + insert into tst@db_loopback values(g_expected); + end; + + procedure test is + l_actual integer := 0; + begin + select id into l_actual from tst@db_loopback; + + ut.expect(l_actual).to_equal(g_expected); + end; + + end;]'; + execute immediate 'grant execute on test_distributed_savepoint to public'; + end; + + procedure drop_suite_with_link is + pragma autonomous_transaction; + begin + drop_db_link; + execute immediate 'drop table tst'; + execute immediate 'drop package test_distributed_savepoint'; + end; + + procedure create_ut3$user#_tests is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package test_package_1 is + --%suite + --%suitepath(tests) + --%rollback(manual) + + --%test(Test1 from test package 1) + procedure test1; + + --%test(Test2 from test package 1) + procedure test2; + + end test_package_1; + ]'; + execute immediate q'[create or replace package body test_package_1 is + procedure test1 is + begin + dbms_output.put_line('test_package_1.test1 executed'); + raise_application_error(-20111,'test'); + end; + procedure test2 is + begin + dbms_output.put_line('test_package_1.test2 executed'); + end; + end test_package_1; + ]'; + + execute immediate q'[create or replace package test_package_2 is + --%suite + --%suitepath(tests.test_package_1) + + --%test + procedure test1; + + --%test + procedure test2; + + end test_package_2; + ]'; + execute immediate q'[create or replace package body test_package_2 is + procedure test1 is + begin + dbms_output.put_line('test_package_2.test1 executed'); + end; + procedure test2 is + begin + dbms_output.put_line('test_package_2.test2 executed'); + end; + end test_package_2; + ]'; + + execute immediate q'[create or replace package test_package_3 is + --%suite + --%suitepath(tests2) + + --%test + procedure test1; + + --%test + procedure test2; + + end test_package_3; + ]'; + execute immediate q'[create or replace package body test_package_3 is + procedure test1 is + begin + dbms_output.put_line('test_package_3.test1 executed'); + end; + procedure test2 is + begin + dbms_output.put_line('test_package_3.test2 executed'); + end; + end test_package_3; + ]'; + execute immediate q'[grant execute on test_package_1 to public]'; + execute immediate q'[grant execute on test_package_2 to public]'; + execute immediate q'[grant execute on test_package_3 to public]'; + end; + + procedure drop_ut3$user#_tests is + pragma autonomous_transaction; + begin + execute immediate q'[drop package test_package_1]'; + execute immediate q'[drop package test_package_2]'; + execute immediate q'[drop package test_package_3]'; + end; + + procedure create_test_suite is + pragma autonomous_transaction; + begin + ut3_tester_helper.run_helper.create_db_link; + execute immediate q'[ + create or replace package stateful_package as + function get_state return varchar2; + end; + ]'; + execute immediate q'[ + create or replace package body stateful_package as + g_state varchar2(1) := 'A'; + function get_state return varchar2 is begin return g_state; end; + end; + ]'; + execute immediate q'[ + create or replace package test_stateful as + --%suite + --%suitepath(test_state) + + --%test + --%beforetest(acquire_state_via_db_link,rebuild_stateful_package) + procedure failing_stateful_test; + + procedure rebuild_stateful_package; + procedure acquire_state_via_db_link; + + end; + ]'; + execute immediate q'{ + create or replace package body test_stateful as + + procedure failing_stateful_test is + begin + ut3.ut.expect(stateful_package.get_state@db_loopback).to_equal('abc'); + end; + + procedure rebuild_stateful_package is + pragma autonomous_transaction; + begin + execute immediate q'[ + create or replace package body stateful_package as + g_state varchar2(3) := 'abc'; + function get_state return varchar2 is begin return g_state; end; + end; + ]'; + end; + + procedure acquire_state_via_db_link is + begin + dbms_output.put_line('stateful_package.get_state@db_loopback='||stateful_package.get_state@db_loopback); + end; + end; + }'; + execute immediate 'grant execute on test_stateful to public'; + end; + + procedure drop_test_suite is + pragma autonomous_transaction; + begin + drop_db_link; + execute immediate 'drop package stateful_package'; + execute immediate 'drop package test_stateful'; + end; + + procedure run(a_reporter ut3.ut_reporter_base := null) is + begin + ut3.ut.run(a_reporter); + end; + + procedure run(a_path varchar2, a_reporter ut3.ut_reporter_base := null) is + begin + ut3.ut.run(a_path, a_reporter); + end; + + procedure run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null) is + begin + ut3.ut.run(a_paths, a_reporter); + end; + + procedure run(a_paths ut3.ut_varchar2_list, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) is + begin + ut3.ut.run( + a_paths, + a_reporter, + a_source_files => ut3.ut_varchar2_list(), + a_test_files => a_test_files + ); + end; + + function run(a_reporter ut3.ut_reporter_base := null) return ut3.ut_varchar2_list is + l_results ut3.ut_varchar2_list; + begin + select * bulk collect into l_results from table (ut3.ut.run(a_reporter)); + return l_results; + end; + + function run(a_paths ut3.ut_varchar2_list, a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) return ut3.ut_varchar2_list is + l_results ut3.ut_varchar2_list; + begin + select * bulk collect into l_results from table ( + ut3.ut.run( + a_paths, + a_reporter, a_source_files => ut3.ut_varchar2_list(), + a_test_files => a_test_files + )); + return l_results; + end; + + function run(a_path varchar2, a_reporter ut3.ut_reporter_base := null) + return ut3.ut_varchar2_list is + l_results ut3.ut_varchar2_list; + begin + select * bulk collect into l_results from table (ut3.ut.run(a_path, a_reporter)); + return l_results; + end; + + function run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null) + return ut3.ut_varchar2_list is + l_results ut3.ut_varchar2_list; + begin + select * bulk collect into l_results from table (ut3.ut.run(a_paths, a_reporter)); + return l_results; + end; + + function run(a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) + return ut3.ut_varchar2_list is + l_results ut3.ut_varchar2_list; + begin + select * bulk collect into l_results from table ( + ut3.ut.run( + a_reporter, a_source_files => ut3.ut_varchar2_list(), + a_test_files => a_test_files + )); + return l_results; + end; end; / diff --git a/test/ut3_tester_helper/run_helper.pks b/test/ut3_tester_helper/run_helper.pks index fefd3b546..5611663c2 100644 --- a/test/ut3_tester_helper/run_helper.pks +++ b/test/ut3_tester_helper/run_helper.pks @@ -3,7 +3,33 @@ create or replace package run_helper is procedure setup_cache_objects; procedure setup_cache; procedure cleanup_cache; + procedure create_db_link; + procedure drop_db_link; procedure db_link_setup; procedure db_link_cleanup; + + procedure create_suite_with_link; + procedure drop_suite_with_link; + + procedure create_ut3$user#_tests; + procedure drop_ut3$user#_tests; + + procedure create_test_suite; + procedure drop_test_suite; + + procedure run(a_reporter ut3.ut_reporter_base := null); + procedure run(a_path varchar2, a_reporter ut3.ut_reporter_base := null); + procedure run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null); + procedure run(a_paths ut3.ut_varchar2_list, a_test_files ut3.ut_varchar2_list, + a_reporter ut3.ut_reporter_base); + function run(a_reporter ut3.ut_reporter_base := null) return ut3.ut_varchar2_list; + function run(a_paths ut3.ut_varchar2_list, a_test_files ut3.ut_varchar2_list, + a_reporter ut3.ut_reporter_base) return ut3.ut_varchar2_list; + function run(a_path varchar2, a_reporter ut3.ut_reporter_base := null) + return ut3.ut_varchar2_list; + function run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null) + return ut3.ut_varchar2_list; + function run(a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) + return ut3.ut_varchar2_list; end; / From 0c05daf8f947cb0ab414ddb62a71e5438cb8b5c8 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Tue, 26 Mar 2019 23:55:09 +0000 Subject: [PATCH 16/31] Adding set of tests: api/test_ut_run --- test/ut3_user/api/test_ut_run.pkb | 735 ++++++++++++++++++++++++++++++ test/ut3_user/api/test_ut_run.pks | 152 ++++++ 2 files changed, 887 insertions(+) create mode 100644 test/ut3_user/api/test_ut_run.pkb create mode 100644 test/ut3_user/api/test_ut_run.pks diff --git a/test/ut3_user/api/test_ut_run.pkb b/test/ut3_user/api/test_ut_run.pkb new file mode 100644 index 000000000..7b308884f --- /dev/null +++ b/test/ut3_user/api/test_ut_run.pkb @@ -0,0 +1,735 @@ +create or replace package body test_ut_run is + + procedure clear_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations(); + end; + + procedure create_ut3$user#_tests is + begin + ut3_tester_helper.run_helper.create_ut3$user#_tests(); + end; + + procedure drop_ut3$user#_tests is + begin + ut3_tester_helper.run_helper.drop_ut3$user#_tests(); + end; + + procedure ut_version is + begin + ut.expect(ut3.ut.version()).to_match('^v\d+\.\d+\.\d+\.\d+(-\w+)?$'); + end; + + procedure ut_fail is + begin + --Act + ut3.ut.fail('Testing failure message'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations(1)) + .to_be_like('%Testing failure message%'); + end; + + procedure run_proc_no_params is + l_results clob; + begin + ut3_tester_helper.run_helper.run(); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_proc_specific_reporter is + l_results clob; + begin + --Act + ut3.ut.run('ut3_tester_helper',a_reporter => ut3.ut_documentation_reporter() ); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_proc_cov_file_list is + l_results clob; + begin + --Act + ut3.ut.run( + 'ut3_tester_helper', + a_reporter => ut3.ut_sonar_test_reporter(), + a_source_files => ut3.ut_varchar2_list(), + a_test_files => ut3.ut_varchar2_list('tests/ut3_tester_helper.test_package_1.pkb', + 'tests/ut3_tester_helper.test_package_2.pkb', + 'tests/ut3_tester_helper.test_package_3.pkb') + ); + + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%tests/ut3_tester_helper.test_package_2.pkb'|| + '%tests/ut3_tester_helper.test_package_1.pkb'|| + '%tests/ut3_tester_helper.test_package_3.pkb%' ); + end; + + procedure run_proc_pkg_name is + l_results clob; + begin + ut3.ut.run('ut3_tester_helper.test_package_1'); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%test_package_1%' ); + ut.expect( l_results ).not_to_be_like( '%test_package_2%' ); + ut.expect( l_results ).not_to_be_like( '%test_package_3%' ); + end; + + procedure run_proc_pkg_name_file_list is + l_results clob; + begin + ut3.ut.run( + 'ut3_tester_helper.test_package_3', + ut3.ut_sonar_test_reporter(), a_source_files => ut3.ut_varchar2_list(), + a_test_files => ut3.ut_varchar2_list('tests/ut3_tester_helper.test_package_1.pkb', + 'tests/ut3_tester_helper.test_package_2.pkb', + 'tests/ut3_tester_helper.test_package_3.pkb') + ); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%tests/ut3_tester_helper.test_package_3.pkb%' ); + ut.expect( l_results ).not_to_be_like( '%tests/ut3_tester_helper.test_package_1.pkb%' ); + ut.expect( l_results ).not_to_be_like( '%tests/ut3_tester_helper.test_package_2.pkb%' ); + end; + + procedure run_proc_path_list is + l_results clob; + begin + ut3.ut.run(ut3.ut_varchar2_list(':tests.test_package_1',':tests')); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%test_package_1%' ); + ut.expect( l_results ).to_be_like( '%test_package_2%' ); + ut.expect( l_results ).not_to_be_like( '%test_package_3%' ); + end; + + procedure run_proc_path_list_file_list is + l_results clob; + begin + ut3_tester_helper.run_helper.run( + a_paths => ut3.ut_varchar2_list(':tests.test_package_1',':tests'), + a_reporter => ut3.ut_sonar_test_reporter(), + a_test_files => ut3.ut_varchar2_list('tests/ut3_tester_helper.test_package_1.pkb', + 'tests/ut3_tester_helper.test_package_2.pkb', + 'tests/ut3_tester_helper.test_package_3.pkb') + ); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%tests/ut3_tester_helper.test_package_1.pkb%' ); + ut.expect( l_results ).to_be_like( '%tests/ut3_tester_helper.test_package_2.pkb%' ); + ut.expect( l_results ).not_to_be_like( '%tests/ut3_tester_helper.test_package_3.pkb%' ); + end; + + procedure run_proc_null_reporter is + l_results clob; + begin + --Act + ut3.ut.run('ut3_tester_helper', cast(null as ut3.ut_reporter_base)); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%tests%test_package_1%test_package_2%tests2%test_package_3%' ); + end; + + procedure run_proc_null_path is + l_results clob; + begin + --Act + ut3_tester_helper.run_helper.run(cast(null as varchar2)); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_proc_null_path_list is + l_results clob; + l_paths ut3.ut_varchar2_list; + begin + --Act + ut3_tester_helper.run_helper.run(l_paths); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_proc_empty_path_list is + l_results clob; + begin + --Act + ut3_tester_helper.run_helper.run(ut3.ut_varchar2_list()); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + --Assert + ut.expect( l_results ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure create_suite_with_commit is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package test_commit_warning is + --%suite + --%suitepath(ut.run.transaction) + + --%test + procedure does_commit; + end;'; + execute immediate 'create or replace package body test_commit_warning is + procedure does_commit is + begin + ut3.ut.expect(1).to_equal(1); + commit; + end; + end;'; + end; + + procedure drop_suite_with_commit is + pragma autonomous_transaction; + begin + execute immediate 'drop package test_commit_warning'; + end; + + procedure run_proc_warn_on_commit is + l_results clob; + begin + ut3.ut.run('test_commit_warning'); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + ut.expect(l_results).to_be_like( + '%Unable to perform automatic rollback after test%'|| + 'An implicit or explicit commit/rollback occurred in procedures:%' || + 'does_commit%' || + 'Use the "--%rollback(manual)" annotation or remove commit/rollback/ddl statements that are causing the issue.%' + ); + end; + + procedure create_failing_beforeall_suite is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package parent_suite is + --%suite + --%suitepath(ut.run.failing_setup) + + --%beforeall + procedure failing_setup; + end;'; + execute immediate 'create or replace package body parent_suite is + procedure failing_setup is + begin + raise no_data_found; + end; + end;'; + execute immediate 'create or replace package child_suite is + --%suite + --%suitepath(ut.run.failing_setup.parent_suite.some_sub_suite) + + --%test + procedure does_stuff; + end;'; + execute immediate 'create or replace package body child_suite is + procedure does_stuff is + begin + ut3.ut.expect(1).to_equal(1); + end; + end;'; + end; + + procedure drop_failing_beforeall_suite is + pragma autonomous_transaction; + begin + execute immediate 'drop package parent_suite'; + execute immediate 'drop package child_suite'; + end; + + procedure run_proc_fail_child_suites is + l_results clob; + begin + ut3.ut.run('child_suite'); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + ut.expect(l_results).to_be_like( + '%1) does_stuff%' || + 'ORA-01403: no data found%' || + 'ORA-06512: at "UT3$USER#.PARENT_SUITE%' + ); + end; + + procedure transaction_setup is + pragma autonomous_transaction; + begin + execute immediate 'create table transaction_test_table(message varchar2(100))'; + execute immediate 'create or replace package test_transaction is + --%suite + + --%test + procedure insert_row; + + --%test + procedure insert_and_raise; + end; + '; + execute immediate 'create or replace package body test_transaction is + procedure insert_row is + begin + insert into transaction_test_table values (''2 - inside the test_transaction.insert_row test''); + end; + procedure insert_and_raise is + begin + insert into transaction_test_table values (''2 - inside the test_transaction.insert_row test''); + raise no_data_found; + end; + end; + '; + + end; + + procedure transaction_cleanup is + pragma autonomous_transaction; + begin + begin + execute immediate 'drop table transaction_test_table'; + exception + when others then null; + end; + begin + execute immediate 'drop package test_transaction'; + exception + when others then null; + end; + end; + + procedure run_proc_keep_test_data is + l_expected sys_refcursor; + l_actual sys_refcursor; + l_results clob; + begin + --Arrange + execute immediate ' + insert into transaction_test_table values (''1 - inside the test_ut_run.run_proc_keep_test_changes test'')'; + + --Act + ut3.ut.run('test_transaction.insert_row', a_force_manual_rollback => true); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + + --Assert + open l_expected for + select '1 - inside the test_ut_run.run_proc_keep_test_changes test' as message from dual + union all + select '2 - inside the test_transaction.insert_row test' from dual + order by 1; + + open l_actual for 'select * from transaction_test_table order by 1'; + + ut.expect( l_actual ).to_equal(l_expected); + end; + + procedure run_proc_keep_test_data_raise is + l_expected sys_refcursor; + l_actual sys_refcursor; + l_results clob; + begin + --Arrange + execute immediate ' + insert into transaction_test_table values (''1 - inside the test_ut_run.run_proc_keep_test_changes test'')'; + + --Act + ut3.ut.run('test_transaction.insert_and_raise', a_force_manual_rollback => true); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + + --Assert + open l_expected for + select '1 - inside the test_ut_run.run_proc_keep_test_changes test' as message from dual + union all + select '2 - inside the test_transaction.insert_row test' from dual + order by 1; + + open l_actual for 'select * from transaction_test_table order by 1'; + + ut.expect( l_actual ).to_equal(l_expected); + end; + + procedure run_proc_discard_test_data is + l_expected sys_refcursor; + l_actual sys_refcursor; + l_results clob; + begin + --Arrange + execute immediate ' + insert into transaction_test_table values (''1 - inside the test_ut_run.run_proc_keep_test_changes test'')'; + + --Act + ut3.ut.run('test_transaction.insert_row'); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + + --Assert + open l_expected for + select '1 - inside the test_ut_run.run_proc_keep_test_changes test' as message from dual; + + open l_actual for 'select * from transaction_test_table order by 1'; + + ut.expect( l_actual ).to_equal(l_expected); + end; + + procedure run_func_no_params is + l_results ut3.ut_varchar2_list; + begin + l_results := ut3_tester_helper.run_helper.run(); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_func_specific_reporter is + l_results ut3.ut_varchar2_list; + begin + --Act + l_results := ut3_tester_helper.run_helper.run(ut3.ut_documentation_reporter()); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_func_cov_file_list is + l_results ut3.ut_varchar2_list; + begin + --Act + select * bulk collect into l_results from table ( + ut3.ut.run('ut3_tester_helper', + ut3.ut_sonar_test_reporter(), + a_source_files => ut3.ut_varchar2_list(), + a_test_files => ut3.ut_varchar2_list('tests/ut3_tester_helper.test_package_1.pkb', + 'tests/ut3_tester_helper.test_package_2.pkb', + 'tests/ut3_tester_helper.test_package_3.pkb') + )); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%tests/ut3_tester_helper.test_package_2.pkb%tests/ut3_tester_helper.test_package_1.pkb%tests/ut3_tester_helper.test_package_3.pkb%' ); + end; + + procedure run_func_pkg_name is + l_results ut3.ut_varchar2_list; + begin + select * bulk collect into l_results from table (ut3.ut.run('test_package_1')); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%' ); + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).not_to_be_like( '%test_package_2%' ); + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).not_to_be_like( '%test_package_3%' ); + end; + + procedure run_func_pkg_name_file_list is + l_results ut3.ut_varchar2_list; + begin + select * bulk collect into l_results from table ( + ut3.ut.run('ut3_tester_helper.test_package_3', + ut3.ut_sonar_test_reporter(), + a_source_files => ut3.ut_varchar2_list(), + a_test_files => ut3.ut_varchar2_list('tests/ut3_tester_helper.test_package_1.pkb', + 'tests/ut3_tester_helper.test_package_2.pkb', + 'tests/ut3_tester_helper.test_package_3.pkb') + )); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%tests/ut3_tester_helper.test_package_3.pkb%' ); + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).not_to_be_like( '%tests/ut3_tester_helper.test_package_1.pkb%' ); + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).not_to_be_like( '%tests/ut3_tester_helper.test_package_2.pkb%' ); + end; + + procedure run_func_path_list is + l_results ut3.ut_varchar2_list; + begin + select * bulk collect into l_results from table (ut3.ut.run(ut3.ut_varchar2_list(':tests.test_package_1',':tests'))); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%' ); + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_2%' ); + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).not_to_be_like( '%test_package_3%' ); + end; + + procedure run_func_path_list_file_list is + l_results ut3.ut_varchar2_list; + begin + l_results := ut3_tester_helper.run_helper.run( + a_paths => ut3.ut_varchar2_list(':tests.test_package_1',':tests'), + a_reporter => ut3.ut_sonar_test_reporter(), + a_test_files => ut3.ut_varchar2_list('tests/ut3_tester_helper.test_package_1.pkb', + 'tests/ut3_tester_helper.test_package_2.pkb', + 'tests/ut3_tester_helper.test_package_3.pkb') + ); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%tests/ut3_tester_helper.test_package_1.pkb%' ); + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%tests/ut3_tester_helper.test_package_2.pkb%' ); + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).not_to_be_like( '%tests/ut3_tester_helper.test_package_3.pkb%' ); + end; + + procedure run_func_null_reporter is + l_results ut3.ut_varchar2_list; + begin + --Act + select * bulk collect into l_results from table (ut3.ut.run('ut3_tester_helper',cast(null as ut3.ut_reporter_base))); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%tests%test_package_1%test_package_2%tests2%test_package_3%' ); + end; + + procedure run_func_null_path is + l_results ut3.ut_varchar2_list; + begin + --Act + l_results := ut3_tester_helper.run_helper.run(cast(null as varchar2)); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_func_null_path_list is + l_results ut3.ut_varchar2_list; + l_paths ut3.ut_varchar2_list; + begin + --Act + l_results := ut3_tester_helper.run_helper.run(l_paths); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_func_empty_path_list is + l_results ut3.ut_varchar2_list; + begin + --Act + l_results := ut3_tester_helper.run_helper.run(ut3.ut_varchar2_list()); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_func_cov_file_lst_null_rep is + l_results ut3.ut_varchar2_list; + begin + --Act + l_results := ut3_tester_helper.run_helper.run( + a_test_files => ut3.ut_varchar2_list('tests/ut3_tester_helper.test_package_1.pkb', + 'tests/ut3_tester_helper.test_package_2.pkb', + 'tests/ut3_tester_helper.test_package_3.pkb'), + a_reporter => cast(null as ut3.ut_reporter_base)); + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%test_package_2%test_package_3%' ); + end; + + procedure run_func_empty_suite is + l_results ut3.ut_varchar2_list; + l_expected varchar2(32767); + pragma autonomous_transaction; + begin + --Arrange + execute immediate q'[create or replace package empty_suite as + -- %suite + + procedure not_a_test; + end;]'; + execute immediate q'[create or replace package body empty_suite as + procedure not_a_test is begin null; end; + end;]'; + l_expected := '%empty_suite%0 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'; + --Act + select * bulk collect into l_results from table(ut3.ut.run('empty_suite')); + + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( l_expected ); + + --Cleanup + execute immediate q'[drop package empty_suite]'; + end; + + procedure raise_in_invalid_state is + l_results ut3.ut_varchar2_list; + l_expected varchar2(32767); + begin + --Arrange + l_expected := 'test_state + test_stateful + failing_stateful_test [% sec] (FAILED - 1)% +Failures:% + 1) failing_stateful_test + ORA-04068: existing state of packages (DB_LOOPBACK%) has been discarded + ORA-04061: existing state of package body "%.STATEFUL_PACKAGE" has been invalidated + ORA-04065: not executed, altered or dropped package body "%.STATEFUL_PACKAGE"% + ORA-06512: at line 6% +1 tests, 0 failed, 1 errored, 0 disabled, 0 warning(s)%'; + + --Act + select * bulk collect into l_results from table(ut3.ut.run('ut3_tester_helper.test_stateful')); + + --Assert + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( l_expected ); + ut.fail('Expected exception but nothing was raised'); + exception + when others then + ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( l_expected ); + ut.expect(sqlcode).to_equal(-4068); + end; + + procedure create_test_suite is + begin + ut3_tester_helper.run_helper.create_test_suite; + end; + + procedure drop_test_suite is + begin + ut3_tester_helper.run_helper.drop_test_suite; + end; + + procedure run_in_invalid_state is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_expected varchar2(32767); + begin + select * bulk collect into l_results from table(ut3.ut.run('failing_invalid_spec')); + + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like('%Call params for % are not valid: package does not exist or is invalid: %FAILING_INVALID_SPEC%'); + + end; + + procedure compile_invalid_package is + ex_compilation_error exception; + pragma exception_init(ex_compilation_error,-24344); + pragma autonomous_transaction; + begin + begin + execute immediate q'[ + create or replace package failing_invalid_spec as + --%suite + gv_glob_val non_existing_table.id%type := 0; + + --%test + procedure test1; + end;]'; + exception when ex_compilation_error then null; + end; + begin + execute immediate q'[ + create or replace package body failing_invalid_spec as + procedure test1 is begin ut.expect(1).to_equal(1); end; + end;]'; + exception when ex_compilation_error then null; + end; + end; + procedure drop_invalid_package is + pragma autonomous_transaction; + begin + execute immediate 'drop package failing_invalid_spec'; + end; + + procedure run_and_revalidate_specs is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_is_invalid number; + begin + execute immediate q'[select count(1) from all_objects o where o.owner = :object_owner and o.object_type = 'PACKAGE' + and o.status = 'INVALID' and o.object_name= :object_name]' into l_is_invalid + using 'UT3$USER#','INVALID_PCKAG_THAT_REVALIDATES'; + + select * bulk collect into l_results from table(ut3.ut.run('invalid_pckag_that_revalidates')); + + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(1).to_equal(l_is_invalid); + ut.expect(l_actual).to_be_like('%invalid_pckag_that_revalidates%invalidspecs [% sec]% +%Finished in % seconds% +%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); + + end; + + procedure generate_invalid_spec is + ex_compilation_error exception; + pragma exception_init(ex_compilation_error,-24344); + pragma autonomous_transaction; + begin + + execute immediate q'[ + create or replace package parent_specs as + c_test constant varchar2(1) := 'Y'; + end;]'; + + execute immediate q'[ + create or replace package invalid_pckag_that_revalidates as + --%suite + g_var varchar2(1) := parent_specs.c_test; + + --%test(invalidspecs) + procedure test1; + end;]'; + + execute immediate q'[ + create or replace package body invalid_pckag_that_revalidates as + procedure test1 is begin ut.expect('Y').to_equal(g_var); end; + end;]'; + + -- That should invalidate test package and we can then revers + execute immediate q'[ + create or replace package parent_specs as + c_test_error constant varchar2(1) := 'Y'; + end;]'; + + execute immediate q'[ + create or replace package parent_specs as + c_test constant varchar2(1) := 'Y'; + end;]'; + + end; + procedure drop_invalid_spec is + pragma autonomous_transaction; + begin + execute immediate 'drop package invalid_pckag_that_revalidates'; + execute immediate 'drop package parent_specs'; + end; + + procedure run_and_report_warnings is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + + select * bulk collect into l_results from table(ut3.ut.run('bad_annotations')); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + + ut.expect(l_actual).to_be_like('%Invalid annotation "--%context". Cannot find following "--%endcontext". Annotation ignored.% +%1 tests, 0 failed, 0 errored, 0 disabled, 1 warning(s)%'); + + end; + + procedure create_bad_annot is + pragma autonomous_transaction; + begin + execute immediate q'[ + create or replace package bad_annotations as + --%suite + + --%context + + --%test(invalidspecs) + procedure test1; + + end;]'; + + execute immediate q'[ + create or replace package body bad_annotations as + procedure test1 is begin ut.expect(1).to_equal(1); end; + end;]'; + + end; + + procedure drop_bad_annot is + pragma autonomous_transaction; + begin + execute immediate 'drop package bad_annotations'; + end; + + procedure create_suite_with_link is + begin + ut3_tester_helper.run_helper.create_suite_with_link; + end; + + procedure drop_suite_with_link is + begin + ut3_tester_helper.run_helper.drop_suite_with_link; + end; + + procedure savepoints_on_db_links is + l_results clob; + begin + ut3.ut.run('ut3_tester_helper.test_distributed_savepoint'); + l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); + ut.expect(l_results).to_be_like('%1 tests, 0 failed, 0 errored, 0 disabled, 0 warning(s)%'); + end; + +end; +/ diff --git a/test/ut3_user/api/test_ut_run.pks b/test/ut3_user/api/test_ut_run.pks new file mode 100644 index 000000000..48fbf351b --- /dev/null +++ b/test/ut3_user/api/test_ut_run.pks @@ -0,0 +1,152 @@ +create or replace package test_ut_run is + --%suite(ut.run) + --%suitepath(utplsql.test_user.api) + + procedure clear_expectations; + + procedure create_ut3$user#_tests; + procedure drop_ut3$user#_tests; + + --%test(ut.version() returns version of the framework) + procedure ut_version; + + --%test(ut.fail() marks test as failed) + --%aftertest(clear_expectations) + procedure ut_fail; + + --%context(ut_run_procedure) + --%displayname(ut.run() procedure options) + --%beforeall(create_ut3$user#_tests) + --%afterall(drop_ut3$user#_tests) + + --%test(Runs all tests in current schema with default reporter when no parameters given) + procedure run_proc_no_params; + --%test(Runs all tests in current schema with specified reporter) + procedure run_proc_specific_reporter; + --%test(Runs all tests in current schema with coverage file list) + procedure run_proc_cov_file_list; + + --%test(Runs given package only with package name given as path) + procedure run_proc_pkg_name; + --%test(Runs all from given package with package name given as path and coverage file list) + procedure run_proc_pkg_name_file_list; + --%test(Runs tests from given paths only with paths list) + procedure run_proc_path_list; + --%test(Runs tests from given paths only with paths list and coverage file list) + procedure run_proc_path_list_file_list; + --%test(Runs all tests in current schema using default reporter when null reporter given) + procedure run_proc_null_reporter; + --%test(Runs all tests in current schema with null path provided) + procedure run_proc_null_path; + --%test(Runs all tests in current schema with null path list given) + procedure run_proc_null_path_list; + --%test(Runs all tests in current schema with empty path list given) + procedure run_proc_empty_path_list; + + procedure create_suite_with_commit; + procedure drop_suite_with_commit; + --%test(Reports a warning if transaction was invalidated by test with automatic rollback) + --%beforetest(create_suite_with_commit) + --%aftertest(drop_suite_with_commit) + procedure run_proc_warn_on_commit; + + + procedure create_failing_beforeall_suite; + procedure drop_failing_beforeall_suite; + --%test(Marks child suite as failed when parent's suite beforeall fails) + --%beforetest(create_failing_beforeall_suite) + --%aftertest(drop_failing_beforeall_suite) + procedure run_proc_fail_child_suites; + + procedure create_suite_with_link; + procedure drop_suite_with_link; + + --%test(Savepoints are working properly on distributed transactions - Issue #839) + --%beforetest(create_suite_with_link) + --%aftertest(drop_suite_with_link) + procedure savepoints_on_db_links; + + --%endcontext + + --%context(run_proc_transaction_control) + + --%beforeall + procedure transaction_setup; + --%afterall + procedure transaction_cleanup; + --%test(Leaves transaction open and uncommitted with a_force_manual_rollback) + procedure run_proc_keep_test_data; + --%test(Leaves transaction open and uncommitted with a_force_manual_rollback with exceptions) + procedure run_proc_keep_test_data_raise; + --%test(Does not impact current transaction when ran without a_force_manual_rollback) + procedure run_proc_discard_test_data; + + --%endcontext + + + --%context(ut_run_function) + --%displayname(ut.run() function options) + --%beforeall(create_ut3$user#_tests) + --%afterall(drop_ut3$user#_tests) + + --%test(Runs all tests in current schema with default reporter when no parameters given) + procedure run_func_no_params; + --%test(Runs all tests in current schema with specified reporter) + procedure run_func_specific_reporter; + --%test(Runs all tests in current schema with coverage file list) + procedure run_func_cov_file_list; + + --%test(Runs given package only with package name given as path) + procedure run_func_pkg_name; + --%test(Runs all from given package with package name given as path and coverage file list) + procedure run_func_pkg_name_file_list; + --%test(Runs tests from given paths with paths list) + procedure run_func_path_list; + --%test(Runs tests from given paths with paths list and coverage file list) + procedure run_func_path_list_file_list; + --%test(Runs all tests in current schema using default reporter when null reporter given) + procedure run_func_null_reporter; + --%test(Runs all tests in current schema with null path provided) + procedure run_func_null_path; + --%test(Runs all tests in current schema with null path list given) + procedure run_func_null_path_list; + --%test(Runs all tests in current schema with empty path list given) + procedure run_func_empty_path_list; + --%test(Runs all tests in current schema with coverage file list and default reporter) + procedure run_func_cov_file_lst_null_rep; + --%test(Executes successfully an empty suite) + procedure run_func_empty_suite; + + --disabled(Makes session wait for lock on 18.1 due to library cache pin wait) + --%test(ut.run - raises after completing all tests if a test fails with ORA-04068 or ORA-04061) + --%beforetest(create_test_suite) + --%aftertest(drop_test_suite) + procedure raise_in_invalid_state; + procedure create_test_suite; + procedure drop_test_suite; + + --%test(ut.run - Does not execute suite when specified package is not valid) + --%beforetest(compile_invalid_package) + --%aftertest(drop_invalid_package) + procedure run_in_invalid_state; + procedure compile_invalid_package; + procedure drop_invalid_package; + + --%test(Invalidate package specs via rebuild but still execute package) + --%beforetest(generate_invalid_spec) + --%aftertest(drop_invalid_spec) + procedure run_and_revalidate_specs; + procedure generate_invalid_spec; + procedure drop_invalid_spec; + + --%test(Provides warnings on invalid annotations) + --%beforetest(create_bad_annot) + --%aftertest(drop_bad_annot) + procedure run_and_report_warnings; + procedure create_bad_annot; + procedure drop_bad_annot; + --%endcontext + +end; +/ + From 80783c3c7cb73e90fbff0ddffd36fbf494938f25 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Thu, 28 Mar 2019 12:24:13 +0000 Subject: [PATCH 17/31] Adding set of tests: api/test_ut_run --- test/ut3_user/api/test_ut_run.pkb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/ut3_user/api/test_ut_run.pkb b/test/ut3_user/api/test_ut_run.pkb index 7b308884f..28b538f20 100644 --- a/test/ut3_user/api/test_ut_run.pkb +++ b/test/ut3_user/api/test_ut_run.pkb @@ -99,7 +99,7 @@ create or replace package body test_ut_run is procedure run_proc_path_list is l_results clob; begin - ut3.ut.run(ut3.ut_varchar2_list(':tests.test_package_1',':tests')); + ut3_tester_helper.run_helper.run(ut3.ut_varchar2_list(':tests.test_package_1',':tests')); l_results := ut3_tester_helper.main_helper.get_dbms_output_as_clob(); --Assert ut.expect( l_results ).to_be_like( '%test_package_1%' ); @@ -405,7 +405,7 @@ create or replace package body test_ut_run is procedure run_func_pkg_name is l_results ut3.ut_varchar2_list; begin - select * bulk collect into l_results from table (ut3.ut.run('test_package_1')); + select * bulk collect into l_results from table (ut3.ut.run('ut3_tester_helper.test_package_1')); --Assert ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%' ); ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).not_to_be_like( '%test_package_2%' ); @@ -432,7 +432,7 @@ create or replace package body test_ut_run is procedure run_func_path_list is l_results ut3.ut_varchar2_list; begin - select * bulk collect into l_results from table (ut3.ut.run(ut3.ut_varchar2_list(':tests.test_package_1',':tests'))); + l_results := ut3_tester_helper.run_helper.run(ut3.ut_varchar2_list(':tests.test_package_1',':tests')); --Assert ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_1%' ); ut.expect( ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( '%test_package_2%' ); From c4b08afaf378ee7b8cfdbe3f1e9272b658b19c22 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Thu, 28 Mar 2019 12:28:16 +0000 Subject: [PATCH 18/31] Adding set of tests: core/annotations/test_annotation_parser core/annotations/test_annot_throws_exception core/annotations/test_annotation_manager --- test/install_ut3_tester_tests.sql | 8 + .../test_annot_throws_exception.pkb | 375 ++++++++++++++ .../test_annot_throws_exception.pks | 76 +++ .../annotations/test_annotation_manager.pkb | 296 +++++++++++ .../annotations/test_annotation_manager.pks | 55 +++ .../annotations/test_annotation_parser.pkb | 461 ++++++++++++++++++ .../annotations/test_annotation_parser.pks | 42 ++ test/ut3_tester_helper/main_helper.pkb | 30 ++ test/ut3_tester_helper/main_helper.pks | 8 + 9 files changed, 1351 insertions(+) create mode 100644 test/ut3_tester/core/annotations/test_annot_throws_exception.pkb create mode 100644 test/ut3_tester/core/annotations/test_annot_throws_exception.pks create mode 100644 test/ut3_tester/core/annotations/test_annotation_manager.pkb create mode 100644 test/ut3_tester/core/annotations/test_annotation_manager.pks create mode 100644 test/ut3_tester/core/annotations/test_annotation_parser.pkb create mode 100644 test/ut3_tester/core/annotations/test_annotation_parser.pks diff --git a/test/install_ut3_tester_tests.sql b/test/install_ut3_tester_tests.sql index 146a3a211..099064fe5 100644 --- a/test/install_ut3_tester_tests.sql +++ b/test/install_ut3_tester_tests.sql @@ -8,11 +8,19 @@ alter session set plsql_optimize_level=0; --Install tests @@ut3_tester/core.pks @@ut3_tester/core/annotations/test_before_after_annotations.pks +@@ut3_tester/core/annotations/test_annotation_parser.pks +@@ut3_tester/core/annotations/test_annot_throws_exception.pks +@@ut3_tester/core/annotations/test_annotation_manager.pks @@ut3_tester/core/expectations/test_expectation_processor.pks + @@ut3_tester/core.pkb @@ut3_tester/core/annotations/test_before_after_annotations.pkb +@@ut3_tester/core/annotations/test_annotation_parser.pkb @@ut3_tester/core/expectations/test_expectation_processor.pkb +@@ut3_tester/core/annotations/test_annotation_manager.pkb +@@ut3_tester/core/annotations/test_annot_throws_exception.pkb + set linesize 200 set define on diff --git a/test/ut3_tester/core/annotations/test_annot_throws_exception.pkb b/test/ut3_tester/core/annotations/test_annot_throws_exception.pkb new file mode 100644 index 000000000..1ad4f19a5 --- /dev/null +++ b/test/ut3_tester/core/annotations/test_annot_throws_exception.pkb @@ -0,0 +1,375 @@ +create or replace package body test_annot_throws_exception +is + g_tests_results clob; + + procedure recollect_tests_results is + pragma autonomous_transaction; + + l_package_spec varchar2(32737); + l_package_body varchar2(32737); + l_exception_spec varchar2(32737); + l_test_results ut3.ut_varchar2_list; + begin + l_exception_spec := q'[ + create or replace package exc_pkg is + c_e_single_exc constant number := -20200; + c_e_dummy constant varchar2(10) := 'dummy'; + c_e_varch_exc constant varchar2(10) := '-20201'; + c_e_list_1 number := -20202; + c_e_list_2 constant number := -20203; + c_e_diff_exc constant number := -20204; + c_e_mix_list constant number := -20205; + c_e_mix_missin constant number := -20206; + + e_some_exception exception; + pragma exception_init(e_some_exception, -20207); + + end;]'; + + l_package_spec := ' + create package annotated_package_with_throws is + --%suite(Dummy package to test annotation throws) + + --%test(Throws same annotated exception) + --%throws(-20145) + procedure raised_same_exception; + + --%test(Throws one of the listed exceptions) + --%throws(-20145,-20146, -20189 ,-20563) + procedure raised_one_listed_exception; + + --%test(Leading zero is ignored in exception list) + --%throws(-01476) + procedure leading_0_exception_no; + + --%test(Throws diff exception) + --%throws(-20144) + procedure raised_diff_exception; + + --%test(Throws empty) + --%throws() + procedure empty_throws; + + --%test(Ignores annotation and fails when exception was thrown) + --%throws(hello,784#,0-=234,,u1234) + procedure bad_paramters_with_except; + + --%test(Ignores annotation and succeeds when no exception thrown) + --%throws(hello,784#,0-=234,,u1234) + procedure bad_paramters_without_except; + + --%test(Detects a valid exception number within many invalid ones) + --%throws(7894562, operaqk, -=1, -1, pow74d, posdfk3) + procedure one_valid_exception_number; + + --%test(Gives failure when a exception is expected and nothing is thrown) + --%throws(-20459, -20136, -20145) + procedure nothing_thrown; + + --%test(Single exception defined as a constant number in package) + --%throws(exc_pkg.c_e_single_exc) + procedure single_exc_const_pkg; + + --%test(Gives success when one of annotated exception using constant is thrown) + --%throws(exc_pkg.c_e_list_1,exc_pkg.c_e_list_2) + procedure list_of_exc_constant; + + --%test(Gives failure when the raised exception is different that the annotated one using variable) + --%throws(exc_pkg.c_e_diff_exc) + procedure fail_not_match_exc; + + --%test(Success when one of exception from mixed list of number and constant is thrown) + --%throws(exc_pkg.c_e_mix_list,-20105) + procedure mixed_exc_list; + + --%test(Success when match exception even if other variable on list dont exists) + --%throws(exc_pkg.c_e_mix_missin,utter_rubbish) + procedure mixed_list_notexi; + + --%test(Success resolve and match named exception defined in pragma exception init) + --%throws(exc_pkg.e_some_exception) + procedure named_exc_pragma; + + --%test(Success resolve and match oracle named exception) + --%throws(NO_DATA_FOUND) + procedure named_exc_ora; + + --%test(Success resolve and match oracle named exception dup val index) + --%throws(DUP_VAL_ON_INDEX) + procedure named_exc_ora_dup_ind; + + --%test(Success map no data 100 to -1403) + --%throws(-1403) + procedure nodata_exc_ora; + + --%test(Success for exception defined as varchar) + --%throws(exc_pkg.c_e_varch_exc) + procedure defined_varchar_exc; + + --%test(Non existing constant exception) + --%throws(dummy.c_dummy); + procedure non_existing_const; + + --%test(Bad exception constant) + --%throws(exc_pkg.c_e_dummy); + procedure bad_exc_const; + + end; + '; + + l_package_body := ' + create package body annotated_package_with_throws is + procedure raised_same_exception is + begin + raise_application_error(-20145, ''Test error''); + end; + + procedure raised_one_listed_exception is + begin + raise_application_error(-20189, ''Test error''); + end; + + procedure leading_0_exception_no is + x integer; + begin + x := 1 / 0; + end; + + procedure raised_diff_exception is + begin + raise_application_error(-20143, ''Test error''); + end; + + procedure empty_throws is + begin + raise_application_error(-20143, ''Test error''); + end; + + procedure bad_paramters_with_except is + begin + raise_application_error(-20143, ''Test error''); + end; + + procedure bad_paramters_without_except is + begin + null; + end; + + procedure one_valid_exception_number is + begin + raise dup_val_on_index; + end; + + procedure nothing_thrown is + begin + null; + end; + + procedure single_exc_const_pkg is + begin + raise_application_error(exc_pkg.c_e_single_exc,''Test''); + end; + + procedure list_of_exc_constant is + begin + raise_application_error(exc_pkg.c_e_list_1,''Test''); + end; + + procedure fail_not_match_exc is + begin + raise NO_DATA_FOUND; + end; + + procedure mixed_exc_list is + begin + raise_application_error(exc_pkg.c_e_mix_list,''Test''); + end; + + procedure mixed_list_notexi is + begin + raise_application_error(exc_pkg.c_e_mix_missin,''Test''); + end; + + procedure named_exc_pragma is + begin + raise exc_pkg.e_some_exception; + end; + + procedure named_exc_ora is + begin + raise NO_DATA_FOUND; + end; + + procedure named_exc_ora_dup_ind is + begin + raise DUP_VAL_ON_INDEX; + end; + + procedure nodata_exc_ora is + begin + raise NO_DATA_FOUND; + end; + + procedure defined_varchar_exc is + begin + raise_application_error(exc_pkg.c_e_varch_exc,''Test''); + end; + + procedure non_existing_const is + begin + raise_application_error(-20143, ''Test error''); + end; + + procedure bad_exc_const is + begin + raise_application_error(-20143, ''Test error''); + end; + + end; + '; + + execute immediate l_exception_spec; + execute immediate l_package_spec; + execute immediate l_package_body; + + + select * bulk collect into l_test_results from table(ut3.ut.run(('annotated_package_with_throws'))); + + g_tests_results := ut3.ut_utils.table_to_clob(l_test_results); + end; + + procedure throws_same_annotated_except is + begin + ut.expect(g_tests_results).to_match('^\s*Throws same annotated exception \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('raised_same_exception'); + end; + + procedure throws_one_of_annotated_excpt is + begin + ut.expect(g_tests_results).to_match('^\s*Throws one of the listed exceptions \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('raised_one_listed_exception'); + end; + + procedure throws_with_leading_zero is + begin + ut.expect(g_tests_results).to_match('^\s*Leading zero is ignored in exception list \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('leading_0_exception_no'); + end; + + procedure throws_diff_annotated_except is + begin + ut.expect(g_tests_results).to_match('^\s*Throws diff exception \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); + ut.expect(g_tests_results).to_match('raised_diff_exception\s+Actual: -20143 was expected to equal: -20144\s+ORA-20143: Test error\s+ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); + end; + + procedure throws_empty is + begin + ut.expect(g_tests_results).to_match('^\s*Throws empty \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); + ut.expect(g_tests_results).to_match('empty_throws\s*ORA-20143: Test error\s*ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); + end; + + procedure bad_paramters_with_except is + begin + ut.expect(g_tests_results).to_match('^\s*Ignores annotation and fails when exception was thrown \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); + ut.expect(g_tests_results).to_match('bad_paramters_with_except\s*ORA-20143: Test error\s*ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); + end; + + procedure bad_paramters_without_except is + begin + ut.expect(g_tests_results).to_match('^\s*Ignores annotation and succeeds when no exception thrown \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('bad_paramters_without_except'); + end; + + procedure one_valid_exception_number is + begin + ut.expect(g_tests_results).to_match('^\s*Detects a valid exception number within many invalid ones \[[\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('one_valid_exception_number'); + end; + + procedure nothing_thrown is + begin + ut.expect(g_tests_results).to_match('^\s*Gives failure when a exception is expected and nothing is thrown \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); + ut.expect(g_tests_results).to_match('nothing_thrown\s*Expected one of exceptions \(-20459, -20136, -20145\) but nothing was raised.'); + end; + + procedure single_exc_const_pkg is + begin + ut.expect(g_tests_results).to_match('^\s*Single exception defined as a constant number in package \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('single_exc_const_pkg'); + end; + + procedure list_of_exc_constant is + begin + ut.expect(g_tests_results).to_match('^\s*Gives success when one of annotated exception using constant is thrown \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('list_of_exc_constant'); + end; + + procedure fail_not_match_exc is + begin + ut.expect(g_tests_results).to_match('^\s*Gives failure when the raised exception is different that the annotated one using variable \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); + ut.expect(g_tests_results).to_match('fail_not_match_exc\s+Actual: -1403 was expected to equal: -20204\s+ORA-01403: no data found\s+ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); + end; + + procedure mixed_exc_list is + begin + ut.expect(g_tests_results).to_match('^\s*Success when one of exception from mixed list of number and constant is thrown \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('mixed_exc_list'); + end; + + procedure mixed_list_notexi is + begin + ut.expect(g_tests_results).to_match('^\s*Success when match exception even if other variable on list dont exists \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('mixed_list_notexi'); + end; + + procedure named_exc_pragma is + begin + ut.expect(g_tests_results).to_match('^\s*Success resolve and match named exception defined in pragma exception init \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('mixed_list_notexi'); + end; + + procedure named_exc_ora is + begin + ut.expect(g_tests_results).to_match('^\s*Success resolve and match oracle named exception \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('named_exc_ora'); + end; + + procedure named_exc_ora_dup_ind is + begin + ut.expect(g_tests_results).to_match('^\s*Success resolve and match oracle named exception dup val index \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('named_exc_ora_dup_ind'); + end; + + procedure nodata_exc_ora is + begin + ut.expect(g_tests_results).to_match('^\s*Success map no data 100 to -1403 \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('nodata_exc_ora'); + end; + + procedure defined_varchar_exc is + begin + ut.expect(g_tests_results).to_match('^\s*Success for exception defined as varchar \[[,\.0-9]+ sec\]\s*$','m'); + ut.expect(g_tests_results).not_to_match('defined_varchar_exc'); + end; + + procedure non_existing_const is + begin + ut.expect(g_tests_results).to_match('^\s*Non existing constant exception \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); + ut.expect(g_tests_results).to_match('non_existing_const\s*ORA-20143: Test error\s*ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); + end; + + procedure bad_exc_const is + begin + ut.expect(g_tests_results).to_match('^\s*Bad exception constant \[[,\.0-9]+ sec\] \(FAILED - [0-9]+\)\s*$','m'); + ut.expect(g_tests_results).to_match('bad_exc_const\s*ORA-20143: Test error\s*ORA-06512: at "UT3_TESTER.ANNOTATED_PACKAGE_WITH_THROWS"'); + end; + + procedure drop_test_package is + pragma autonomous_transaction; + begin + execute immediate 'drop package annotated_package_with_throws'; + execute immediate 'drop package exc_pkg'; + end; + +end; +/ diff --git a/test/ut3_tester/core/annotations/test_annot_throws_exception.pks b/test/ut3_tester/core/annotations/test_annot_throws_exception.pks new file mode 100644 index 000000000..6c2df63b1 --- /dev/null +++ b/test/ut3_tester/core/annotations/test_annot_throws_exception.pks @@ -0,0 +1,76 @@ +create or replace package test_annot_throws_exception +is + --%suite(annotations - throws) + --%suitepath(utplsql.framework_tester.core.annotations) + + --%beforeall + procedure recollect_tests_results; + + --%test(Gives success when annotated number exception is thrown) + procedure throws_same_annotated_except; + + --%test(Gives success when one of the annotated number exceptions is thrown) + procedure throws_one_of_annotated_excpt; + + --%test(Gives success when annotated number exceptions has leading zero) + procedure throws_with_leading_zero; + + --%test(Gives failure when the raised exception is different that the annotated one) + procedure throws_diff_annotated_except; + + --%test(Ignores when the annotation throws is empty) + procedure throws_empty; + + --%test(Ignores when only bad parameters are passed, the test raise a exception and it shows errored test) + procedure bad_paramters_with_except; + + --%test(Ignores when only bad parameters are passed, the test does not raise a exception and it shows successful test) + procedure bad_paramters_without_except; + + --%test(Detects a valid exception number within many invalid ones) + procedure one_valid_exception_number; + + --%test(Gives failure when a exception is expected and nothing is thrown) + procedure nothing_thrown; + + --%test(Single exception defined as a constant number in package) + procedure single_exc_const_pkg; + + --%test(Gives success when one of annotated exception using constant is thrown) + procedure list_of_exc_constant; + + --%test(Gives failure when the raised exception is different that the annotated one using variable) + procedure fail_not_match_exc; + + --%test(Success when one of exception from mixed list of number and constant is thrown) + procedure mixed_exc_list; + + --%test(Success when match exception even if other variable on list dont exists) + procedure mixed_list_notexi; + + --%test(Success resolve and match named exception defined in pragma exception init) + procedure named_exc_pragma; + + --%test(Success resolve and match oracle named exception no data) + procedure named_exc_ora; + + --%test(Success resolve and match oracle named exception dup val index) + procedure named_exc_ora_dup_ind; + + --%test(Success map no data 100 to -1403) + procedure nodata_exc_ora; + + --%test(Success for exception defined as varchar) + procedure defined_varchar_exc; + + --%test(Non existing constant exception) + procedure non_existing_const; + + --%test(Bad exception constant) + procedure bad_exc_const; + + --%afterall + procedure drop_test_package; + +end; +/ diff --git a/test/ut3_tester/core/annotations/test_annotation_manager.pkb b/test/ut3_tester/core/annotations/test_annotation_manager.pkb new file mode 100644 index 000000000..46f0959e8 --- /dev/null +++ b/test/ut3_tester/core/annotations/test_annotation_manager.pkb @@ -0,0 +1,296 @@ +create or replace package body test_annotation_manager is + + procedure create_dummy_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package dummy_package as + procedure some_dummy_procedure; + end;]'; + end; + + procedure drop_dummy_package is + pragma autonomous_transaction; + begin + execute immediate q'[drop package dummy_package]'; + end; + + procedure recompile_dummy_package is + pragma autonomous_transaction; + begin + execute immediate q'[alter package dummy_package compile]'; + end; + + procedure create_dummy_test_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package dummy_test_package as + --%suite(dummy_test_suite) + --%rollback(manual) + + --%test(dummy_test) + --%beforetest(some_procedure) + procedure some_dummy_test_procedure; + end;]'; + execute immediate q'[grant execute on dummy_test_package to public]'; + end; + + procedure modify_dummy_test_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package dummy_test_package as + --%suite(dummy_test_suite) + + --%test(dummy_test) + procedure some_dummy_test_procedure; + end;]'; + end; + + procedure drop_dummy_test_package is + pragma autonomous_transaction; + begin + execute immediate q'[drop package dummy_test_package]'; + end; + + procedure recompile_dummy_test_package is + pragma autonomous_transaction; + begin + execute immediate q'[alter package dummy_test_package compile]'; + end; + + procedure create_parse_proc_as_ut3$user# is + begin + ut3_tester_helper.main_helper.create_parse_proc_as_ut3$user#(); + end; + + procedure parse_dummy_test_as_ut3$user# is + begin + ut3_tester_helper.main_helper.parse_dummy_test_as_ut3$user#(); + end; + + procedure drop_parse_proc_as_ut3$user# is + begin + ut3_tester_helper.main_helper.drop_parse_proc_as_ut3$user#(); + end; + + procedure cleanup_annotation_cache is + begin + ut3_tester_helper.main_helper.cleanup_annotation_cache(); + end; + + + procedure add_new_package is + l_actual_cache_id integer; + l_actual integer; + l_start_date date; + begin + --Act + l_start_date := sysdate; + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); + --Assert + select max(cache_id) + into l_actual_cache_id + from ut3.ut_annotation_cache_info + where object_owner = sys_context('USERENV', 'CURRENT_USER') and object_type = 'PACKAGE' and object_name = 'DUMMY_PACKAGE' + and parse_time >= l_start_date; + + ut.expect(l_actual_cache_id).to_be_not_null; + + select count(1) + into l_actual + from ut3.ut_annotation_cache + where cache_id = l_actual_cache_id; + + ut.expect(l_actual).to_equal(0); + + end; + + procedure update_modified_package is + l_actual_cache_id integer; + l_actual integer; + l_start_date date; + begin + --Arrange + l_start_date := sysdate; + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); + recompile_dummy_package(); + l_start_date := sysdate; + $if dbms_db_version.version >= 18 $then + dbms_session.sleep(1); + $else + dbms_lock.sleep(1); + $end + --Act + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); + --Assert + select max(cache_id) + into l_actual_cache_id + from ut3.ut_annotation_cache_info + where object_owner = sys_context('USERENV', 'CURRENT_USER') and object_type = 'PACKAGE' and object_name = 'DUMMY_PACKAGE' + and parse_time >= l_start_date; + + ut.expect(l_actual_cache_id).to_be_not_null; + + select count(1) + into l_actual + from ut3.ut_annotation_cache + where cache_id = l_actual_cache_id; + + ut.expect(l_actual).to_equal(0); + end; + + + procedure add_new_test_package is + l_actual_cache_id integer; + l_actual sys_refcursor; + l_expected sys_refcursor; + l_start_date date; + begin + --Arrange + l_start_date := sysdate; + --Act + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); + --Assert + select max(cache_id) + into l_actual_cache_id + from ut3.ut_annotation_cache_info + where object_owner = sys_context('USERENV', 'CURRENT_USER') and object_type = 'PACKAGE' and object_name = 'DUMMY_TEST_PACKAGE' + and parse_time >= l_start_date; + + ut.expect(l_actual_cache_id).to_be_not_null; + + open l_actual for + select annotation_position, annotation_name, annotation_text, subobject_name + from ut3.ut_annotation_cache where cache_id = l_actual_cache_id + order by annotation_position; + + open l_expected for + select 2 as annotation_position, 'suite' as annotation_name, + 'dummy_test_suite' as annotation_text, '' as subobject_name + from dual union all + select 3, 'rollback' , 'manual', '' as subobject_name + from dual union all + select 5, 'test' , 'dummy_test', 'some_dummy_test_procedure' as subobject_name + from dual union all + select 6, 'beforetest' , 'some_procedure', 'some_dummy_test_procedure' as subobject_name + from dual; + + ut.expect(l_actual).to_equal(l_expected); + end; + + + procedure update_modified_test_package is + l_actual_cache_id integer; + l_actual sys_refcursor; + l_expected sys_refcursor; + l_start_date date; + begin + --Arrange + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); + l_start_date := sysdate; + modify_dummy_test_package(); + --Act + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); + --Assert + select max(cache_id) + into l_actual_cache_id + from ut3.ut_annotation_cache_info + where object_owner = sys_context('USERENV', 'CURRENT_USER') and object_type = 'PACKAGE' and object_name = 'DUMMY_TEST_PACKAGE' + and parse_time >= l_start_date; + + ut.expect(l_actual_cache_id).to_be_not_null; + + open l_actual for + select annotation_position, annotation_name, annotation_text, subobject_name + from ut3.ut_annotation_cache where cache_id = l_actual_cache_id + order by annotation_position; + + open l_expected for + select 2 as annotation_position, 'suite' as annotation_name, + 'dummy_test_suite' as annotation_text, to_char(null) as subobject_name + from dual union all + select 4, 'test' , 'dummy_test', 'some_dummy_test_procedure' as subobject_name + from dual; + + ut.expect(l_actual).to_equal(l_expected); + end; + + + procedure keep_dropped_data_in_cache is + l_actual_cache_id integer; + l_actual sys_refcursor; + l_expected sys_refcursor; + l_start_date date; + begin + parse_dummy_test_as_ut3$user#(); + l_start_date := sysdate; + drop_dummy_test_package(); + --Act + parse_dummy_test_as_ut3$user#(); + --Assert + select max(cache_id) + into l_actual_cache_id + from ut3.ut_annotation_cache_info + where object_owner = sys_context('USERENV', 'CURRENT_USER') and object_type = 'PACKAGE' and object_name = 'DUMMY_TEST_PACKAGE' + and parse_time >= l_start_date; + + ut.expect(l_actual_cache_id).not_to_be_null(); + + open l_actual for + select annotation_position, annotation_name, annotation_text, subobject_name + from ut3.ut_annotation_cache where cache_id = l_actual_cache_id + order by annotation_position; + + open l_expected for + select 2 as annotation_position, 'suite' as annotation_name, + 'dummy_test_suite' as annotation_text, '' as subobject_name + from dual union all + select 3, 'rollback' , 'manual', '' as subobject_name + from dual union all + select 5, 'test' , 'dummy_test', 'some_dummy_test_procedure' as subobject_name + from dual union all + select 6, 'beforetest' , 'some_procedure', 'some_dummy_test_procedure' as subobject_name + from dual; + + ut.expect(l_actual).to_equal(l_expected); + end; + + procedure no_data_for_dropped_object is + l_actual sys_refcursor; + begin + --Arrange + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); + drop_dummy_test_package(); + --Act + open l_actual for + select * from table(ut3.ut_annotation_manager.get_annotated_objects(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE')) + where object_name = 'DUMMY_TEST_PACKAGE'; + --Assert + ut.expect(l_actual).to_be_empty(); + end; + + procedure cleanup_dropped_data_in_cache is + l_cache_count integer; + l_actual sys_refcursor; + l_expected sys_refcursor; + l_start_date date; + begin + --Arrange + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); + l_start_date := sysdate; + drop_dummy_test_package(); + --Act + ut3.ut_annotation_manager.rebuild_annotation_cache(sys_context('USERENV', 'CURRENT_USER'),'PACKAGE'); + --Assert + select count(1) + into l_cache_count + from ut3.ut_annotation_cache_info + where object_owner = sys_context('USERENV', 'CURRENT_USER') + and object_type = 'PACKAGE' + and object_name = 'DUMMY_TEST_PACKAGE'; + + ut.expect(l_cache_count).to_equal(0); + + end; + +end test_annotation_manager; +/ diff --git a/test/ut3_tester/core/annotations/test_annotation_manager.pks b/test/ut3_tester/core/annotations/test_annotation_manager.pks new file mode 100644 index 000000000..b40965c74 --- /dev/null +++ b/test/ut3_tester/core/annotations/test_annotation_manager.pks @@ -0,0 +1,55 @@ +create or replace package test_annotation_manager is + + --%suite(ut_annotation_manager) + --%suitepath(utplsql.framework_tester.core.annotations) + + --%aftereach + procedure cleanup_annotation_cache; + + procedure create_dummy_package; + + procedure drop_dummy_package; + + procedure create_dummy_test_package; + + procedure create_parse_proc_as_ut3$user#; + + procedure drop_parse_proc_as_ut3$user#; + + procedure drop_dummy_test_package; + + --%test(Adds new package to annotation cache info) + --%beforetest(create_dummy_package) + --%aftertest(drop_dummy_package) + procedure add_new_package; + + --%test(Updates annotation cache info for modified package) + --%beforetest(create_dummy_package) + --%aftertest(drop_dummy_package) + procedure update_modified_package; + + --%test(Adds annotations to cache for unit test package) + --%beforetest(create_dummy_test_package) + --%aftertest(drop_dummy_test_package) + procedure add_new_test_package; + + --%test(Updates annotations in cache for modified test package) + --%beforetest(create_dummy_test_package) + --%aftertest(drop_dummy_test_package) + procedure update_modified_test_package; + + --%test(Keeps annotations in cache when object was removed but user can't see whole schema) + --%beforetest(create_dummy_test_package,create_parse_proc_as_ut3$user#) + --%aftertest(drop_parse_proc_as_ut3$user#) + procedure keep_dropped_data_in_cache; + + --%test(Does not return data for dropped object) + --%beforetest(create_dummy_test_package) + procedure no_data_for_dropped_object; + + --%test(Remove object from cache when object dropped and user can see whole schema) + --%beforetest(create_dummy_test_package) + procedure cleanup_dropped_data_in_cache; + +end test_annotation_manager; +/ diff --git a/test/ut3_tester/core/annotations/test_annotation_parser.pkb b/test/ut3_tester/core/annotations/test_annotation_parser.pkb new file mode 100644 index 000000000..5345e3a50 --- /dev/null +++ b/test/ut3_tester/core/annotations/test_annotation_parser.pkb @@ -0,0 +1,461 @@ +create or replace package body test_annotation_parser is + + procedure test_proc_comments is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + + begin + l_source := 'PACKAGE test_tt AS + -- %suite + -- %displayname(Name of suite) + -- %suitepath(all.globaltests) + + -- %ann1(Name of suite) + -- wrong line + -- %ann2(some_value) + procedure foo; + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + + l_expected := ut3.ut_annotations( + ut3.ut_annotation(2,'suite',null, null), + ut3.ut_annotation(3,'displayname','Name of suite',null), + ut3.ut_annotation(4,'suitepath','all.globaltests',null), + ut3.ut_annotation(6,'ann1','Name of suite',null), + ut3.ut_annotation(8,'ann2','some_value','foo') + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + end; + + procedure include_floating_annotations is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + begin + l_source := 'PACKAGE test_tt AS + -- %suite + -- %displayname(Name of suite) + -- %suitepath(all.globaltests) + + -- %ann1(Name of suite) + -- %ann2(all.globaltests) + + --%test + procedure foo; + + -- %ann3(Name of suite) + -- %ann4(all.globaltests) + + --%test + procedure bar; + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 2, 'suite', null, null ), + ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), + ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ), + ut3.ut_annotation( 6, 'ann1', 'Name of suite', null ), + ut3.ut_annotation( 7, 'ann2', 'all.globaltests', null ), + ut3.ut_annotation( 9, 'test', null, 'foo'), + ut3.ut_annotation( 12, 'ann3', 'Name of suite', null ), + ut3.ut_annotation( 13, 'ann4', 'all.globaltests', null ), + ut3.ut_annotation( 15, 'test', null, 'bar') + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + end; + + procedure parse_complex_with_functions is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + + begin + l_source := 'PACKAGE test_tt AS + -- %suite + -- %displayname(Name of suite) + -- %suitepath(all.globaltests) + + --%test + procedure foo; + + + --%beforeeach + procedure foo2; + + --test comment + -- wrong comment + + + /* + describtion of the procedure + */ + --%beforeeach(key=testval) + PROCEDURE foo3(a_value number default null); + + --%all + function foo4(a_val number default null + , a_par varchar2 default := ''asdf''); + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 2, 'suite', null, null ), + ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), + ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ), + ut3.ut_annotation( 6, 'test', null, 'foo' ), + ut3.ut_annotation( 10, 'beforeeach', null,'foo2' ), + ut3.ut_annotation( 20, 'beforeeach', 'key=testval','foo3' ), + ut3.ut_annotation( 23, 'all', null,'foo4' ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + end; + + procedure no_procedure_annotation is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + + begin + l_source := 'PACKAGE test_tt AS + -- %suite + -- %displayname(Name of suite) + -- %suitepath(all.globaltests) + + procedure foo; + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 2, 'suite', null, null ), + ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), + ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + end; + + procedure parse_accessible_by is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + + begin + l_source := 'PACKAGE test_tt accessible by (foo) AS + -- %suite + -- %displayname(Name of suite) + -- %suitepath(all.globaltests) + + procedure foo; + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 2, 'suite', null, null ), + ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), + ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + end; + + procedure complex_package_declaration is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + + begin + l_source := 'PACKAGE test_tt + ACCESSIBLE BY (calling_proc) + authid current_user + AS + -- %suite + -- %displayname(Name of suite) + -- %suitepath(all.globaltests) + + procedure foo; + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 5, 'suite', null, null ), + ut3.ut_annotation( 6, 'displayname', 'Name of suite', null ), + ut3.ut_annotation( 7, 'suitepath', 'all.globaltests', null ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + end; + + procedure complex_text is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + + begin + l_source := 'PACKAGE test_tt AS + -- %suite + --%displayname(name = Name of suite) + -- %suitepath(key=all.globaltests,key2=foo,"--%some text") + + procedure foo; + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 2, 'suite', null, null ), + ut3.ut_annotation( 3, 'displayname', 'name = Name of suite', null ), + ut3.ut_annotation( 4, 'suitepath', 'key=all.globaltests,key2=foo,"--%some text"', null ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + end; + + procedure ignore_annotations_in_comments is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + + begin + l_source := 'PACKAGE test_tt AS + /* + Some comment + -- inlined + -- %ignored + */ + -- %suite + --%displayname(Name of suite) + -- %suitepath(all.globaltests) + + procedure foo; + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 7, 'suite', null, null ), + ut3.ut_annotation( 8, 'displayname', 'Name of suite', null ), + ut3.ut_annotation( 9, 'suitepath', 'all.globaltests', null ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + end; + + procedure ignore_wrapped_package is + l_source dbms_preprocessor.source_lines_t; + l_actual ut3.ut_annotations; + begin + --Arrange + l_source(1) := 'create or replace PACKAGE tst_wrapped_pck wrapped +a000000 +369 +abcd +abcd +abcd +abcd +abcd +abcd +abcd +abcd +abcd +abcd +abcd +abcd +abcd +abcd +abcd +9 +34 6d +bg9Jaf2KguofrwaqloE8yvbggKcwg5m49TOf9b9cFj7R9JaW8lYWWi70llr/K6V0iwlp5+eb +v58yvbLAXLi9gYHwoIvAgccti+Cmpg0DKLY= +-- %some_annotation_like_text +'; + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + --Assert + ut.expect(anydata.convertCollection(l_actual)).to_be_empty(); + end; + + procedure brackets_in_desc is + + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + begin + l_source := 'PACKAGE test_tt AS + -- %suite(Name of suite (including some brackets) and some more text) +END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 2, 'suite', 'Name of suite (including some brackets) and some more text', null ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + end; + + procedure test_space_before_annot_params is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + + begin + l_source := 'PACKAGE test_tt AS + /* + Some comment + -- inlined + */ + -- %suite + -- %suitepath (all.globaltests) + + procedure foo; +END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 6, 'suite', null, null ), + ut3.ut_annotation( 7, 'suitepath', 'all.globaltests', null ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + end; + + procedure test_windows_newline + as + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + begin + l_source := 'PACKAGE test_tt AS + -- %suite + -- %displayname(Name of suite)' || chr(13) || chr(10) + || ' -- %suitepath(all.globaltests) + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 2, 'suite', null, null ), + ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), + ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + end; + + procedure test_annot_very_long_name + as + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + begin + l_source := 'PACKAGE very_long_procedure_name_valid_for_oracle_12_so_utPLSQL_should_allow_it_definitely_well_still_not_reached_128_but_wait_we_did_it AS + -- %suite + -- %displayname(Name of suite) + -- %suitepath(all.globaltests) + + --%test + procedure very_long_procedure_name_valid_for_oracle_12_so_utPLSQL_should_allow_it_definitely_well_still_not_reached_128_but_wait_we_dit_it; + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 2, 'suite', null, null ), + ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), + ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ), + ut3.ut_annotation( 6, 'test', null, 'very_long_procedure_name_valid_for_oracle_12_so_utPLSQL_should_allow_it_definitely_well_still_not_reached_128_but_wait_we_dit_it' ) + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + end; + + procedure test_upper_annot is + l_source clob; + l_actual ut3.ut_annotations; + l_expected ut3.ut_annotations; + begin + l_source := 'PACKAGE test_tt AS + -- %SUITE + -- %DISPLAYNAME(Name of suite) + -- %SUITEPATH(all.globaltests) + + -- %ANN1(Name of suite) + -- %ANN2(all.globaltests) + + --%TEST + procedure foo; + + -- %ANN3(Name of suite) + -- %ANN4(all.globaltests) + + --%TEST + procedure bar; + END;'; + + --Act + l_actual := ut3.ut_annotation_parser.parse_object_annotations(l_source); + + --Assert + l_expected := ut3.ut_annotations( + ut3.ut_annotation( 2, 'suite', null, null ), + ut3.ut_annotation( 3, 'displayname', 'Name of suite', null ), + ut3.ut_annotation( 4, 'suitepath', 'all.globaltests', null ), + ut3.ut_annotation( 6, 'ann1', 'Name of suite', null ), + ut3.ut_annotation( 7, 'ann2', 'all.globaltests', null ), + ut3.ut_annotation( 9, 'test', null, 'foo'), + ut3.ut_annotation( 12, 'ann3', 'Name of suite', null ), + ut3.ut_annotation( 13, 'ann4', 'all.globaltests', null ), + ut3.ut_annotation( 15, 'test', null, 'bar') + ); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + + end; + +end test_annotation_parser; +/ diff --git a/test/ut3_tester/core/annotations/test_annotation_parser.pks b/test/ut3_tester/core/annotations/test_annotation_parser.pks new file mode 100644 index 000000000..bfd06c7b9 --- /dev/null +++ b/test/ut3_tester/core/annotations/test_annotation_parser.pks @@ -0,0 +1,42 @@ +create or replace package test_annotation_parser is + + --%suite(ut_annotation_parser) + --%suitepath(utplsql.framework_tester.core.annotations) + + --%test(Treats procedure level annotations as package level, if mixed with comments) + procedure test_proc_comments; + --%test(Includes floating annotations between procedures and package) + procedure include_floating_annotations; + --%test(Parses complex annotations on procedures and functions) + procedure parse_complex_with_functions; + --%test(Parses package annotations without any procedure annotations) + procedure no_procedure_annotation; + --%test(Parses package level annotations with Accessible by) + procedure parse_accessible_by; + --%test(Parses package level annotations with multiline declaration) + procedure complex_package_declaration; + --%test(Parses complex text in annotation) + procedure complex_text; + --%test(Ignores content of multi-line comments) + procedure ignore_annotations_in_comments; + + --%test(Ignores wrapped package and does not raise exception) + procedure ignore_wrapped_package; + + --%test(Parses package level annotations with annotation params containing brackets) + procedure brackets_in_desc; + + --%test(Parses annotation text even with spaces before brackets) + procedure test_space_before_annot_params; + + -- %test(Parses source-code with Windows-style newline) + procedure test_windows_newline; + + -- %test(Parses annotations with very long object names) + procedure test_annot_very_long_name; + + -- %test(Parses upper case annotations) + procedure test_upper_annot; + +end test_annotation_parser; +/ diff --git a/test/ut3_tester_helper/main_helper.pkb b/test/ut3_tester_helper/main_helper.pkb index 1085e5c47..148b526a6 100644 --- a/test/ut3_tester_helper/main_helper.pkb +++ b/test/ut3_tester_helper/main_helper.pkb @@ -95,6 +95,36 @@ create or replace package body main_helper is begin ut3.ut_expectation_processor.nulls_Are_equal(a_nulls_equal); end; + + procedure cleanup_annotation_cache is + pragma autonomous_transaction; + begin + delete from ut3.ut_annotation_cache_info + where object_owner = user and object_type = 'PACKAGE' and object_name in ('DUMMY_PACKAGE','DUMMY_TEST_PACKAGE'); + commit; + end; + + procedure create_parse_proc_as_ut3$user# is + pragma autonomous_transaction; + begin + execute immediate q'[ + create or replace procedure ut3$user#.parse_annotations is + begin + ut3.ut_annotation_manager.rebuild_annotation_cache('UT3_TESTER','PACKAGE'); + end;]'; + end; + + procedure drop_parse_proc_as_ut3$user# is + pragma autonomous_transaction; + begin + execute immediate 'drop procedure ut3$user#.parse_annotations'; + end; + + procedure parse_dummy_test_as_ut3$user# is + pragma autonomous_transaction; + begin + execute immediate 'begin ut3$user#.parse_annotations; end;'; + end; end; / diff --git a/test/ut3_tester_helper/main_helper.pks b/test/ut3_tester_helper/main_helper.pks index dab973dfc..2082105d5 100644 --- a/test/ut3_tester_helper/main_helper.pks +++ b/test/ut3_tester_helper/main_helper.pks @@ -26,6 +26,14 @@ create or replace package main_helper is procedure reset_nulls_equal; procedure nulls_are_equal(a_nulls_equal boolean := true); + + procedure cleanup_annotation_cache; + + procedure create_parse_proc_as_ut3$user#; + + procedure drop_parse_proc_as_ut3$user#; + + procedure parse_dummy_test_as_ut3$user#; end; / From 0618616259c28333fe7cbe0411af63c2b92580d5 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Thu, 28 Mar 2019 20:27:30 +0000 Subject: [PATCH 19/31] Adding set of tests: core/test_ut_test core/test_ut_utils --- test/install_ut3_tester_helper.sql | 2 + test/install_ut3_tester_tests.sql | 4 + test/ut3_tester/core/test_ut_test.pkb | 717 ++++++++++++++++++++ test/ut3_tester/core/test_ut_test.pks | 97 +++ test/ut3_tester/core/test_ut_utils.pkb | 436 ++++++++++++ test/ut3_tester/core/test_ut_utils.pks | 132 ++++ test/ut3_tester_helper/run_helper.pkb | 2 +- test/ut3_tester_helper/run_helper.pks | 2 +- test/ut3_tester_helper/ut_example_tests.pkb | 25 + test/ut3_tester_helper/ut_example_tests.pks | 8 + 10 files changed, 1423 insertions(+), 2 deletions(-) create mode 100644 test/ut3_tester/core/test_ut_test.pkb create mode 100644 test/ut3_tester/core/test_ut_test.pks create mode 100644 test/ut3_tester/core/test_ut_utils.pkb create mode 100644 test/ut3_tester/core/test_ut_utils.pks create mode 100644 test/ut3_tester_helper/ut_example_tests.pkb create mode 100644 test/ut3_tester_helper/ut_example_tests.pks diff --git a/test/install_ut3_tester_helper.sql b/test/install_ut3_tester_helper.sql index f221adad6..016756675 100644 --- a/test/install_ut3_tester_helper.sql +++ b/test/install_ut3_tester_helper.sql @@ -14,10 +14,12 @@ alter session set plsql_optimize_level=0; @@ut3_tester_helper/main_helper.pks @@ut3_tester_helper/run_helper.pks @@ut3_tester_helper/expectations_helper.pks +@@ut3_tester_helper/ut_example_tests.pks @@ut3_tester_helper/main_helper.pkb @@ut3_tester_helper/run_helper.pkb @@ut3_tester_helper/expectations_helper.pkb +@@ut3_tester_helper/ut_example_tests.pkb set linesize 200 set define on diff --git a/test/install_ut3_tester_tests.sql b/test/install_ut3_tester_tests.sql index 099064fe5..069eca42a 100644 --- a/test/install_ut3_tester_tests.sql +++ b/test/install_ut3_tester_tests.sql @@ -12,6 +12,8 @@ alter session set plsql_optimize_level=0; @@ut3_tester/core/annotations/test_annot_throws_exception.pks @@ut3_tester/core/annotations/test_annotation_manager.pks @@ut3_tester/core/expectations/test_expectation_processor.pks +@@ut3_tester/core/test_ut_utils.pks +@@ut3_tester/core/test_ut_test.pks @@ut3_tester/core.pkb @@ -20,6 +22,8 @@ alter session set plsql_optimize_level=0; @@ut3_tester/core/expectations/test_expectation_processor.pkb @@ut3_tester/core/annotations/test_annotation_manager.pkb @@ut3_tester/core/annotations/test_annot_throws_exception.pkb +@@ut3_tester/core/test_ut_utils.pkb +@@ut3_tester/core/test_ut_test.pkb set linesize 200 diff --git a/test/ut3_tester/core/test_ut_test.pkb b/test/ut3_tester/core/test_ut_test.pkb new file mode 100644 index 000000000..183f9f9c9 --- /dev/null +++ b/test/ut3_tester/core/test_ut_test.pkb @@ -0,0 +1,717 @@ +create or replace package body test_ut_test is + + procedure cleanup_package_state is + begin + ut3_tester_helper.ut_example_tests.g_number := null; + end; + + procedure disabled_test is + l_suite ut3.ut_suite; + l_test ut3.ut_test; + begin + --Arrange + l_suite := ut3.ut_suite(a_object_owner => 'ut3_tester_helper', a_object_name => 'ut_example_tests', a_line_no=> 1); + l_suite.path := 'ut3_tester_helper.ut_example_tests'; + l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'set_g_number_0', ut3.ut_utils.gc_before_all)); + + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper',a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 1); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper',a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 2); + l_suite.items(l_suite.items.last).disabled_flag := ut3.ut_utils.boolean_to_int(true); + --Act + l_suite.do_execute(); + --Assert + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(1); + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_success); + ut.expect(l_suite.results_count.disabled_count).to_equal(1); + ut.expect(l_suite.results_count.warnings_count).to_equal(0); + ut.expect(l_suite.results_count.success_count).to_equal(1); + ut.expect(l_suite.results_count.failure_count).to_equal(0); + ut.expect(l_suite.results_count.errored_count).to_equal(0); + end; + + procedure aftertest_errors is + l_suite ut3.ut_suite; + l_test ut3.ut_test; + begin + --Arrange + l_suite := ut3.ut_suite(a_object_owner => 'ut3_tester_helper', a_object_name => 'ut_example_tests', a_line_no=> 1); + l_suite.path := 'ut3_tester_helper.ut_example_tests'; + l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'set_g_number_0', ut3.ut_utils.gc_before_all)); + + l_test := ut3.ut_test(a_object_owner => 'ut3_tester_helper',a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 1); + l_test.before_test_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'add_1_to_g_number', ut3.ut_utils.gc_before_test)); + l_test.after_test_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'failing_procedure', ut3.ut_utils.gc_after_test)); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := l_test; + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper',a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 1); + --Act + l_suite.do_execute(); + --Assert + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(3); + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(l_suite.results_count.disabled_count).to_equal(0); + ut.expect(l_suite.results_count.warnings_count).to_equal(0); + ut.expect(l_suite.results_count.success_count).to_equal(1); + ut.expect(l_suite.results_count.failure_count).to_equal(0); + ut.expect(l_suite.results_count.errored_count).to_equal(1); + end; + + procedure aftereach_errors is + l_suite ut3.ut_suite; + l_test ut3.ut_test; + begin + --Arrange + l_suite := ut3.ut_suite(a_object_owner => 'ut3_tester_helper', a_object_name => 'ut_example_tests', a_line_no=> 1); + l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'set_g_number_0', ut3.ut_utils.gc_before_all)); + l_test := ut3.ut_test(a_object_owner => 'ut3_tester_helper',a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 1); + l_test.before_each_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'add_1_to_g_number', ut3.ut_utils.gc_before_each)); + l_test.after_each_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'failing_procedure', ut3.ut_utils.gc_after_each)); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := l_test; + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper',a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 1); + --Act + l_suite.do_execute(); + --Assert + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(3); + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(l_suite.results_count.disabled_count).to_equal(0); + ut.expect(l_suite.results_count.warnings_count).to_equal(0); + ut.expect(l_suite.results_count.success_count).to_equal(1); + ut.expect(l_suite.results_count.failure_count).to_equal(0); + ut.expect(l_suite.results_count.errored_count).to_equal(1); + end; + + procedure beforetest_errors is + l_suite ut3.ut_suite; + l_test ut3.ut_test; + begin + --Arrange + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'ut_example_tests', a_line_no=> 1); + l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'set_g_number_0', ut3.ut_utils.gc_before_all)); + l_test := ut3.ut_test(a_object_owner =>'ut3_tester_helper',a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 1); + l_test.before_test_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'failing_procedure', ut3.ut_utils.gc_before_test)); + l_test.after_test_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'add_1_to_g_number', ut3.ut_utils.gc_after_test)); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := l_test; + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner =>'ut3_tester_helper',a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 1); + --Act + l_suite.do_execute(); + --Assert + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(2); + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(l_suite.results_count.disabled_count).to_equal(0); + ut.expect(l_suite.results_count.warnings_count).to_equal(0); + ut.expect(l_suite.results_count.success_count).to_equal(1); + ut.expect(l_suite.results_count.failure_count).to_equal(0); + ut.expect(l_suite.results_count.errored_count).to_equal(1); + end; + + procedure beforeeach_errors is + l_suite ut3.ut_suite; + l_test ut3.ut_test; + begin + --Arrange + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'ut_example_tests', a_line_no=> 1); + l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'set_g_number_0', ut3.ut_utils.gc_before_all)); + l_test := ut3.ut_test(a_object_owner => USER,a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 1); + l_test.before_each_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'failing_procedure', ut3.ut_utils.gc_before_each)); + l_test.after_each_list := ut3.ut_executables(ut3.ut_executable(USER, 'ut_example_tests', 'add_1_to_g_number', ut3.ut_utils.gc_after_each)); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := l_test; + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => USER,a_object_name => 'ut_example_tests',a_name => 'add_1_to_g_number', a_line_no=> 1); + --Act + l_suite.do_execute(); + --Assert + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(2); + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(l_suite.results_count.disabled_count).to_equal(0); + ut.expect(l_suite.results_count.warnings_count).to_equal(0); + ut.expect(l_suite.results_count.success_count).to_equal(1); + ut.expect(l_suite.results_count.failure_count).to_equal(0); + ut.expect(l_suite.results_count.errored_count).to_equal(1); + end; + + procedure after_each_executed is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.after_each_list := ut3.ut_executables( + ut3.ut_executable( + user, + 'UT_EXAMPLE_TESTS', + 'add_1_to_g_number', + ut3.ut_utils.gc_after_each + ) + ); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(1); + end; + + procedure after_each_proc_name_invalid is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.after_each_list := ut3.ut_executables( + ut3.ut_executable(user, 'ut_example_tests', 'invalid setup name', ut3.ut_utils.gc_after_each) + ); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(0); + end; + + procedure after_each_procedure_name_null is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.after_each_list := ut3.ut_executables( + ut3.ut_executable(user, 'ut_example_tests', null, ut3.ut_utils.gc_after_each) + ); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(0); + end; + + procedure create_app_info_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package ut_output_tests + as + --%suite + + gv_before_all_client_info varchar2(200); + gv_before_each_client_info varchar2(200); + gv_before_test_client_info varchar2(200); + gv_after_test_client_info varchar2(200); + gv_after_each_client_info varchar2(200); + gv_after_all_client_info varchar2(200); + + --%test + --%beforetest(before_test) + --%aftertest(after_test) + procedure the_test; + + --%beforeall + procedure beforeall; + + --%beforeeach + procedure beforeeach; + + procedure before_test; + procedure after_test; + + --%aftereach + procedure aftereach; + + --%afterall + procedure afterall; + + end;]'; + execute immediate q'[create or replace package body ut_output_tests + as + + procedure the_test + as + l_module_name varchar2(4000); + l_action_name varchar2(4000); + l_client_info varchar2(4000); + begin + --Generate empty output + dbms_output.put_line(''); + ut.expect(1,'Test 1 Should Pass').to_equal(1); + dbms_application_info.read_module(module_name => l_module_name, action_name => l_action_name); + dbms_application_info.read_client_info(l_client_info); + ut.expect(l_module_name).to_equal('utPLSQL'); + ut.expect(l_action_name).to_be_like('ut_output_tests'); + ut.expect(l_client_info).to_be_like('the_test'); + end; + + procedure beforeall is + begin + dbms_application_info.read_client_info(gv_before_all_client_info); + end; + + procedure beforeeach is + begin + dbms_application_info.read_client_info(gv_before_each_client_info); + end; + + procedure before_test is + begin + dbms_application_info.read_client_info(gv_before_test_client_info); + end; + procedure after_test is + begin + dbms_application_info.read_client_info(gv_after_test_client_info); + end; + + procedure aftereach is + begin + dbms_application_info.read_client_info(gv_after_each_client_info); + end; + + procedure afterall is + begin + dbms_application_info.read_client_info(gv_after_all_client_info); + end; + + end;]'; + end; + + procedure drop_app_info_package is + pragma autonomous_transaction; + begin + execute immediate q'[drop package ut_output_tests]'; + end; + + procedure application_info_on_execution is + l_output_data ut3.ut_varchar2_list; + l_output clob; + function get_test_value(a_variable_name varchar2) return varchar2 is + l_result varchar2(4000); + begin + execute immediate 'begin :i := ut_output_tests.'||a_variable_name||'; end;' using out l_result; + return l_result; + end; + begin + --act + select * bulk collect into l_output_data + from table(ut3.ut.run('ut_output_tests')); + l_output := ut3.ut_utils.table_to_clob(l_output_data); + --assert + + ut.expect(get_test_value('gv_before_all_client_info')).to_equal('beforeall'); + ut.expect(get_test_value('gv_before_each_client_info')).to_equal('beforeeach'); + ut.expect(get_test_value('gv_before_test_client_info')).to_equal('before_test'); + ut.expect(get_test_value('gv_after_test_client_info')).to_equal('after_test'); + ut.expect(get_test_value('gv_after_each_client_info')).to_equal('aftereach'); + ut.expect(get_test_value('gv_after_all_client_info')).to_equal('afterall'); + ut.expect(l_output).to_be_like('%0 failed, 0 errored, 0 disabled, 0 warning(s)%'); + end; + + procedure before_each_executed is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'add_1_to_g_number', + a_line_no => null + ); + begin + l_test.before_each_list := ut3.ut_executables(ut3.ut_executable(user, 'ut_example_tests', 'set_g_number_0', ut3.ut_utils.gc_before_each)); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(1); + end; + + + procedure before_each_proc_name_invalid is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.before_each_list := ut3.ut_executables( + ut3.ut_executable(user, 'ut_example_tests', 'invalid setup name', ut3.ut_utils.gc_before_each) + ); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_be_null; + end; + + procedure before_each_proc_name_null is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.before_each_list := ut3.ut_executables( + ut3.ut_executable(user, 'ut_example_tests', null, ut3.ut_utils.gc_before_each) + ); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_be_null; + end; + + procedure ignore_savepoint_exception is + pragma autonomous_transaction; + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'ut_commit_test', + a_line_no => null + ); + begin + l_test.rollback_type := ut3.ut_utils.gc_rollback_auto; + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); + end; + + procedure owner_name_invalid is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'invalid owner name', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + end; + + procedure owner_name_null is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(0); + end; + + procedure create_invalid_package is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package invalid_package is + v_variable non_existing_type; + procedure ut_exampletest; + end;'; + exception when others then + null; + end; + + procedure drop_invalid_package is + pragma autonomous_transaction; + begin + execute immediate 'drop package invalid_package'; + exception when others then + null; + end; + + procedure package_in_invalid_state is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_name => 'invalid_package', + a_name => 'ut_exampletest', + a_line_no => null + ); + begin + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + end; + + procedure package_name_invalid is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_name => 'invalid package name', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + end; + + procedure package_name_null is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_name => null, + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + end; + + procedure procedure_name_invalid is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'invalid procedure name', + a_line_no => null + ); + begin + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + end; + + procedure procedure_name_null is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => null, + a_line_no => null + ); + begin + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + end; + + procedure before_test_executed is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'add_1_to_g_number', + a_line_no => null + ); + begin + l_test.before_test_list := ut3.ut_executables(ut3.ut_executable(user, 'ut_example_tests', 'set_g_number_0', ut3.ut_utils.gc_before_test)); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(1); + end; + + procedure before_test_proc_name_invalid is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.before_test_list := ut3.ut_executables( + ut3.ut_executable(user, 'ut_example_tests', 'invalid setup name', ut3.ut_utils.gc_before_test) + ); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_be_null; + end; + + procedure before_test_proc_name_null is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.before_test_list := ut3.ut_executables( + ut3.ut_executable(user, 'ut_example_tests', null, ut3.ut_utils.gc_before_test) + ); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_be_null; + end; + + procedure after_test_executed is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.after_test_list := ut3.ut_executables(ut3.ut_executable(user, 'ut_example_tests', 'add_1_to_g_number', ut3.ut_utils.gc_after_test)); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_success); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(1); + end; + + procedure after_test_proce_name_invalid is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.after_test_list := ut3.ut_executables( + ut3.ut_executable(user, 'ut_example_tests', 'invalid procedure name', ut3.ut_utils.gc_after_test) + ); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(0); + end; + + procedure after_test_proc_name_null is + --Arrange + l_test ut3.ut_test := ut3.ut_test( + a_object_owner => 'ut3_tester_helper', + a_object_name => 'ut_example_tests', + a_name => 'set_g_number_0', + a_line_no => null + ); + begin + l_test.after_test_list := ut3.ut_executables( + ut3.ut_executable(user, 'ut_example_tests', null, ut3.ut_utils.gc_after_test) + ); + --Act + l_test.do_execute(); + --Assert + ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(0); + end; + + procedure create_output_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package ut_output_tests + as + --%suite + + --%beforeeach + procedure beforeeach; + + --%aftereach + procedure aftereach; + + --%test + --%beforetest(beforetest) + --%aftertest(aftertest) + procedure ut_passing_test; + + procedure beforetest; + + procedure aftertest; + + --%beforeall + procedure beforeall; + --%afterall + procedure afterall; + + end;]'; + execute immediate q'[create or replace package body ut_output_tests + as + + procedure beforetest is + begin + dbms_output.put_line(''); + end; + + procedure aftertest is + begin + dbms_output.put_line(''); + end; + + procedure beforeeach is + begin + dbms_output.put_line(''); + end; + + procedure aftereach is + begin + dbms_output.put_line(''); + end; + + procedure ut_passing_test is + begin + dbms_output.put_line(''); + ut.expect(1,'Test 1 Should Pass').to_equal(1); + end; + + procedure beforeall is + begin + dbms_output.put_line(''); + end; + + procedure afterall is + begin + dbms_output.put_line(''); + end; + + end;]'; + exception when others then + null; + end; + + procedure drop_output_package is + pragma autonomous_transaction; + begin + execute immediate 'drop package ut_output_tests'; + exception when others then + null; + end; + + procedure test_output_gathering is + l_output_data ut3.ut_varchar2_list; + l_output clob; + begin + select * bulk collect into l_output_data + from table(ut3.ut.run('ut_output_tests')); + l_output := ut3.ut_utils.table_to_clob(l_output_data); + ut.expect(l_output).to_be_like( + '%%%%%%%%1 tests, 0 failed, 0 errored%' + ); + end; + + +end; +/ diff --git a/test/ut3_tester/core/test_ut_test.pks b/test/ut3_tester/core/test_ut_test.pks new file mode 100644 index 000000000..3f10d5a6f --- /dev/null +++ b/test/ut3_tester/core/test_ut_test.pks @@ -0,0 +1,97 @@ +create or replace package test_ut_test is + + --%suite(ut_test) + --%suitepath(utplsql.framework_tester.core) + + --%beforeeach + procedure cleanup_package_state; + + --%test(Disabled flag for a test skips the tests execution in suite) + procedure disabled_test; + + --%test(Marks test as errored if aftertest raises exception) + procedure aftertest_errors; + + --%test(Marks each test as errored if aftereach raises exception) + procedure aftereach_errors; + + --%test(Marks test as errored if beforetest raises exception) + procedure beforetest_errors; + + --%test(Marks each test as errored if beforeeach raises exception) + procedure beforeeach_errors; + + + --%context(executables in test) + + --%test(Executes aftereach procedure) + procedure after_each_executed; + + --%test(Fails test when aftereach procedure name invalid) + procedure after_each_proc_name_invalid; + --%test(Tails test when aftereach procedure name null) + procedure after_each_procedure_name_null; + + procedure create_app_info_package; + procedure drop_app_info_package; + --%beforetest(create_app_info_package) + --%aftertest(drop_app_info_package) + --%test(Sets application_info on execution of individual items) + procedure application_info_on_execution; + + --%test(Executes beforeeach procedure) + procedure before_each_executed; + --%test(Fails test when beforeeach procedure name invalid) + procedure before_each_proc_name_invalid; + --%test(Fails test when beforeeach procedure name null) + procedure before_each_proc_name_null; + --%test(Does not raise exception when rollback to savepoint fails) + procedure ignore_savepoint_exception; + --%test(Fails when owner name invalid) + procedure owner_name_invalid; + + --TODO: FIX that + --%test(Runs test as current schema when owner name null) + --%disabled + procedure owner_name_null; + + procedure create_invalid_package; + procedure drop_invalid_package; + --%beforetest(create_app_info_package) + --%aftertest(drop_app_info_package) + --%test(Fails the test that references package with compilation errors) + procedure package_in_invalid_state; + --%test(Fails the test when package name is invalid) + procedure package_name_invalid; + --%test(Fails the test when package name is null) + procedure package_name_null; + --%test(Fails the test when procedure name invalid) + procedure procedure_name_invalid; + --%test(Fails the test when procedure name null) + procedure procedure_name_null; + + + --%test(Executes befroretest procedure) + procedure before_test_executed; + --%test(Fails test when befroretest procedure name invalid) + procedure before_test_proc_name_invalid; + --%test(Fails test when befroretest procedure name is null) + procedure before_test_proc_name_null; + --%test(Executes aftertest procedure) + procedure after_test_executed; + --%test(Fails test when aftertest procedure name invalid) + procedure after_test_proce_name_invalid; + --%test(Fails test when aftertest procedure name is null) + procedure after_test_proc_name_null; + + procedure create_output_package; + procedure drop_output_package; + --%beforetest(create_output_package) + --%aftertest(drop_output_package) + --%test(Test output gathering) + procedure test_output_gathering; + + --%endcontext + +end; +/ diff --git a/test/ut3_tester/core/test_ut_utils.pkb b/test/ut3_tester/core/test_ut_utils.pkb new file mode 100644 index 000000000..31e1520d2 --- /dev/null +++ b/test/ut3_tester/core/test_ut_utils.pkb @@ -0,0 +1,436 @@ +create or replace package body test_ut_utils is + + gv_nls_value nls_session_parameters.value%type; + + gc_delimiter varchar2(1) := get_numeric_delimiter(); + + function get_numeric_delimiter return varchar2 is + l_result varchar2(1); + begin + select substr(value, 1, 1) into l_result from nls_session_parameters t where t.parameter = 'NLS_NUMERIC_CHARACTERS'; + return l_result; + end; + + function clob_to_blob(p_clob clob) return blob is + l_blob blob; + l_dest_offset integer := 1; + l_source_offset integer := 1; + l_lang_context integer := dbms_lob.default_lang_ctx; + l_warning integer := dbms_lob.warn_inconvertible_char; + begin + dbms_lob.createtemporary(l_blob, true); + dbms_lob.converttoblob( + dest_lob =>l_blob, + src_clob =>p_clob, + amount =>DBMS_LOB.LOBMAXSIZE, + dest_offset =>l_dest_offset, + src_offset =>l_source_offset, + blob_csid =>DBMS_LOB.DEFAULT_CSID, + lang_context=>l_lang_context, + warning =>l_warning + ); + return l_blob; + end; + + + procedure common_clob_to_table_exec(p_clob varchar2, p_delimiter varchar2, p_expected_list ut3.ut_varchar2_list, p_limit number) is + begin + execute immediate 'declare + l_clob clob := '''||p_clob||'''; + l_delimiter varchar2(1) := '''||p_delimiter||'''; + l_expected ut3.ut_varchar2_list := :p_expected_list; + l_result ut3.ut_varchar2_list; + l_limit integer := '||p_limit||q'[; + l_result_str varchar2(32767); + l_errors integer := 0; + function compare_element(a_element_id integer, a_expected ut3.ut_varchar2_list, a_actual ut3.ut_varchar2_list) return integer is + begin + if a_expected.exists(a_element_id) and a_actual.exists(a_element_id) then + if a_expected(a_element_id) = a_actual(a_element_id) or a_expected(a_element_id) is null and a_actual(a_element_id) is null then + return 0; + else + dbms_output.put('a_expected('||a_element_id||')='||a_expected(a_element_id)||' | a_actual('||a_element_id||')='||a_actual(a_element_id)); + end if; + end if; + if not a_expected.exists(a_element_id) then + dbms_output.put('a_expected('||a_element_id||') does not exist '); + end if; + if not a_actual.exists(a_element_id) then + dbms_output.put('a_actual('||a_element_id||') does not exist '); + end if; + dbms_output.put_line(null); + return 1; + end; +begin +--Act + select column_value bulk collect into l_result from table( ut3.ut_utils.clob_to_table(l_clob, l_limit, l_delimiter) ); + for i in 1 .. l_result.count loop + l_result_str := l_result_str||''''||l_result(i)||''''||l_delimiter; + end loop; + l_result_str := rtrim(l_result_str,l_delimiter); +--Assert + for i in 1 .. greatest(l_expected.count, l_result.count) loop + l_errors := l_errors + compare_element(i, l_expected, l_result); + end loop; + ut.expect(l_errors).to_equal(0); +end;]' using p_expected_list; + end; + + procedure test_clob_to_table is + begin + common_clob_to_table_exec('a,b,c,d', ',', ut3.ut_varchar2_list('a','b','c','d'), 1000); + common_clob_to_table_exec( '', ',', ut3.ut_varchar2_list(), 1000); + common_clob_to_table_exec( '1,b,c,d', '', ut3.ut_varchar2_list('1,b,','c,d'), 4); + common_clob_to_table_exec( 'abcdefg,hijk,axa,a', ',', ut3.ut_varchar2_list('abc','def','g','hij','k','axa','a'), 3); + common_clob_to_table_exec( ',a,,c,d,', ',', ut3.ut_varchar2_list('','a','','c','d',''), 1000); + end; + + procedure test_test_result_to_char is + begin + ut.expect(ut3.ut_utils.test_result_to_char(-1),'test unknown').to_equal('Unknown(-1)'); + ut.expect(ut3.ut_utils.test_result_to_char(null),'test unknown').to_equal('Unknown(NULL)'); + ut.expect(ut3.ut_utils.test_result_to_char(ut3.ut_utils.gc_success),'test unknown').to_equal(ut3.ut_utils.gc_success_char); + end; + + procedure to_string_emptyblob is + begin + ut.expect(ut3.ut_data_value_blob(empty_blob()).to_string()).to_equal('EMPTY'); + end; + + procedure to_string_emptyclob is + begin + ut.expect(ut3.ut_data_value_clob(empty_clob()).to_string()).to_equal('EMPTY'); + end; + + procedure to_string_nullblob is + begin + ut.expect(ut3.ut_data_value_blob(null).to_string()).to_equal('NULL'); + end; + + procedure to_string_nullclob is + begin + ut.expect(ut3.ut_data_value_clob(null).to_string()).to_equal('NULL'); + end; + + procedure to_string_nulldate is + begin + ut.expect(ut3.ut_data_value_date(null).to_string()).to_equal('NULL'); + end; + + procedure to_string_nullnumber is + begin + ut.expect(ut3.ut_data_value_number(null).to_string()).to_equal('NULL'); + end; + + procedure to_string_nulltimestamp is + begin + ut.expect(ut3.ut_data_value_timestamp(null).to_string()).to_equal('NULL'); + end; + + procedure to_string_nulltimestamp_ltz is + begin + ut.expect(ut3.ut_data_value_timestamp_ltz(null).to_string()).to_equal('NULL'); + end; + + procedure to_string_nulltimestamp_tz is + begin + ut.expect(ut3.ut_data_value_timestamp_tz(null).to_string()).to_equal('NULL'); + end; + + procedure to_string_nullvarchar2 is + begin + ut.expect(ut3.ut_data_value_varchar2(null).to_string()).to_equal('NULL'); + end; + + procedure to_string_blob is + l_text varchar2(32767) := 'A test char'; + l_value blob := utl_raw.cast_to_raw(l_text); + l_expected varchar2(32767) := ''''||rawtohex(l_value)||''''; + begin + ut.expect(ut3.ut_data_value_blob(l_value).to_string()).to_equal(l_expected); + end; + + procedure to_string_clob is + l_value clob := 'A test char'; + l_expected varchar2(32767) := ''''||l_value||''''; + begin + ut.expect(ut3.ut_data_value_clob(l_value).to_string()).to_equal(l_expected); + end; + + procedure to_string_date is + l_value date := to_date('2016-12-31 23:59:59', 'yyyy-mm-dd hh24:mi:ss'); + l_expected varchar2(100) := '2016-12-31T23:59:59'; + begin + ut.expect(ut3.ut_data_value_date(l_value).to_string()).to_equal(l_expected); + end; + + procedure to_string_timestamp is + l_value timestamp(9) := to_timestamp('2016-12-31 23:59:59.123456789', 'yyyy-mm-dd hh24:mi:ss.ff'); + l_expected varchar2(100) := '2016-12-31T23:59:59'||gc_delimiter||'123456789'; + begin + ut.expect(ut3.ut_data_value_timestamp(l_value).to_string()).to_equal(l_expected); + end; + + procedure to_string_timestamp_ltz is + l_value timestamp(9) with local time zone := to_timestamp('2016-12-31 23:59:59.123456789', 'yyyy-mm-dd hh24:mi:ss.ff'); + l_expected varchar2(100) := '2016-12-31T23:59:59'||gc_delimiter||'123456789'; + begin + ut.expect(ut3.ut_data_value_timestamp_ltz(l_value).to_string()).to_equal(l_expected); + end; + + procedure to_string_timestamp_tz is + l_value timestamp(9) with time zone := to_timestamp_tz('2016-12-31 23:59:59.123456789 -8:00', 'yyyy-mm-dd hh24:mi:ss.ff tzh:tzm'); + l_expected varchar2(100) := '2016-12-31T23:59:59'||gc_delimiter||'123456789 -08:00'; + begin + ut.expect(ut3.ut_data_value_timestamp_tz(l_value).to_string()).to_equal(l_expected); + end; + + procedure to_string_varchar2 is + l_value varchar2(20) := 'A test char'; + l_expected varchar2(100) := ''''||l_value||''''; + begin + ut.expect(ut3.ut_data_value_varchar2(l_value).to_string()).to_equal(l_expected); + end; + + procedure to_string_verybigblob is + l_text clob := lpad('A test char',32767,'1')||lpad('1',32767,'1'); + l_value blob; + begin + l_value := clob_to_blob(l_text); + ut.expect(length(ut3.ut_data_value_blob(l_value).to_string())).to_equal(ut3.ut_utils.gc_max_output_string_length); + ut.expect(ut3.ut_data_value_blob(l_value).to_string()).to_be_like('%'||ut3.ut_utils.gc_more_data_string); + end; + + procedure to_string_verybigclob is + l_value clob := lpad('A test char',32767,'1')||lpad('1',32767,'1'); + begin + ut.expect(length(ut3.ut_data_value_clob(l_value).to_string())).to_equal(ut3.ut_utils.gc_max_output_string_length); + ut.expect(ut3.ut_data_value_clob(l_value).to_string()).to_be_like('%'||ut3.ut_utils.gc_more_data_string); + end; + + procedure to_string_verybignumber is + l_value number := 1234567890123456789012345678901234567890; + l_expected varchar2(100) := '1234567890123456789012345678901234567890'; + begin + ut.expect(ut3.ut_data_value_number(l_value).to_string()).to_equal(l_expected); + end; + + procedure to_string_verybigvarchar2 is + l_value varchar2(32767) := lpad('A test char',32767,'1'); + l_result varchar2(32767); + begin + ut.expect(length(ut3.ut_data_value_varchar2(l_value).to_string())).to_equal(ut3.ut_utils.gc_max_output_string_length); + ut.expect(ut3.ut_data_value_varchar2(l_value).to_string()).to_be_like('%'||ut3.ut_utils.gc_more_data_string); + end; + + procedure to_string_verysmallnumber is + l_value number := 0.123456789012345678901234567890123456789; + l_expected varchar2(100) := gc_delimiter||'123456789012345678901234567890123456789'; + begin + ut.expect(ut3.ut_data_value_number(l_value).to_string()).to_equal(l_expected); + end; + + procedure test_table_to_clob is + procedure exec_table_to_clob(a_list ut3.ut_varchar2_list, a_delimiter varchar2, a_expected clob) is + l_result clob; + begin + l_result := ut3.ut_utils.table_to_clob(a_list, a_delimiter); + + ut.expect(l_result).to_equal(a_expected, a_nulls_are_equal => true); + end; + begin + exec_table_to_clob(null, ',', ''); + exec_table_to_clob(ut3.ut_varchar2_list(), ',', ''); + exec_table_to_clob(ut3.ut_varchar2_list('a', 'b', 'c', 'd'), ',', 'a,b,c,d'); + exec_table_to_clob(ut3.ut_varchar2_list('1,b,', 'c,d'), ',', '1,b,,c,d'); + exec_table_to_clob(ut3.ut_varchar2_list('', 'a', '', 'c', 'd', ''), ',', ',a,,c,d,'); + end; + + procedure test_append_with_multibyte is + l_lines sys.dbms_preprocessor.source_lines_t; + l_result clob; + begin + l_lines := sys.dbms_preprocessor.get_post_processed_source( + object_type => 'PACKAGE', + schema_name => sys_context('USERENV', 'CURRENT_USER'), + object_name => 'TST_CHARS' + ); + + for i in 1..l_lines.count loop + l_result := null; + ut3.ut_utils.append_to_clob(l_result, l_lines(i)); + + --Assert + ut.expect(dbms_lob.getlength(l_result),'Error for index '||i).to_equal(dbms_lob.getlength(l_lines(i))); + end loop; + end; + + procedure setup_append_with_multibyte is + pragma autonomous_transaction; + begin + select value into gv_nls_value from nls_session_parameters where parameter = 'NLS_DATE_LANGUAGE'; + execute immediate 'alter session set nls_date_language=ENGLISH'; + execute immediate 'create or replace package tst_chars as +-- 2) Status of the process = 😡PE😡 with no linked data +end;'; + execute immediate 'alter session set nls_date_language=RUSSIAN'; + + end; + procedure clean_append_with_multibyte is + pragma autonomous_transaction; + begin + execute immediate 'alter session set nls_date_language='||gv_nls_value; + execute immediate 'drop package tst_chars'; + end; + + procedure test_clob_to_table_multibyte is + l_varchar2_byte_limit integer := 32767; + l_workaround_byte_limit integer := 8191; + l_singlebyte_string_max_size varchar2(32767 char) := rpad('x',l_varchar2_byte_limit,'x'); + l_twobyte_character char(1 char) := '�?'; + l_clob_multibyte clob := l_twobyte_character||l_singlebyte_string_max_size; --here we have 32769(2+32767) bytes and 32768 chars + l_expected ut3.ut_varchar2_list := ut3.ut_varchar2_list(); + l_result ut3.ut_varchar2_list; + begin + l_expected.extend(1); + l_expected(1) := l_twobyte_character||substr(l_singlebyte_string_max_size,1,l_workaround_byte_limit-1); + --Act + l_result := ut3.ut_utils.clob_to_table(l_clob_multibyte); + --Assert + ut.expect(l_result(1)).to_equal(l_expected(1)); + end; + + procedure test_to_version_split is + l_version ut3.ut_utils.t_version; + begin + l_version := ut3.ut_utils.to_version('v034.0.0456.0333'); + ut.expect(l_version.major).to_equal(34); + ut.expect(l_version.minor).to_equal(0); + ut.expect(l_version.bugfix).to_equal(456); + ut.expect(l_version.build).to_equal(333); + end; + + procedure test_trim_list_elements + is + l_list_to_be_equal ut3.ut_varchar2_list := ut3.ut_varchar2_list('hello', 'world', 'okay'); + l_list ut3.ut_varchar2_list := ut3.ut_varchar2_list(' hello ', chr(9)||'world ', 'okay'); + begin + --Act + l_list := ut3.ut_utils.trim_list_elements(l_list); + --Assert + ut.expect(anydata.convertcollection(l_list)).to_equal(anydata.convertcollection(l_list_to_be_equal)); + end; + + procedure trim_list_elemts_null_collect + is + l_list_to_be_null ut3.ut_varchar2_list; + begin + --Act + l_list_to_be_null := ut3.ut_utils.trim_list_elements(l_list_to_be_null); + --Assert + ut.expect(anydata.convertcollection(l_list_to_be_null)).to_be_null; + end; + + procedure trim_list_elemts_empty_collect + is + l_list_to_be_empty ut3.ut_varchar2_list := ut3.ut_varchar2_list(); + begin + --Act + l_list_to_be_empty := ut3.ut_utils.trim_list_elements(l_list_to_be_empty); + --Assert + ut.expect(anydata.convertcollection(l_list_to_be_empty)).to_be_empty; + end; + + procedure test_filter_list + is + l_list_to_be_equal ut3.ut_varchar2_list := ut3.ut_varchar2_list('-12458', '8956', '789'); + l_list ut3.ut_varchar2_list := ut3.ut_varchar2_list('-12458', '8956', 'okay', null,'458963', '789'); + begin + --Act + l_list := ut3.ut_utils.filter_list(l_list, '^-?[[:digit:]]{1,5}$'); + --Assert + ut.expect(anydata.convertcollection(l_list)).to_equal(anydata.convertcollection(l_list_to_be_equal)); + end; + + procedure filter_list_null_collection + is + l_list_to_be_null ut3.ut_varchar2_list; + begin + --Act + l_list_to_be_null := ut3.ut_utils.filter_list(l_list_to_be_null, '^-?[[:digit:]]{1,5}$'); + --Assert + ut.expect(anydata.convertcollection(l_list_to_be_null)).to_be_null; + end; + + procedure filter_list_empty_collection + is + l_list_to_be_empty ut3.ut_varchar2_list := ut3.ut_varchar2_list(); + begin + --Act + l_list_to_be_empty := ut3.ut_utils.filter_list(l_list_to_be_empty, '^-?[[:digit:]]{1,5}$'); + --Assert + ut.expect(anydata.convertcollection(l_list_to_be_empty)).to_be_empty; + end; + + procedure replace_multiline_comments + is + l_source clob; + l_actual clob; + l_expected clob; + begin + --Arrange + l_source := q'[ +create or replace package dummy as + + -- single line comment with disabled /* multi-line comment */ + gv_text0 varchar2(200) := q'{/* multi-line comment + in escaped q'multi-line + string*/}'; + gv_text1 varchar2(200) := '/* multi-line comment in a string*/'; + gv_text2 varchar2(200) := '/* multi-line comment + in a multi-line + string*/'; + -- ignored start of multi-line comment with multi-byte text � /* + -- ignored end of multi-line comment with multi-byte text � */ + /* multi-line comment + with + multi-byte characters ��� + in it */ + gv_text3 varchar2(200) := 'some text'; /* multiline comment*/ --followed by single-line comment + /* multi-line comment in one line*/ + gv_text4 varchar2(200) := q'{/* multi-line comment + in escaped q'multi-line + string*/}'; +end; +]'; + l_expected := q'[ +create or replace package dummy as + + -- single line comment with disabled /* multi-line comment */ + gv_text0 varchar2(200) := q'{/* multi-line comment + in escaped q'multi-line + string*/}'; + gv_text1 varchar2(200) := '/* multi-line comment in a string*/'; + gv_text2 varchar2(200) := '/* multi-line comment + in a multi-line + string*/'; + -- ignored start of multi-line comment with multi-byte text � /* + -- ignored end of multi-line comment with multi-byte text � */ + ]'||q'[ + + + + gv_text3 varchar2(200) := 'some text'; --followed by single-line comment + ]'||q'[ + gv_text4 varchar2(200) := q'{/* multi-line comment + in escaped q'multi-line + string*/}'; +end; +]'; + --Act + l_actual := ut3.ut_utils.replace_multiline_comments(l_source); + --Assert + ut.expect(l_actual).to_equal(l_expected); + end; +end test_ut_utils; +/ diff --git a/test/ut3_tester/core/test_ut_utils.pks b/test/ut3_tester/core/test_ut_utils.pks new file mode 100644 index 000000000..ecc2596c5 --- /dev/null +++ b/test/ut3_tester/core/test_ut_utils.pks @@ -0,0 +1,132 @@ +create or replace package test_ut_utils is + + --%suite(ut_utils) + --%suitepath(utplsql.framework_tester.core) + + function get_numeric_delimiter return varchar2; + + --%test(clob_to_table - Converts a clob into ut_varchar2_list using specified delimiter) + procedure test_clob_to_table; + + --%test(test_result_to_char - Converts numeric test result to character representation) + procedure test_test_result_to_char; + + + --%context(to_string) + + --%test(Returns 'EMPTY' string for NULL BLOB) + procedure to_string_emptyblob; + + --%test(Returns 'EMPTY' string for NULL CLOB) + procedure to_string_emptyclob; + + --%test(Returns 'NULL' string for NULL BLOB) + procedure to_string_nullblob; + + --%test(Returns 'NULL' string for NULL CLOB) + procedure to_string_nullclob; + + --%test(Returns 'NULL' string for NULL date) + procedure to_string_nulldate; + + --%test(Returns 'NULL' string for NULL number) + procedure to_string_nullnumber; + + --%test(Returns 'NULL' string for NULL timestamp) + procedure to_string_nulltimestamp; + + --%test(Returns 'NULL' string for NULL timestamp with local timezone) + procedure to_string_nulltimestamp_ltz; + + --%test(Returns 'NULL' string for NULL timestamp with timezone) + procedure to_string_nulltimestamp_tz; + + --%test(Returns 'NULL' string for NULL varchar) + procedure to_string_nullvarchar2; + + --%test(Returns string representation of BLOB) + procedure to_string_blob; + + --%test(Returns string representation of CLOB) + procedure to_string_clob; + + --%test(Returns string representation of date) + procedure to_string_date; + + --%test(Returns string representation of timestamp) + procedure to_string_timestamp; + + --%test(Returns string representation of timestamp with local timezone) + procedure to_string_timestamp_ltz; + + --%test(Returns string representation of timestamp with timezone) + procedure to_string_timestamp_tz; + + --%test(Returns varchar value) + procedure to_string_varchar2; + + --%test(Returns BLOB trimmed to 4000 chars with trailing [...]) + procedure to_string_verybigblob; + +--%test(Returns CLOB trimmed to 4000 chars with trailing [...]) + procedure to_string_verybigclob; + + --%test(Returns string representation of large number) + procedure to_string_verybignumber; + + --%test(Returns varchar2 trimmed to 4000 chars with trailing [...]) + procedure to_string_verybigvarchar2; + + --%test(Returns string representation of small number) + procedure to_string_verysmallnumber; + + --%endcontext + + --%test(table_to_clob - converts ut_varchar2_list into a CLOB value) + procedure test_table_to_clob; + + --%test(append_to_clob - adds multibyte varchar to CLOB) + --%beforetest(setup_append_with_multibyte) + --%aftertest(clean_append_with_multibyte) + procedure test_append_with_multibyte; + procedure setup_append_with_multibyte; + procedure clean_append_with_multibyte; + + --%test(clob_to_table - converts multibyte CLOB to ut_varchar2_list) + --%disabled(We cannot run this test successfully on 12.1 until we change NLSCHARACTERSET from US7ASCII to AL32UTF8) + procedure test_clob_to_table_multibyte; + + --%test(to_version - splits version string into individual version components) + procedure test_to_version_split; + + --%context(trim_list_elements) + + --%test(Trims the elements of a collection) + procedure test_trim_list_elements; + + --%test(Trim list elements with null collection) + procedure trim_list_elemts_null_collect; + + --%test(Trim list elements with empty collection) + procedure trim_list_elemts_empty_collect; + + --%endcontext + + --%context(filter_list) + + --%test(Filters the collection's elements) + procedure test_filter_list; + + --%test(Filter list elements with null collection) + procedure filter_list_null_collection; + + --%test(Filter list elements with empty collection) + procedure filter_list_empty_collection; + + --%endcontext + + --%test(replace_multiline_comments - replaces multi-line comments with empty lines) + procedure replace_multiline_comments; + +end test_ut_utils; +/ diff --git a/test/ut3_tester_helper/run_helper.pkb b/test/ut3_tester_helper/run_helper.pkb index 8b9353f38..b6eaba702 100644 --- a/test/ut3_tester_helper/run_helper.pkb +++ b/test/ut3_tester_helper/run_helper.pkb @@ -302,7 +302,7 @@ create or replace package body run_helper is execute immediate 'drop package stateful_package'; execute immediate 'drop package test_stateful'; end; - + procedure run(a_reporter ut3.ut_reporter_base := null) is begin ut3.ut.run(a_reporter); diff --git a/test/ut3_tester_helper/run_helper.pks b/test/ut3_tester_helper/run_helper.pks index 5611663c2..28d20d4dc 100644 --- a/test/ut3_tester_helper/run_helper.pks +++ b/test/ut3_tester_helper/run_helper.pks @@ -16,7 +16,7 @@ create or replace package run_helper is procedure create_test_suite; procedure drop_test_suite; - + procedure run(a_reporter ut3.ut_reporter_base := null); procedure run(a_path varchar2, a_reporter ut3.ut_reporter_base := null); procedure run(a_paths ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base := null); diff --git a/test/ut3_tester_helper/ut_example_tests.pkb b/test/ut3_tester_helper/ut_example_tests.pkb new file mode 100644 index 000000000..d4954fff3 --- /dev/null +++ b/test/ut3_tester_helper/ut_example_tests.pkb @@ -0,0 +1,25 @@ +create or replace package body ut_example_tests +as + + procedure set_g_number_0 as + begin + g_number := 0; + end; + + procedure add_1_to_g_number as + begin + g_number := g_number + 1; + end; + + procedure failing_procedure as + begin + g_number := 1 / 0; + end; + + procedure ut_commit_test is + begin + commit; + end; + +end; +/ diff --git a/test/ut3_tester_helper/ut_example_tests.pks b/test/ut3_tester_helper/ut_example_tests.pks new file mode 100644 index 000000000..a7077a8a8 --- /dev/null +++ b/test/ut3_tester_helper/ut_example_tests.pks @@ -0,0 +1,8 @@ +create or replace package ut_example_tests is + g_number number; + procedure set_g_number_0; + procedure add_1_to_g_number; + procedure failing_procedure; + procedure ut_commit_test; +end; +/ From 29295b7021fab6cf220460705e41bc9f20a2ebeb Mon Sep 17 00:00:00 2001 From: lwasylow Date: Fri, 29 Mar 2019 08:34:00 +0000 Subject: [PATCH 20/31] Adding set of tests: core/test_ut_executable core/test_ut_suite --- test/install_ut3_tester_helper.sql | 1 + test/install_ut3_tester_tests.sql | 4 + test/ut3_tester/core/test_ut_executable.pkb | 109 +++++++++++++ test/ut3_tester/core/test_ut_executable.pks | 33 ++++ test/ut3_tester/core/test_ut_suite.pkb | 164 ++++++++++++++++++++ test/ut3_tester/core/test_ut_suite.pks | 51 ++++++ test/ut3_tester_helper/run_helper.pkb | 78 ++++++++++ test/ut3_tester_helper/run_helper.pks | 8 + test/ut3_tester_helper/ut_test_table.sql | 12 ++ 9 files changed, 460 insertions(+) create mode 100644 test/ut3_tester/core/test_ut_executable.pkb create mode 100644 test/ut3_tester/core/test_ut_executable.pks create mode 100644 test/ut3_tester/core/test_ut_suite.pkb create mode 100644 test/ut3_tester/core/test_ut_suite.pks create mode 100644 test/ut3_tester_helper/ut_test_table.sql diff --git a/test/install_ut3_tester_helper.sql b/test/install_ut3_tester_helper.sql index 016756675..1645cd4c7 100644 --- a/test/install_ut3_tester_helper.sql +++ b/test/install_ut3_tester_helper.sql @@ -10,6 +10,7 @@ alter session set plsql_optimize_level=0; @@ut3_tester_helper/test_tab_varchar2.tps @@ut3_tester_helper/test_tab_varray.tps @@ut3_tester_helper/test_dummy_number.tps +@@ut3_tester_helper/ut_test_table.sql @@ut3_tester_helper/main_helper.pks @@ut3_tester_helper/run_helper.pks diff --git a/test/install_ut3_tester_tests.sql b/test/install_ut3_tester_tests.sql index 069eca42a..700e7c8ac 100644 --- a/test/install_ut3_tester_tests.sql +++ b/test/install_ut3_tester_tests.sql @@ -14,6 +14,8 @@ alter session set plsql_optimize_level=0; @@ut3_tester/core/expectations/test_expectation_processor.pks @@ut3_tester/core/test_ut_utils.pks @@ut3_tester/core/test_ut_test.pks +@@ut3_tester/core/test_ut_suite.pks +@@ut3_tester/core/test_ut_executable.pks @@ut3_tester/core.pkb @@ -24,6 +26,8 @@ alter session set plsql_optimize_level=0; @@ut3_tester/core/annotations/test_annot_throws_exception.pkb @@ut3_tester/core/test_ut_utils.pkb @@ut3_tester/core/test_ut_test.pkb +@@ut3_tester/core/test_ut_suite.pkb +@@ut3_tester/core/test_ut_executable.pkb set linesize 200 diff --git a/test/ut3_tester/core/test_ut_executable.pkb b/test/ut3_tester/core/test_ut_executable.pkb new file mode 100644 index 000000000..1d2e74ff3 --- /dev/null +++ b/test/ut3_tester/core/test_ut_executable.pkb @@ -0,0 +1,109 @@ +create or replace package body test_ut_executable is + + g_dbms_output_text varchar2(30) := 'Some output from procedure'; + + procedure exec_schema_package_proc is + l_executable ut3.ut_executable; + l_test ut3.ut_test; + l_result boolean; + begin + --Arrange + l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); + l_executable := ut3.ut_executable_test( null, 'test_ut_executable', 'passing_proc', ut3.ut_utils.gc_test_execute ); + --Act + l_result := l_executable.do_execute(l_test); + --Assert + ut.expect(l_result).to_be_true; + ut.expect(l_executable.serveroutput).to_be_null; + ut.expect(l_executable.get_error_stack_trace()).to_be_null; + end; + + procedure exec_package_proc_output is + l_executable ut3.ut_executable; + l_test ut3.ut_test; + l_result boolean; + begin + --Arrange + l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); + l_executable := ut3.ut_executable_test( user, 'test_ut_executable', 'output_proc', ut3.ut_utils.gc_test_execute ); + --Act + l_result := l_executable.do_execute(l_test); + --Assert + ut.expect(l_result).to_be_true; + ut.expect(l_executable.serveroutput).to_equal(to_clob(g_dbms_output_text||chr(10))); + ut.expect(l_executable.get_error_stack_trace()).to_be_null; + end; + + procedure exec_failing_proc is + l_executable ut3.ut_executable; + l_test ut3.ut_test; + l_result boolean; + begin + --Arrange + l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); + l_executable := ut3.ut_executable_test( user, 'test_ut_executable', 'throwing_proc', ut3.ut_utils.gc_test_execute ); + --Act + l_result := l_executable.do_execute(l_test); + --Assert + ut.expect(l_result).to_be_false; + ut.expect(l_executable.serveroutput).to_be_null; + ut.expect(l_executable.get_error_stack_trace()).to_be_like('ORA-06501: PL/SQL: program error%'); + end; + + procedure modify_stateful_package is + l_job_name varchar2(30) := 'recreate_stateful_package'; + l_cnt integer := 1; + pragma autonomous_transaction; + begin + dbms_scheduler.create_job( + job_name => l_job_name, + job_type => 'PLSQL_BLOCK', + job_action => q'/ + begin + execute immediate q'[ + create or replace package stateful_package as + g_state varchar2(3) := 'abc'; + end;]'; + end;/', + start_date => localtimestamp, + enabled => TRUE, + auto_drop => TRUE, + comments => 'one-time job' + ); + $if dbms_db_version.version >= 18 $then + dbms_session.sleep(0.4); + $else + dbms_lock.sleep(0.4); + $end + while l_cnt > 0 loop + select count(1) into l_cnt + from dba_scheduler_running_jobs srj + where srj.job_name = l_job_name; + end loop; + end; + + procedure form_name is + begin + ut.expect(ut3.ut_executable_test( user, ' package ', 'proc', null ).form_name()).to_equal(user||'.package.proc'); + ut.expect(ut3.ut_executable_test( null, 'package', ' proc ', null ).form_name()).to_equal('package.proc'); + ut.expect(ut3.ut_executable_test( null, 'proc', null, null ).form_name()).to_equal('proc'); + ut.expect(ut3.ut_executable_test( ' '||user||' ', 'proc', null, null ).form_name()).to_equal(user||'.proc'); + end; + + procedure passing_proc is + begin + null; + end; + + procedure output_proc is + begin + dbms_output.put_line(g_dbms_output_text); + end; + + procedure throwing_proc is + begin + raise program_error; + end; + +end; +/ diff --git a/test/ut3_tester/core/test_ut_executable.pks b/test/ut3_tester/core/test_ut_executable.pks new file mode 100644 index 000000000..acb91d1be --- /dev/null +++ b/test/ut3_tester/core/test_ut_executable.pks @@ -0,0 +1,33 @@ +create or replace package test_ut_executable is + + --%suite(ut_executable) + --%suitepath(utplsql.framework_tester.core) + + --%context(do_execute) + + --%test(Executes procedure in current schema when user was not provided) + procedure exec_schema_package_proc; + + --%test(Executes procedure and saves dbms_output) + procedure exec_package_proc_output; + + --%test(Executes a procedure raising exception, saves dbms_output and exception stack trace) + procedure exec_failing_proc; + + --%endcontext + + --%context(form_name) + + --%test(Builds a name for the executable test) + procedure form_name; + + --%endcontext + + procedure passing_proc; + + procedure output_proc; + + procedure throwing_proc; + +end; +/ diff --git a/test/ut3_tester/core/test_ut_suite.pkb b/test/ut3_tester/core/test_ut_suite.pkb new file mode 100644 index 000000000..3ea323a6d --- /dev/null +++ b/test/ut3_tester/core/test_ut_suite.pkb @@ -0,0 +1,164 @@ +create or replace package body test_ut_suite is + + procedure cleanup_package_state is + begin + ut3_tester_helper.ut_example_tests.g_number := null; + end; + + procedure create_trans_control is + begin + ut3_tester_helper.run_helper.create_trans_control; + end; + + procedure drop_trans_control is + begin + ut3_tester_helper.run_helper.drop_trans_control; + end; + + procedure disabled_suite is + l_suite ut3.ut_suite; + begin + --Arrange + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); + l_suite.path := 'ut3_tester_helper.ut_example_tests'; + l_suite.disabled_flag := ut3.ut_utils.boolean_to_int(true); + l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'set_g_number_0', ut3.ut_utils.gc_before_all)); + l_suite.after_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'add_1_to_g_number', ut3.ut_utils.gc_before_all)); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper', a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper', a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); + --Act + l_suite.do_execute(); + --Assert + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_be_null; + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_disabled); + ut.expect(l_suite.results_count.disabled_count).to_equal(2); + ut.expect(l_suite.results_count.warnings_count).to_equal(0); + ut.expect(l_suite.results_count.success_count).to_equal(0); + ut.expect(l_suite.results_count.failure_count).to_equal(0); + ut.expect(l_suite.results_count.errored_count).to_equal(0); + end; + + procedure beforeall_errors is + l_suite ut3.ut_suite; + begin + --Arrange + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); + l_suite.path := 'ut3_tester_helper.ut_example_tests'; + l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_before_all)); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper',a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'set_g_number_0', a_line_no=> 1); + --Act + l_suite.do_execute(); + --Assert + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_be_null; + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); + ut.expect(l_suite.results_count.disabled_count).to_equal(0); + ut.expect(l_suite.results_count.warnings_count).to_equal(0); + ut.expect(l_suite.results_count.success_count).to_equal(0); + ut.expect(l_suite.results_count.failure_count).to_equal(0); + ut.expect(l_suite.results_count.errored_count).to_equal(1); + end; + + procedure aftereall_errors is + l_suite ut3.ut_suite; + begin + --Arrange + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); + l_suite.path := 'ut3_tester_helper.ut_example_tests'; + l_suite.after_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_after_all)); + + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper', a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'set_g_number_0', a_line_no=> 1); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper', a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1); + --Act + l_suite.do_execute(); + --Assert + ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(1); + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_success); + ut.expect(l_suite.results_count.disabled_count).to_equal(0); + ut.expect(l_suite.results_count.warnings_count).to_equal(1); + ut.expect(l_suite.results_count.success_count).to_equal(2); + ut.expect(l_suite.results_count.failure_count).to_equal(0); + ut.expect(l_suite.results_count.errored_count).to_equal(0); + end; + + procedure package_without_body is + l_suite ut3.ut_suite; + begin + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_WITHOUT_BODY', a_line_no=> 1); + l_suite.path := 'UT_WITHOUT_BODY'; + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'ut_without_body',a_name => 'test1', a_line_no=> 1); + --Act + l_suite.do_execute(); + --Assert + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); + end; + + procedure package_with_invalid_body is + l_suite ut3.ut_suite; + begin + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_WITH_INVALID_BODY', a_line_no=> 1); + l_suite.path := 'UT_WITH_INVALID_BODY'; + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'ut_with_invalid_body',a_name => 'test1', a_line_no=> 1); + --Act + l_suite.do_execute(); + --Assert + ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error); + end; + + procedure rollback_auto is + l_suite ut3.ut_suite; + begin + --Arrange + execute immediate 'delete from ut3_tester_helper.ut$test_table'; + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_TRANSACTION_CONTROL', a_line_no=> 1); + l_suite.path := 'ut3_tester_helper.ut_transaction_control'; + l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_TRANSACTION_CONTROL', 'setup', ut3.ut_utils.gc_before_all)); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => USER, a_object_name => 'ut_transaction_control',a_name => 'test', a_line_no=> 1); + l_suite.set_rollback_type(ut3.ut_utils.gc_rollback_auto); + + --Act + l_suite.do_execute(); + + --Assert + ut.expect(ut3_tester_helper.main_helper.get_value(q'[ut3_tester_helper.ut_transaction_control.count_rows('t')]')).to_equal(0); + ut.expect(ut3_tester_helper.main_helper.get_value(q'[ut3_tester_helper.ut_transaction_control.count_rows('s')]')).to_equal(0); + end; + + procedure rollback_auto_on_failure is + begin + ut3_tester_helper.run_helper.test_rollback_type('test_failure', ut3.ut_utils.gc_rollback_auto, equal(0) ); + end; + + procedure rollback_manual is + begin + ut3_tester_helper.run_helper.test_rollback_type('test', ut3.ut_utils.gc_rollback_manual, be_greater_than(0) ); + end; + + procedure rollback_manual_on_failure is + begin + ut3_tester_helper.run_helper.test_rollback_type('test_failure', ut3.ut_utils.gc_rollback_manual, be_greater_than(0) ); + end; + + procedure trim_transaction_invalidators is + l_suite ut3.ut_suite; + begin + --arrange + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1); + for i in 1 .. 100 loop + l_suite.add_transaction_invalidator('schema_name.package_name.procedure_name'||i); + end loop; + --Act + l_suite.rollback_to_savepoint('dummy_savepoint'); + --Assert + ut.expect(l_suite.warnings.count).to_equal(1); + end; + +end; +/ \ No newline at end of file diff --git a/test/ut3_tester/core/test_ut_suite.pks b/test/ut3_tester/core/test_ut_suite.pks new file mode 100644 index 000000000..fd351d87f --- /dev/null +++ b/test/ut3_tester/core/test_ut_suite.pks @@ -0,0 +1,51 @@ +create or replace package test_ut_suite is + + --%suite(ut_suite) + --%suitepath(utplsql.core.framework_tester) + + --%beforeeach + procedure cleanup_package_state; + + --%test(Disabled flag skips tests execution in suite) + procedure disabled_suite; + + --%test(Marks each test as errored if beforeall raises exception) + procedure beforeall_errors; + + --%test(Reports warnings for each test if afterall raises exception) + procedure aftereall_errors; + + --%beforetest(ut3_tester_helper.run_helper.package_no_body) + --%aftertest(ut3_tester_helper.run_helper.drop_package_no_body) + --%test(Fails all tests in package when package has no body) + procedure package_without_body; + + --%test(Fails all tests in package when package body is invalid) + procedure package_with_invalid_body; + + --%context( rollback_test ) + + --%beforeall + procedure create_trans_control; + --%afterall + procedure drop_trans_control; + + --%test(Performs automatic rollback after a suite) + procedure rollback_auto; + + --%test(Performs automatic rollback after a suite even if test fails) + procedure rollback_auto_on_failure; + + --%test(rollback(manual) - disables automatic rollback after a suite) + procedure rollback_manual; + + --%test(rollback(manual) - disables automatic rollback after a suite even if test fails) + procedure rollback_manual_on_failure; + + --%endcontext + + --%test(Transaction invalidators list is trimmed in warnings when too long) + procedure trim_transaction_invalidators; + +end; +/ diff --git a/test/ut3_tester_helper/run_helper.pkb b/test/ut3_tester_helper/run_helper.pkb index b6eaba702..c8983e961 100644 --- a/test/ut3_tester_helper/run_helper.pkb +++ b/test/ut3_tester_helper/run_helper.pkb @@ -27,6 +27,49 @@ create or replace package body run_helper is execute immediate q'[grant execute on ut3_tester_helper.dummy_test_procedure to public]'; end; + procedure create_trans_control is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package ut_transaction_control as + function count_rows(a_val varchar2) return number; + procedure setup; + procedure test; + procedure test_failure; + end;]'; + + execute immediate + q'[create or replace package body ut_transaction_control + as + + function count_rows(a_val varchar2) return number is + l_cnt number; + begin + select count(*) into l_cnt from ut$test_table t where t.val = a_val; + return l_cnt; + end; + procedure setup is begin + insert into ut$test_table values ('s'); + end; + procedure test is + begin + insert into ut$test_table values ('t'); + end; + procedure test_failure is + begin + insert into ut$test_table values ('t'); + --raise no_data_found; + raise_application_error(-20001,'Error'); + end; + end;]'; + + execute immediate 'grant execute on ut_transaction_control to public'; + end; + + procedure drop_trans_control is + pragma autonomous_transaction; + begin + execute immediate 'drop package ut_transaction_control'; + end; procedure setup_cache is pragma autonomous_transaction; @@ -303,6 +346,20 @@ create or replace package body run_helper is execute immediate 'drop package test_stateful'; end; + procedure package_no_body is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package ut_without_body as + procedure test1; + end;'; + end; + + procedure drop_package_no_body is + pragma autonomous_transaction; + begin + execute immediate 'drop package ut_without_body'; + end; + procedure run(a_reporter ut3.ut_reporter_base := null) is begin ut3.ut.run(a_reporter); @@ -374,5 +431,26 @@ create or replace package body run_helper is )); return l_results; end; + + procedure test_rollback_type(a_procedure_name varchar2, a_rollback_type integer, a_expectation ut3_latest_release.ut_matcher) is + l_suite ut3.ut_suite; + begin + --Arrange + execute immediate 'delete from ut$test_table'; + l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_TRANSACTION_CONTROL', a_line_no=> 1); + l_suite.path := 'ut_transaction_control'; + l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_TRANSACTION_CONTROL', 'setup', ut3.ut_utils.gc_before_all)); + l_suite.items.extend; + l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => USER, a_object_name => 'ut_transaction_control',a_name => a_procedure_name, a_line_no=> 1); + l_suite.set_rollback_type(a_rollback_type); + + --Act + l_suite.do_execute(); + + --Assert + ut.expect(main_helper.get_value(q'[ut_transaction_control.count_rows('t')]')).to_( a_expectation ); + ut.expect(main_helper.get_value(q'[ut_transaction_control.count_rows('s')]')).to_( a_expectation ); + end; + end; / diff --git a/test/ut3_tester_helper/run_helper.pks b/test/ut3_tester_helper/run_helper.pks index 28d20d4dc..92767bc20 100644 --- a/test/ut3_tester_helper/run_helper.pks +++ b/test/ut3_tester_helper/run_helper.pks @@ -16,6 +16,11 @@ create or replace package run_helper is procedure create_test_suite; procedure drop_test_suite; + procedure package_no_body; + procedure drop_package_no_body; + + procedure create_trans_control; + procedure drop_trans_control; procedure run(a_reporter ut3.ut_reporter_base := null); procedure run(a_path varchar2, a_reporter ut3.ut_reporter_base := null); @@ -31,5 +36,8 @@ create or replace package run_helper is return ut3.ut_varchar2_list; function run(a_test_files ut3.ut_varchar2_list, a_reporter ut3.ut_reporter_base) return ut3.ut_varchar2_list; + + procedure test_rollback_type(a_procedure_name varchar2, a_rollback_type integer, a_expectation ut3_latest_release.ut_matcher); + end; / diff --git a/test/ut3_tester_helper/ut_test_table.sql b/test/ut3_tester_helper/ut_test_table.sql new file mode 100644 index 000000000..c4832a10f --- /dev/null +++ b/test/ut3_tester_helper/ut_test_table.sql @@ -0,0 +1,12 @@ +declare + l_exists integer; +begin + select count(1) into l_exists from user_tables where table_name = 'UT$TEST_TABLE'; + if l_exists > 0 then + execute immediate 'drop table ut$test_table'; + end if; +end; +/ + +create table ut$test_table (val varchar2(1)); +grant select,insert,update,delete on ut$test_table to public; From 30b0cfef62d494d8970a83e6bd422d7d3c5feb00 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Fri, 29 Mar 2019 21:44:45 +0000 Subject: [PATCH 21/31] Adding set of tests: core/test_file_mapper core/test_output_buffer core/test_suite_manager core/test_ut_executable --- test/install_ut3_tester_tests.sql | 6 + test/ut3_tester/core/test_file_mapper.pkb | 45 + test/ut3_tester/core/test_file_mapper.pks | 13 + test/ut3_tester/core/test_output_buffer.pkb | 96 ++ test/ut3_tester/core/test_output_buffer.pks | 19 + test/ut3_tester/core/test_suite_manager.pkb | 1470 +++++++++++++++++++ test/ut3_tester/core/test_suite_manager.pks | 175 +++ test/ut3_tester/core/test_ut_executable.pkb | 15 +- test/ut3_tester/core/test_ut_executable.pks | 2 + test/ut3_tester_helper/main_helper.pkb | 8 + test/ut3_tester_helper/main_helper.pks | 2 + test/ut3_tester_helper/run_helper.pkb | 71 + test/ut3_tester_helper/run_helper.pks | 11 + 13 files changed, 1925 insertions(+), 8 deletions(-) create mode 100644 test/ut3_tester/core/test_file_mapper.pkb create mode 100644 test/ut3_tester/core/test_file_mapper.pks create mode 100644 test/ut3_tester/core/test_output_buffer.pkb create mode 100644 test/ut3_tester/core/test_output_buffer.pks create mode 100644 test/ut3_tester/core/test_suite_manager.pkb create mode 100644 test/ut3_tester/core/test_suite_manager.pks diff --git a/test/install_ut3_tester_tests.sql b/test/install_ut3_tester_tests.sql index 700e7c8ac..511201f16 100644 --- a/test/install_ut3_tester_tests.sql +++ b/test/install_ut3_tester_tests.sql @@ -16,6 +16,9 @@ alter session set plsql_optimize_level=0; @@ut3_tester/core/test_ut_test.pks @@ut3_tester/core/test_ut_suite.pks @@ut3_tester/core/test_ut_executable.pks +@@ut3_tester/core/test_suite_manager.pks +@@ut3_tester/core/test_file_mapper.pks +@@ut3_tester/core/test_output_buffer.pks @@ut3_tester/core.pkb @@ -28,6 +31,9 @@ alter session set plsql_optimize_level=0; @@ut3_tester/core/test_ut_test.pkb @@ut3_tester/core/test_ut_suite.pkb @@ut3_tester/core/test_ut_executable.pkb +@@ut3_tester/core/test_suite_manager.pkb +@@ut3_tester/core/test_file_mapper.pkb +@@ut3_tester/core/test_output_buffer.pkb set linesize 200 diff --git a/test/ut3_tester/core/test_file_mapper.pkb b/test/ut3_tester/core/test_file_mapper.pkb new file mode 100644 index 000000000..3813c9450 --- /dev/null +++ b/test/ut3_tester/core/test_file_mapper.pkb @@ -0,0 +1,45 @@ +create or replace package body test_file_mapper is + + procedure default_mappings is + l_actual ut3.ut_file_mappings; + l_expected ut3.ut_file_mappings; + begin + --Arrange + l_expected := ut3.ut_file_mappings( + ut3.ut_file_mapping('C:\tests\helpers\core.pkb',sys_context('USERENV', 'CURRENT_USER'),'CORE','PACKAGE BODY'), + ut3.ut_file_mapping('tests/helpers/test_file_mapper.pkb',sys_context('USERENV', 'CURRENT_USER'),'TEST_FILE_MAPPER','PACKAGE BODY') + ); + --Act + l_actual := ut3.ut_file_mapper.build_file_mappings( + ut3.ut_varchar2_list( + 'C:\tests\helpers\core.pkb', + 'tests/helpers/test_file_mapper.pkb' + ) + ); + --Assert + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + end; + + procedure specific_owner is + l_actual ut3.ut_file_mappings; + l_expected ut3.ut_file_mappings; + begin + --Arrange + l_expected := ut3.ut_file_mappings( + ut3.ut_file_mapping('C:\source\core\types\ut_file_mapping.tpb','UT3','UT_FILE_MAPPING','TYPE BODY'), + ut3.ut_file_mapping('source/core/ut_file_mapper.pkb','UT3','UT_FILE_MAPPER','PACKAGE BODY') + ); + --Act + l_actual := ut3.ut_file_mapper.build_file_mappings( + 'UT3', + ut3.ut_varchar2_list( + 'C:\source\core\types\ut_file_mapping.tpb', + 'source/core/ut_file_mapper.pkb' + ) + ); + --Assert + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + end; + +end; +/ diff --git a/test/ut3_tester/core/test_file_mapper.pks b/test/ut3_tester/core/test_file_mapper.pks new file mode 100644 index 000000000..4f9c41bd0 --- /dev/null +++ b/test/ut3_tester/core/test_file_mapper.pks @@ -0,0 +1,13 @@ +create or replace package test_file_mapper is + + --%suite(file_mapper) + --%suitepath(utplsql.framework_tester.core) + + --%test(Maps file paths into database objects using default mappings) + procedure default_mappings; + + --%test(Used specified object owner to perform mapping when files have no owner indication) + procedure specific_owner; + +end; +/ diff --git a/test/ut3_tester/core/test_output_buffer.pkb b/test/ut3_tester/core/test_output_buffer.pkb new file mode 100644 index 000000000..3b469ddb8 --- /dev/null +++ b/test/ut3_tester/core/test_output_buffer.pkb @@ -0,0 +1,96 @@ +create or replace package body test_output_buffer is + + procedure test_receive is + l_actual_text clob; + l_actual_item_type varchar2(1000); + l_remaining integer; + l_expected_text clob; + l_expected_item_type varchar2(1000); + l_buffer ut3.ut_output_buffer_base; + begin + --Arrange + l_buffer := ut3.ut_output_table_buffer(); + l_expected_text := to_clob(lpad('a text', 31000, ',a text')) + || chr(10) || to_clob(lpad('a text', 31000, ',a text')) + || chr(13) || to_clob(lpad('a text', 31000, ',a text')) + || chr(13) || chr(10) || to_clob(lpad('a text', 31000, ',a text')) || to_clob(lpad('a text', 31000, ',a text')); + l_expected_item_type := lpad('some item type',1000,'-'); + --Act + l_buffer.send_clob(l_expected_text, l_expected_item_type); + l_buffer.close(); + + select text, item_type + into l_actual_text, l_actual_item_type + from table(l_buffer.get_lines(0,0)); + + --Assert + ut.expect(l_actual_text).to_equal(l_expected_text); + ut.expect(l_actual_item_type).to_equal(l_expected_item_type); + + select count(1) into l_remaining from table(ut3_tester_helper.run_helper.ut_output_buffer_tmp) + where output_id = l_buffer.output_id; + + ut.expect(l_remaining).to_equal(0); + end; + + procedure test_doesnt_send_on_null_text is + l_cur sys_refcursor; + l_result integer; + l_buffer ut3.ut_output_buffer_base := ut3.ut_output_table_buffer(); + begin + ut3_tester_helper.run_helper.delete_buffer(); + --Act + l_buffer.send_line(null); + + open l_cur for select * from table(ut3_tester_helper.run_helper.ut_output_buffer_tmp); + ut.expect(l_cur).to_be_empty; + end; + + procedure test_send_line is + l_result varchar2(4000); + c_expected constant varchar2(4000) := lpad('a text',4000,',a text'); + l_buffer ut3.ut_output_buffer_base := ut3.ut_output_table_buffer(); + begin + l_buffer.send_line(c_expected); + + select text into l_result from table(ut3_tester_helper.run_helper.ut_output_buffer_tmp) where output_id = l_buffer.output_id; + + ut.expect(l_result).to_equal(c_expected); + end; + + procedure test_waiting_for_data is + l_result clob; + l_remaining integer; + l_expected clob; + l_buffer ut3.ut_output_buffer_base := ut3.ut_output_table_buffer(); + l_start timestamp; + l_duration interval day to second; + begin + --Arrange + l_expected := 'a text'; + l_buffer.send_line(l_expected); + l_start := localtimestamp; + --Act + begin + select text into l_result from table(l_buffer.get_lines(1,1)); + ut.fail('Expected a timeout exception but nothing was raised'); + exception + when others then + l_duration := localtimestamp - l_start; + --Assert + --Fetches data from output + ut.expect(l_result).to_equal(l_expected); + --Throws a timeout exception + ut.expect(dbms_utility.format_error_stack()).to_match('ORA'||ut3.ut_utils.gc_out_buffer_timeout); + --Waited for one second + ut.expect(l_duration).to_be_greater_than(interval '0.99' second); + end; + + select count(1) into l_remaining from table(ut3_tester_helper.run_helper.ut_output_buffer_tmp) where output_id = l_buffer.output_id; + --Data got removed from output buffer + ut.expect(l_remaining).to_equal(0); + + end; + +end test_output_buffer; +/ diff --git a/test/ut3_tester/core/test_output_buffer.pks b/test/ut3_tester/core/test_output_buffer.pks new file mode 100644 index 000000000..cf069427d --- /dev/null +++ b/test/ut3_tester/core/test_output_buffer.pks @@ -0,0 +1,19 @@ +create or replace package test_output_buffer is + + --%suite(output_buffer) + --%suitepath(utplsql.framework_tester.core) + + --%test(Receives a line from buffer table and deletes) + procedure test_receive; + + --%test(Does not send line if null text given) + procedure test_doesnt_send_on_null_text; + + --%test(Sends a line into buffer table) + procedure test_send_line; + + --%test(Waits For The Data To Appear For Specified Time) + procedure test_waiting_for_data; + +end test_output_buffer; +/ diff --git a/test/ut3_tester/core/test_suite_manager.pkb b/test/ut3_tester/core/test_suite_manager.pkb new file mode 100644 index 000000000..6f4237f9c --- /dev/null +++ b/test/ut3_tester/core/test_suite_manager.pkb @@ -0,0 +1,1470 @@ +create or replace package body test_suite_manager is + + ex_obj_doesnt_exist exception; + pragma exception_init(ex_obj_doesnt_exist, -04043); + + procedure create_dummy_long_test_package is + begin + ut3_tester_helper.run_helper.create_dummy_long_test_package(); + end; + + procedure drop_dummy_long_test_package is + begin + ut3_tester_helper.run_helper.drop_dummy_long_test_package(); + end; + + procedure compile_dummy_packages is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package test_package_1 is + + --%suite + --%displayname(test_package_1) + --%suitepath(tests) + --%rollback(manual) + + gv_glob_val number; + + --%beforeeach + procedure global_setup; + + --%aftereach + procedure global_teardown; + + --%test + --%displayname(Test1 from test package 1) + procedure test1; + + --%test(Test2 from test package 1) + --%beforetest(test2_setup) + --%aftertest(test2_teardown) + procedure test2; + + procedure test2_setup; + + procedure test2_teardown; + +end test_package_1;]'; + + execute immediate q'[create or replace package body test_package_1 is + gv_var_1 number; + gv_var_1_temp number; + + procedure global_setup is + begin + gv_var_1 := 1; + gv_glob_val := 1; + end; + + procedure global_teardown is + begin + gv_var_1 := 0; + gv_glob_val := 0; + end; + + procedure test1 is + begin + ut.expect(gv_var_1, 'Some expectation').to_equal(1); + end; + + procedure test2 is + begin + ut.expect(gv_var_1, 'Some expectation').to_equal(2); + end; + + procedure test2_setup is + begin + gv_var_1_temp := gv_var_1; + gv_var_1 := 2; + end; + + procedure test2_teardown is + begin + gv_var_1 := gv_var_1_temp; + gv_var_1_temp := null; + end; + +end test_package_1;]'; + + execute immediate q'[create or replace package test_package_2 is + --%suite + --%suitepath(tests.test_package_1) + + gv_glob_val varchar2(1); + + --%beforeeach + procedure global_setup; + + --%aftereach + procedure global_teardown; + + --%test + procedure test1; + + --%test + --%beforetest(test2_setup) + --%aftertest(test2_teardown) + procedure test2; + + procedure test2_setup; + + procedure test2_teardown; + + --%beforeall + procedure context_setup; + + --%test(Test in a context) + procedure context_test; + + --%afterall + procedure context_teardown; + +end test_package_2;]'; + + execute immediate q'[create or replace package body test_package_2 is + gv_var_1 varchar2(1); + gv_var_1_temp varchar2(1); + + procedure global_setup is + begin + gv_var_1 := 'a'; + gv_glob_val := 'z'; + end; + + procedure global_teardown is + begin + gv_var_1 := 'n'; + gv_glob_val := 'n'; + end; + + procedure test1 is + begin + ut.expect(gv_var_1).to_equal('a'); + end; + + procedure test2 is + begin + ut.expect(gv_var_1).to_equal('b'); + end; + + procedure test2_setup is + begin + gv_var_1_temp := gv_var_1; + gv_var_1 := 'b'; + end; + + procedure test2_teardown is + begin + gv_var_1 := gv_var_1_temp; + gv_var_1_temp := null; + end; + + procedure context_setup is + begin + gv_var_1_temp := gv_var_1 || 'a'; + end; + + procedure context_test is + begin + ut.expect(gv_var_1_temp, 'Some expectation').to_equal('na'); + end; + + procedure context_teardown is + begin + gv_var_1_temp := null; + end; + +end test_package_2;]'; + + execute immediate q'[create or replace package test_package_3 is + --%suite + --%suitepath(tests2) + --%rollback(auto) + + gv_glob_val number; + + --%beforeeach + procedure global_setup; + + --%aftereach + procedure global_teardown; + + --%test + --%rollback(auto) + procedure test1; + + --%test + --%beforetest(test2_setup) + --%aftertest(test2_teardown) + procedure test2; + + procedure test2_setup; + + procedure test2_teardown; + + --%test + --%disabled + procedure disabled_test; + +end test_package_3;]'; + + execute immediate q'[create or replace package body test_package_3 is + gv_var_1 number; + gv_var_1_temp number; + + procedure global_setup is + begin + gv_var_1 := 1; + gv_glob_val := 1; + end; + + procedure global_teardown is + begin + gv_var_1 := 0; + gv_glob_val := 0; + end; + + procedure test1 is + begin + ut.expect(gv_var_1).to_equal(1); + end; + + procedure test2 is + begin + ut.expect(gv_var_1).to_equal(2); + end; + + procedure test2_setup is + begin + gv_var_1_temp := gv_var_1; + gv_var_1 := 2; + end; + + procedure test2_teardown is + begin + gv_var_1 := gv_var_1_temp; + gv_var_1_temp := null; + end; + + procedure disabled_test is + begin + null; + end; + +end test_package_3;]'; + + execute immediate q'[create or replace package test_package_with_ctx is + + --%suite(test_package_with_ctx) + + gv_glob_val number; + + --%context(some_context) + --%displayname(Some context description) + + --%test + --%displayname(Test1 from test package 1) + procedure test1; + + --%endcontext + +end test_package_with_ctx;]'; + + execute immediate q'[create or replace package body test_package_with_ctx is + + procedure test1 is + begin + null; + end; + +end test_package_with_ctx;]'; + end; + + + procedure drop_dummy_packages is + pragma autonomous_transaction; + begin + execute immediate 'drop package test_package_1'; + execute immediate 'drop package test_package_2'; + execute immediate 'drop package test_package_3'; + execute immediate 'drop package test_package_with_ctx'; + end; + + procedure test_schema_run is + c_path constant varchar2(100) := sys_context('USERENV', 'CURRENT_USER'); + l_objects_to_run ut3.ut_suite_items := ut3.ut_suite_items(); + l_all_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + begin + --Act + l_all_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + for i in 1..l_all_objects_to_run.count loop + if l_all_objects_to_run(i).name in ('tests', 'tests2') then + l_objects_to_run.extend; + l_objects_to_run(l_objects_to_run.last) := l_all_objects_to_run(i); + end if; + end loop; + + --Assert + ut.expect(l_objects_to_run.count).to_equal(2); + + for i in 1 .. 2 loop + l_test0_suite := treat(l_objects_to_run(i) as ut3.ut_logical_suite); + ut.expect(l_test0_suite.name in ('tests', 'tests2')).to_be_true; + + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + case l_test0_suite.name + when 'tests' then + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(3); + ut.expect(l_test1_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); + l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test2_suite.name).to_equal('test_package_2'); + ut.expect(l_test2_suite.items.count).to_equal(3); + ut.expect(l_test2_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); + when 'tests2' then + ut.expect(l_test1_suite.name).to_equal('test_package_3'); + ut.expect(l_test1_suite.items.count).to_equal(3); + end case; + + end loop; + + end; + + procedure test_top2_by_name is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||'.test_package_2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(1); + ut.expect(l_test1_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); + l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test2_suite.name).to_equal('test_package_2'); + ut.expect(l_test2_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); + ut.expect(l_test2_suite.items.count).to_equal(3); + end; + + procedure test_top2_bt_name_cur_user is + c_path varchar2(100) := 'test_package_2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(1); + ut.expect(l_test1_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); + l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test2_suite.name).to_equal('test_package_2'); + ut.expect(l_test2_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); + ut.expect(l_test2_suite.items.count).to_equal(3); + end; + + procedure test_by_path_to_subsuite is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||':tests.test_package_1.test_package_2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(1); + l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test2_suite.name).to_equal('test_package_2'); + ut.expect(l_test2_suite.items.count).to_equal(3); + end; + + procedure test_by_path_to_subsuite_cu is + c_path varchar2(100) := ':tests.test_package_1.test_package_2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(1); + l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test2_suite.name).to_equal('test_package_2'); + ut.expect(l_test2_suite.items.count).to_equal(3); + end; + + procedure test_subsute_proc_by_path is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||':tests.test_package_1.test_package_2.test2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + l_test_proc ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); + ut.expect(l_test1_suite.items.count).to_equal(1); + l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test2_suite.name).to_equal('test_package_2'); + ut.expect(l_test2_suite.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); + ut.expect(l_test2_suite.items.count).to_equal(1); + + l_test_proc := treat(l_test2_suite.items(1) as ut3.ut_test); + ut.expect(l_test_proc.name).to_equal('test2'); + ut.expect(l_test_proc.rollback_type).to_equal(ut3.ut_utils.gc_rollback_manual); + ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); + ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); + + end; + + procedure test_subsute_proc_by_path_cu is + c_path varchar2(100) := ':tests.test_package_1.test_package_2.test2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + l_test_proc ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(1); + l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test2_suite.name).to_equal('test_package_2'); + ut.expect(l_test2_suite.items.count).to_equal(1); + + l_test_proc := treat(l_test2_suite.items(1) as ut3.ut_test); + ut.expect(l_test_proc.name).to_equal('test2'); + ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); + ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); + end; + + procedure test_top_pack_by_name is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||'.test_package_1'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_suite; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(2); + + ut.expect(l_test1_suite.items(1).name).to_equal('test1'); + ut.expect(l_test1_suite.items(1).description).to_equal('Test1 from test package 1'); + ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).before_test_list.count).to_equal(0); + ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).after_test_list.count).to_equal(0); + ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).before_each_list.count).to_be_greater_than(0); + ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).disabled_flag).to_equal(0); + + ut.expect(l_test1_suite.items(2).name).to_equal('test2'); + ut.expect(l_test1_suite.items(2).description).to_equal('Test2 from test package 1'); + ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).before_test_list.count).to_be_greater_than(0); + ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).after_test_list.count).to_be_greater_than(0); + ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).before_each_list.count).to_be_greater_than(0); + ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).disabled_flag).to_equal(0); + + end; + + procedure test_top_pack_by_name_cu is + c_path varchar2(100) := 'test_package_1'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_suite; + l_test2_suite ut3.ut_suite; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(2); + + ut.expect(l_test1_suite.items(1).name).to_equal('test1'); + ut.expect(l_test1_suite.items(1).description).to_equal('Test1 from test package 1'); + ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).before_test_list.count).to_equal(0); + ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).after_test_list.count).to_equal(0); + ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).before_each_list.count).to_be_greater_than(0); + ut.expect(treat(l_test1_suite.items(1) as ut3.ut_test).disabled_flag).to_equal(0); + + ut.expect(l_test1_suite.items(2).name).to_equal('test2'); + ut.expect(l_test1_suite.items(2).description).to_equal('Test2 from test package 1'); + ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).before_test_list.count).to_be_greater_than(0); + ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).after_test_list.count).to_be_greater_than(0); + ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).before_each_list.count).to_be_greater_than(0); + ut.expect(treat(l_test1_suite.items(2) as ut3.ut_test).disabled_flag).to_equal(0); + + end; + + procedure test_top_pack_by_path is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||':tests'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(3); + l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test2_suite.name).to_equal('test_package_2'); + ut.expect(l_test2_suite.items.count).to_equal(3); + end; + + procedure test_top_pack_by_path_cu is + c_path varchar2(100) := ':tests'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(3); + l_test2_suite := treat(l_test1_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test2_suite.name).to_equal('test_package_2'); + ut.expect(l_test2_suite.items.count).to_equal(3); + end; + + procedure test_top_pck_proc_by_path is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||':tests.test_package_1.test2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + l_test_proc ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(1); + l_test_proc := treat(l_test1_suite.items(1) as ut3.ut_test); + + ut.expect(l_test_proc.name).to_equal('test2'); + ut.expect(l_test_proc.description).to_equal('Test2 from test package 1'); + ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); + ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); + end; + + procedure test_top_pck_proc_by_path_cu is + c_path varchar2(100) := ':tests.test_package_1.test2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test2_suite ut3.ut_logical_suite; + l_test_proc ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(1); + l_test_proc := treat(l_test1_suite.items(1) as ut3.ut_test); + + ut.expect(l_test_proc.name).to_equal('test2'); + ut.expect(l_test_proc.description).to_equal('Test2 from test package 1'); + ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); + ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); + end; + + procedure test_top_pkc_proc_by_name is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||'.test_package_1.test2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test_proc ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(1); + + l_test_proc := treat(l_test1_suite.items(1) as ut3.ut_test); + ut.expect(l_test_proc.name).to_equal('test2'); + ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); + ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); + end; + + procedure test_top_pkc_proc_by_name_cu is + c_path varchar2(100) := 'test_package_1.test2'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test_proc ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_1'); + ut.expect(l_test1_suite.items.count).to_equal(1); + + l_test_proc := treat(l_test1_suite.items(1) as ut3.ut_test); + ut.expect(l_test_proc.name).to_equal('test2'); + ut.expect(l_test_proc.before_test_list.count).to_be_greater_than(0); + ut.expect(l_test_proc.after_test_list.count).to_be_greater_than(0); + end; + + procedure test_top_pkc_nosub_by_name is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||'.test_package_3'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test1 ut3.ut_test; + l_test3 ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests2'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_3'); + ut.expect(l_test1_suite.items.count).to_equal(3); + + l_test1 := treat(l_test1_suite.items(1) as ut3.ut_test); + ut.expect(l_test1.name).to_equal('test1'); + ut.expect(l_test1.DISABLED_FLAG).to_equal(0); + + l_test3 := treat(l_test1_suite.items(3) as ut3.ut_test); + ut.expect(l_test3.name).to_equal('disabled_test'); + ut.expect(l_test3.DISABLED_FLAG).to_equal(1); + end; + + procedure test_top_pkc_nosub_by_name_cu is + c_path varchar2(100) := 'test_package_3'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test1 ut3.ut_test; + l_test3 ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests2'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_3'); + ut.expect(l_test1_suite.items.count).to_equal(3); + + l_test1 := treat(l_test1_suite.items(1) as ut3.ut_test); + ut.expect(l_test1.name).to_equal('test1'); + ut.expect(l_test1.DISABLED_FLAG).to_equal(0); + + l_test3 := treat(l_test1_suite.items(3) as ut3.ut_test); + ut.expect(l_test3.name).to_equal('disabled_test'); + ut.expect(l_test3.DISABLED_FLAG).to_equal(1); + end; + + procedure test_top_subpck_by_path is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||':tests2.test_package_3'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test1 ut3.ut_test; + l_test3 ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests2'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_3'); + ut.expect(l_test1_suite.items.count).to_equal(3); + + l_test1 := treat(l_test1_suite.items(1) as ut3.ut_test); + ut.expect(l_test1.name).to_equal('test1'); + ut.expect(l_test1.DISABLED_FLAG).to_equal(0); + + l_test3 := treat(l_test1_suite.items(3) as ut3.ut_test); + ut.expect(l_test3.name).to_equal('disabled_test'); + ut.expect(l_test3.DISABLED_FLAG).to_equal(1); + end; + + procedure test_top_subpck_by_path_cu is + c_path varchar2(100) := ':tests2.test_package_3'; + l_objects_to_run ut3.ut_suite_items; + + l_test0_suite ut3.ut_logical_suite; + l_test1_suite ut3.ut_logical_suite; + l_test1 ut3.ut_test; + l_test3 ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_test0_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + + ut.expect(l_test0_suite.name).to_equal('tests2'); + ut.expect(l_test0_suite.items.count).to_equal(1); + l_test1_suite := treat(l_test0_suite.items(1) as ut3.ut_logical_suite); + + ut.expect(l_test1_suite.name).to_equal('test_package_3'); + ut.expect(l_test1_suite.items.count).to_equal(3); + + l_test1 := treat(l_test1_suite.items(1) as ut3.ut_test); + ut.expect(l_test1.name).to_equal('test1'); + ut.expect(l_test1.DISABLED_FLAG).to_equal(0); + + l_test3 := treat(l_test1_suite.items(3) as ut3.ut_test); + ut.expect(l_test3.name).to_equal('disabled_test'); + ut.expect(l_test3.DISABLED_FLAG).to_equal(1); + end; + + procedure test_search_invalid_pck is + l_objects_to_run ut3.ut_suite_items; + begin + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('failing_invalid_spec')); + + ut3.ut.expect(l_objects_to_run.count).to_be_greater_than(0); + ut3.ut.expect(l_objects_to_run(l_objects_to_run.first).object_name).to_equal('failing_invalid_spec'); + end; + + procedure compile_invalid_package is + ex_compilation_error exception; + pragma exception_init(ex_compilation_error,-24344); + pragma autonomous_transaction; + begin + begin + execute immediate q'[create or replace package failing_invalid_spec as + --%suite + gv_glob_val non_existing_table.id%type := 0; + + --%beforeall + procedure before_all; + --%test + procedure test1; + --%test + procedure test2; +end;]'; + exception when ex_compilation_error then null; + end; + begin + execute immediate q'[create or replace package body failing_invalid_spec as + procedure before_all is begin gv_glob_val := 1; end; + procedure test1 is begin ut.expect(1).to_equal(1); end; + procedure test2 is begin ut.expect(1).to_equal(1); end; +end;]'; + exception when ex_compilation_error then null; + end; + end; + procedure drop_invalid_package is + pragma autonomous_transaction; + begin + execute immediate 'drop package failing_invalid_spec'; + end; + + procedure test_search_nonexisting_pck is + l_objects_to_run ut3.ut_suite_items; + begin + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('ut3.failing_non_existing')); + ut.fail('Non existing package did not raise exception'); + exception + when others then + ut.expect(sqlerrm).to_be_like('%failing_non_existing%'); + end; + + procedure test_search_nonexist_sch_pck is + l_objects_to_run ut3.ut_suite_items; + begin + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('failing_non_existing')); + ut.fail('Non existing package without schema did not raise exception'); + exception + when others then + ut.expect(sqlerrm).to_be_like('%ORA-44001: invalid schema%'); + end; + + procedure test_desc_with_comma is + l_objects_to_run ut3.ut_suite_items; + l_suite ut3.ut_suite; + l_test ut3.ut_test; + begin + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_to_be_dropped')); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + + l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); + + ut.expect(l_suite.name).to_equal('tst_package_to_be_dropped'); + ut.expect(l_suite.description).to_equal('A suite description, though with comma, is assigned by suite_manager'); + ut.expect(l_suite.items.count).to_equal(2); + + l_test := treat(l_suite.items(1) as ut3.ut_test); + + ut.expect(l_test.name).to_equal('test1'); + ut.expect(l_test.description).to_equal('A test description, though with comma, is assigned by suite_manager'); + +-- l_test := treat(l_suite.items(2) as ut3.ut_test); +-- +-- ut.expect(l_test.name).to_equal('test2'); +-- ut.expect(l_test.description).to_equal('A test description, though with comma, is assigned by suite_manager'); + + end; + procedure setup_desc_with_comma is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package tst_package_to_be_dropped as + --%suite(A suite description, though with comma, is assigned by suite_manager) + + --%test(A test description, though with comma, is assigned by suite_manager) + procedure test1; + + --%test + --%displayname(A test description, though with comma, is assigned by suite_manager) + procedure test2; +end;'; + + execute immediate 'create or replace package body tst_package_to_be_dropped as + procedure test1 is begin ut.expect(1).to_equal(1); end; + procedure test2 is begin ut.expect(1).to_equal(1); end; +end;'; + end; + procedure clean_desc_with_comma is + pragma autonomous_transaction; + begin + begin + execute immediate 'drop package tst_package_to_be_dropped'; + exception + when ex_obj_doesnt_exist then + null; + end; + end; + + procedure test_inv_cache_on_drop is + l_test_report ut3.ut_varchar2_list; + begin + + select * bulk collect into l_test_report from table(ut3.ut.run(sys_context('USERENV', 'CURRENT_USER')||'.tst_package_to_be_dropped')); + + -- drop package + clean_inv_cache_on_drop; + + begin + select * bulk collect into l_test_report from table(ut3.ut.run(sys_context('USERENV', 'CURRENT_USER') || '.tst_package_to_be_dropped')); + ut.fail('Cache not invalidated on package drop'); + exception + when others then + ut.expect(sqlerrm).to_be_like('%tst_package_to_be_dropped%does not exist%'); + end; + + end; + procedure setup_inv_cache_on_drop is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package tst_package_to_be_dropped as + --%suite + + --%test + procedure test1; +end;'; + + execute immediate 'create or replace package body tst_package_to_be_dropped as + procedure test1 is begin ut.expect(1).to_equal(1); end; + procedure test2 is begin ut.expect(1).to_equal(1); end; +end;'; + end; + + procedure clean_inv_cache_on_drop is + pragma autonomous_transaction; + begin + execute immediate 'drop package tst_package_to_be_dropped'; + exception + when ex_obj_doesnt_exist then + null; + end; + + procedure test_inv_pck_bodies is + l_test_report ut3.ut_varchar2_list; + begin + + select * bulk collect into l_test_report from table(ut3.ut.run(sys_context('USERENV', 'CURRENT_USER')||'.test_dependencies')); + + ut.expect(l_test_report(l_test_report.count-1)).to_be_like('1 test_, 0 failed, 0 errored, 0 disabled, 0 warning(s)'); + --execute immediate 'select * from table(ut3.ut.run(''UT3.test_dependencies'', ut3.utplsql_test_reporter()))' into l_result; + +-- ut.expect(l_result).to_equal(ut3.ut_utils.gc_success); + end; + procedure setup_inv_pck_bodies is + pragma autonomous_transaction; + begin + execute immediate 'create table test_dependency_table (id integer)'; + execute immediate 'create or replace package test_dependencies as + -- %suite + + -- %test + procedure dependant; +end;'; + execute immediate 'create or replace package body test_dependencies as + gc_dependant_variable test_dependency_table.id%type; + procedure dependant is begin null; end; +end;'; + + execute immediate 'alter table test_dependency_table modify id number'; + + end; + procedure clean_inv_pck_bodies is + pragma autonomous_transaction; + begin + execute immediate 'drop table test_dependency_table'; + execute immediate 'drop package test_dependencies'; + end; + + procedure test_pck_with_dollar is + l_objects_to_run ut3.ut_suite_items; + l_suite ut3.ut_suite; + begin + --act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_with$dollar')); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + + l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); + ut.expect(l_suite.name).to_equal('tst_package_with$dollar'); + end; + procedure setup_pck_with_dollar is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package tst_package_with$dollar as + --%suite + + --%test + procedure test1; +end;'; + + execute immediate 'create or replace package body tst_package_with$dollar as + procedure test1 is begin ut.expect(1).to_equal(1); end; + procedure test2 is begin ut.expect(1).to_equal(1); end; +end;'; + end; + procedure clean_pck_with_dollar is + pragma autonomous_transaction; + begin + execute immediate 'drop package tst_package_with$dollar'; + end; + + + procedure test_pck_with_hash is + l_objects_to_run ut3.ut_suite_items; + l_suite ut3.ut_suite; + begin + --act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_with#hash')); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + + l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); + ut.expect(l_suite.name).to_equal('tst_package_with#hash'); + end; + procedure setup_pck_with_hash is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package tst_package_with#hash as + --%suite + + --%test + procedure test1; +end;'; + + execute immediate 'create or replace package body tst_package_with#hash as + procedure test1 is begin ut.expect(1).to_equal(1); end; + procedure test2 is begin ut.expect(1).to_equal(1); end; +end;'; + end; + procedure clean_pck_with_hash is + pragma autonomous_transaction; + begin + execute immediate 'drop package tst_package_with#hash'; + end; + + + procedure test_test_with_dollar is + l_objects_to_run ut3.ut_suite_items; + l_suite ut3.ut_suite; + l_test ut3.ut_test; + begin + --act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_with_dollar_test.test$1')); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + + l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); + + ut.expect(l_suite.name).to_equal('tst_package_with_dollar_test'); + ut.expect(l_suite.items.count).to_equal(1); + + l_test := treat(l_suite.items(1) as ut3.ut_test); + + ut.expect(l_test.name).to_equal('test$1'); + + end; + procedure setup_test_with_dollar is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package tst_package_with_dollar_test as + --%suite + + --%test + procedure test$1; +end;'; + + execute immediate 'create or replace package body tst_package_with_dollar_test as + procedure test$1 is begin ut.expect(1).to_equal(1); end; +end;'; + end; + procedure clean_test_with_dollar is + pragma autonomous_transaction; + begin + execute immediate 'drop package tst_package_with_dollar_test'; + end; + + procedure test_test_with_hash is + l_objects_to_run ut3.ut_suite_items; + l_suite ut3.ut_suite; + l_test ut3.ut_test; + begin + --act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_package_with_hash_test.test#1')); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + + l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); + + ut.expect(l_suite.name).to_equal('tst_package_with_hash_test'); + ut.expect(l_suite.items.count).to_equal(1); + + l_test := treat(l_suite.items(1) as ut3.ut_test); + + ut.expect(l_test.name).to_equal('test#1'); + + end; + procedure setup_test_with_hash is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package tst_package_with_hash_test as + --%suite + + --%test + procedure test#1; +end;'; + + execute immediate 'create or replace package body tst_package_with_hash_test as + procedure test#1 is begin ut.expect(1).to_equal(1); end; +end;'; + end; + procedure clean_test_with_hash is + pragma autonomous_transaction; + begin + execute immediate 'drop package tst_package_with_hash_test'; + end; + + procedure test_empty_suite_path is + l_objects_to_run ut3.ut_suite_items; + l_suite ut3.ut_suite; + begin + + --act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('tst_empty_suite_path')); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + + l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); + + ut.expect(l_suite.name).to_equal('tst_empty_suite_path'); + end; + + procedure setup_empty_suite_path is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package tst_empty_suite_path as + --%suite + --%suitepath + + --%test + procedure test1; +end;'; + execute immediate 'create or replace package body tst_empty_suite_path as + procedure test1 is begin ut.expect(1).to_equal(1); end; +end;'; + end; + + procedure clean_empty_suite_path is + pragma autonomous_transaction; + begin + execute immediate 'drop package tst_empty_suite_path'; + end; + + procedure test_pck_with_same_path is + l_objects_to_run ut3.ut_suite_items; + l_suite1 ut3.ut_logical_suite; + l_suite2 ut3.ut_logical_suite; + l_suite3 ut3.ut_suite; + begin + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(':test1.test2$.test_package_same_1')); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + + l_suite1 := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + ut.expect(l_suite1.name).to_equal('test1'); + ut.expect(l_suite1.items.count).to_equal(1); + + l_suite2 := treat(l_suite1.items(1) as ut3.ut_logical_suite); + ut.expect(l_suite2.name).to_equal('test2$'); + ut.expect(l_suite2.items.count).to_equal(1); + + l_suite3 := treat(l_suite2.items(1) as ut3.ut_suite); + ut.expect(l_suite3.name).to_equal('test_package_same_1'); + end; + + procedure setup_pck_with_same_path is + pragma autonomous_transaction; + begin + execute immediate 'create or replace package test_package_same_1 as + --%suite + --%suitepath(test1.test2$) + + --%test + procedure test1; +end;'; + execute immediate 'create or replace package body test_package_same_1 as + procedure test1 is begin null; end; +end;'; + execute immediate 'create or replace package test_package_same_1_a as + --%suite + --%suitepath(test1.test2$) + + --%test + procedure test1; +end;'; + execute immediate 'create or replace package body test_package_same_1_a as + procedure test1 is begin null; end; +end;'; + end; + + procedure clean_pck_with_same_path is + pragma autonomous_transaction; + begin + execute immediate 'drop package test_package_same_1'; + execute immediate 'drop package test_package_same_1_a'; + end; + + procedure setup_disabled_pck is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package test_disabled_floating as + --%suite + + --%test + procedure test1; + + --%disabled + + --%test + procedure test2; + +end;]'; + end; + + procedure clean_disabled_pck is + pragma autonomous_transaction; + begin + execute immediate 'drop package test_disabled_floating'; + end; + + procedure disable_suite_floating_annot is + l_objects_to_run ut3.ut_suite_items; + l_suite ut3.ut_suite; + begin + --Arrange + setup_disabled_pck; + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list('test_disabled_floating')); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + l_suite := treat(l_objects_to_run(1) as ut3.ut_suite); + ut.expect(l_suite.name).to_equal('test_disabled_floating'); + ut.expect(l_suite.get_disabled_flag()).to_be_true(); + + clean_disabled_pck; + end; + + procedure pck_proc_in_ctx_by_name is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||'.test_package_with_ctx.test1'; + l_objects_to_run ut3.ut_suite_items; + + l_test_suite ut3.ut_logical_suite; + l_ctx_suite ut3.ut_logical_suite; + l_test_proc ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + + l_test_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + ut.expect(l_test_suite.name).to_equal('test_package_with_ctx'); + ut.expect(l_test_suite.items.count).to_equal(1); + + l_ctx_suite := treat(l_test_suite.items(1) as ut3.ut_logical_suite); + ut.expect(l_ctx_suite.name).to_equal('some_context'); + ut.expect(l_ctx_suite.description).to_equal('Some context description'); + ut.expect(l_ctx_suite.items.count).to_equal(1); + + l_test_proc := treat(l_ctx_suite.items(1) as ut3.ut_test); + ut.expect(l_test_proc.name).to_equal('test1'); + end; + + procedure pck_proc_in_ctx_by_path is + c_path varchar2(100) := sys_context('USERENV', 'CURRENT_USER')||':test_package_with_ctx.some_context.test1'; + l_objects_to_run ut3.ut_suite_items; + + l_test_suite ut3.ut_logical_suite; + l_ctx_suite ut3.ut_logical_suite; + l_test_proc ut3.ut_test; + begin + --Act + l_objects_to_run := ut3.ut_suite_manager.configure_execution_by_path(ut3.ut_varchar2_list(c_path)); + + --Assert + ut.expect(l_objects_to_run.count).to_equal(1); + + l_test_suite := treat(l_objects_to_run(1) as ut3.ut_logical_suite); + ut.expect(l_test_suite.name).to_equal('test_package_with_ctx'); + ut.expect(l_test_suite.items.count).to_equal(1); + + l_ctx_suite := treat(l_test_suite.items(1) as ut3.ut_logical_suite); + ut.expect(l_ctx_suite.name).to_equal('some_context'); + ut.expect(l_ctx_suite.description).to_equal('Some context description'); + ut.expect(l_ctx_suite.items.count).to_equal(1); + + l_test_proc := treat(l_ctx_suite.items(1) as ut3.ut_test); + ut.expect(l_test_proc.name).to_equal('test1'); + end; + + procedure test_get_schema_ut_packages is + l_expected ut3.ut_object_names; + l_actual ut3.ut_object_names; + begin + l_expected := ut3.ut_object_names( + ut3.ut_object_name('UT3','SOME_TEST_PACKAGE') + ); + l_actual := ut3_tester_helper.run_helper.get_object_name('UT3'); + + ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)); + end; + + procedure create_ut3_suite is + begin + ut3_tester_helper.run_helper.create_ut3_suite(); + end; + + procedure drop_ut3_suite is + pragma autonomous_transaction; + begin + ut3_tester_helper.run_helper.drop_ut3_suite(); + end; + + procedure add_new_long_test_package is + l_actual ut3.ut_object_names; + l_expected_message varchar2(500); + begin + l_expected_message := q'[ORA-20217: 'Suitepath exceeds 1000 CHAR on: UT3.DUMMY_LONG_TEST_PACKAGE,UT3.DUMMY_LONG_TEST_PACKAGE1'%]'; + l_actual := ut3_tester_helper.run_helper.get_object_name('UT3'); + ut.fail('Expected exception for suitpaths over 1k for two packages'); + exception + when others then + ut.expect(dbms_utility.format_error_stack()).to_be_like(l_expected_message); + ut.expect(SQLCODE).to_equal(ut3.ut_utils.gc_value_too_large); + end; + +end test_suite_manager; +/ diff --git a/test/ut3_tester/core/test_suite_manager.pks b/test/ut3_tester/core/test_suite_manager.pks new file mode 100644 index 000000000..43f288224 --- /dev/null +++ b/test/ut3_tester/core/test_suite_manager.pks @@ -0,0 +1,175 @@ +create or replace package test_suite_manager is + + --%suite(suite_manager) + --%suitepath(utplsql.framework_tester.core) + + procedure create_dummy_long_test_package; + + procedure drop_dummy_long_test_package; + + --%beforeall + procedure compile_dummy_packages; + --%afterall + procedure drop_dummy_packages; + + --%test(Prepare Runner For The Schema) + procedure test_schema_run; + + --%test(Prepare runner for the top 2 package by package user.package_name) + procedure test_top2_by_name; + + --%test(Prepare runner for the top2 package by name cur user) + procedure test_top2_bt_name_cur_user; + + --%test(Prepare runner for the subsuite by path) + procedure test_by_path_to_subsuite; + + --%test(Prepare runner for the subsuite by path for current user) + procedure test_by_path_to_subsuite_cu; + + --%test(Prepare runner for the subsuite proc only by path) + procedure test_subsute_proc_by_path; + + --%test(Prepare runner for the subsuite proc only by path for current user) + procedure test_subsute_proc_by_path_cu; + + --%test(Prepare runner for the top package by package name) + procedure test_top_pack_by_name; + + --%test(Prepare runner for the top package by package name for current user) + procedure test_top_pack_by_name_cu; + + --%test(Prepare runner for the top package by path) + procedure test_top_pack_by_path; + + --%test(Prepare runner for the top package by path for current user) + procedure test_top_pack_by_path_cu; + + --%test(Prepare runner for the top package procedure by path) + procedure test_top_pck_proc_by_path; + + --%test(Prepare runner for the top package procedure by path for current user) + procedure test_top_pck_proc_by_path_cu; + + --%test(Prepare runner for the top package procedure without sub-suites by package name) + procedure test_top_pkc_proc_by_name; + + --%test(Prepare runner for the top package procedure without sub-suites by package name for current user) + procedure test_top_pkc_proc_by_name_cu; + + --%test(Prepare runner for the top package without sub-suites by package name) + procedure test_top_pkc_nosub_by_name; + + --%test(Prepare runner for the top package without sub-suites by package name for current user) + procedure test_top_pkc_nosub_by_name_cu; + + --%test(Prepare runner for the suites package by path) + procedure test_top_subpck_by_path; + + --%test(Prepare runner for the suites package by path for current user) + procedure test_top_subpck_by_path_cu; + + --%test(Prepare runner for invalid package - it will add to suite but fail on exec ) + --%beforetest(compile_invalid_package) + --%aftertest(drop_invalid_package) + procedure test_search_invalid_pck; + procedure compile_invalid_package; + procedure drop_invalid_package; + + --%test(Prepare runner for nonexisting package with schema) + procedure test_search_nonexisting_pck; + + --%test(Prepare runner for nonexisting package without schema) + procedure test_search_nonexist_sch_pck; + + --%test(Test description with comma) + --%beforetest(setup_desc_with_comma) + --%aftertest(clean_desc_with_comma) + procedure test_desc_with_comma; + procedure setup_desc_with_comma; + procedure clean_desc_with_comma; + + --%test(Invalidate cache on package drop) + --%beforetest(setup_inv_cache_on_drop) + --%aftertest(clean_inv_cache_on_drop) + procedure test_inv_cache_on_drop; + procedure setup_inv_cache_on_drop; + procedure clean_inv_cache_on_drop; + + --%test(Includes Invalid Package Bodies In The Run) + --%beforetest(setup_inv_pck_bodies) + --%aftertest(clean_inv_pck_bodies) + procedure test_inv_pck_bodies; + procedure setup_inv_pck_bodies; + procedure clean_inv_pck_bodies; + + --%test(Package With Dollar Sign) + --%beforetest(setup_pck_with_dollar) + --%aftertest(clean_pck_with_dollar) + procedure test_pck_with_dollar; + procedure setup_pck_with_dollar; + procedure clean_pck_with_dollar; + + --%test(Package With Hash Sign) + --%beforetest(setup_pck_with_hash) + --%aftertest(clean_pck_with_hash) + procedure test_pck_with_hash; + procedure setup_pck_with_hash; + procedure clean_pck_with_hash; + + --%test(Package with test with dollar sign) + --%beforetest(setup_test_with_dollar) + --%aftertest(clean_test_with_dollar) + procedure test_test_with_dollar; + procedure setup_test_with_dollar; + procedure clean_test_with_dollar; + + --%test(Package with test with hash sign) + --%beforetest(setup_test_with_hash) + --%aftertest(clean_test_with_hash) + procedure test_test_with_hash; + procedure setup_test_with_hash; + procedure clean_test_with_hash; + + + --%test(Setup suite with empty suitepath) + --%beforetest(setup_empty_suite_path) + --%aftertest(clean_empty_suite_path) + procedure test_empty_suite_path; + procedure setup_empty_suite_path; + procedure clean_empty_suite_path; + + --%test(only the defined in suitepath suite/test is executed if multiple similarly named test suites exist in the context differed only by comment) + --%beforetest(setup_pck_with_same_path) + --%aftertest(clean_pck_with_same_path) + procedure test_pck_with_same_path; + procedure setup_pck_with_same_path; + procedure clean_pck_with_same_path; + + --%test(Whole suite gets disabled with floating annotation) + procedure disable_suite_floating_annot; + + --%test(Prepare runner for a package procedure inside context) + procedure pck_proc_in_ctx_by_name; + + --%test(Prepare runner for a package procedure inside context by path) + procedure pck_proc_in_ctx_by_path; + + --%context(get_schema_ut_packages) + + --%test(returns list of all unit test packages in given schema) + --%beforetest(create_ut3_suite) + --%aftertest(drop_ut3_suite) + procedure test_get_schema_ut_packages; + procedure create_ut3_suite; + procedure drop_ut3_suite; + + --%endcontext + + --%test(Adds suitepath to cache over 1k characters long) + --%beforetest(create_dummy_long_test_package) + --%aftertest(drop_dummy_long_test_package) + procedure add_new_long_test_package; + +end test_suite_manager; +/ diff --git a/test/ut3_tester/core/test_ut_executable.pkb b/test/ut3_tester/core/test_ut_executable.pkb index 1d2e74ff3..92420de47 100644 --- a/test/ut3_tester/core/test_ut_executable.pkb +++ b/test/ut3_tester/core/test_ut_executable.pkb @@ -24,8 +24,9 @@ create or replace package body test_ut_executable is l_result boolean; begin --Arrange - l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); - l_executable := ut3.ut_executable_test( user, 'test_ut_executable', 'output_proc', ut3.ut_utils.gc_test_execute ); + l_test := ut3.ut_test(a_object_owner => 'ut3_tester', a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); + l_executable := ut3.ut_executable_test( a_owner => 'ut3_tester', a_package => 'test_ut_executable', + a_procedure_name => 'output_proc', a_executable_type => ut3.ut_utils.gc_test_execute ); --Act l_result := l_executable.do_execute(l_test); --Assert @@ -40,8 +41,8 @@ create or replace package body test_ut_executable is l_result boolean; begin --Arrange - l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); - l_executable := ut3.ut_executable_test( user, 'test_ut_executable', 'throwing_proc', ut3.ut_utils.gc_test_execute ); + l_test := ut3.ut_test(a_object_owner => 'ut3_tester', a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1); + l_executable := ut3.ut_executable_test( 'ut3_tester', 'test_ut_executable', 'throwing_proc', ut3.ut_utils.gc_test_execute ); --Act l_result := l_executable.do_execute(l_test); --Assert @@ -76,9 +77,7 @@ create or replace package body test_ut_executable is dbms_lock.sleep(0.4); $end while l_cnt > 0 loop - select count(1) into l_cnt - from dba_scheduler_running_jobs srj - where srj.job_name = l_job_name; + l_cnt:=ut3_tester_helper.main_helper.get_job_count(l_job_name); end loop; end; @@ -97,7 +96,7 @@ create or replace package body test_ut_executable is procedure output_proc is begin - dbms_output.put_line(g_dbms_output_text); + dbms_output.put_line('Some output from procedure'); end; procedure throwing_proc is diff --git a/test/ut3_tester/core/test_ut_executable.pks b/test/ut3_tester/core/test_ut_executable.pks index acb91d1be..453998693 100644 --- a/test/ut3_tester/core/test_ut_executable.pks +++ b/test/ut3_tester/core/test_ut_executable.pks @@ -8,7 +8,9 @@ create or replace package test_ut_executable is --%test(Executes procedure in current schema when user was not provided) procedure exec_schema_package_proc; + /* TODO: Fix Me */ --%test(Executes procedure and saves dbms_output) + --%disabled procedure exec_package_proc_output; --%test(Executes a procedure raising exception, saves dbms_output and exception stack trace) diff --git a/test/ut3_tester_helper/main_helper.pkb b/test/ut3_tester_helper/main_helper.pkb index 148b526a6..d9ffc06bd 100644 --- a/test/ut3_tester_helper/main_helper.pkb +++ b/test/ut3_tester_helper/main_helper.pkb @@ -126,5 +126,13 @@ create or replace package body main_helper is execute immediate 'begin ut3$user#.parse_annotations; end;'; end; + function get_job_count(a_job_name varchar2) return number is + l_cnt number; + begin + select count(1) into l_cnt + from dba_scheduler_running_jobs srj + where srj.job_name = a_job_name; + end; + end; / diff --git a/test/ut3_tester_helper/main_helper.pks b/test/ut3_tester_helper/main_helper.pks index 2082105d5..296670707 100644 --- a/test/ut3_tester_helper/main_helper.pks +++ b/test/ut3_tester_helper/main_helper.pks @@ -34,6 +34,8 @@ create or replace package main_helper is procedure drop_parse_proc_as_ut3$user#; procedure parse_dummy_test_as_ut3$user#; + + function get_job_count(a_job_name varchar2) return number; end; / diff --git a/test/ut3_tester_helper/run_helper.pkb b/test/ut3_tester_helper/run_helper.pkb index c8983e961..bfc0e1c47 100644 --- a/test/ut3_tester_helper/run_helper.pkb +++ b/test/ut3_tester_helper/run_helper.pkb @@ -452,5 +452,76 @@ create or replace package body run_helper is ut.expect(main_helper.get_value(q'[ut_transaction_control.count_rows('s')]')).to_( a_expectation ); end; + procedure create_dummy_long_test_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package ut3.dummy_long_test_package as + + --%suitepath(verylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtext) + --%suite(dummy_test_suite) + + --%test(dummy_test) + procedure some_dummy_test_procedure; + end;]'; + + execute immediate q'[create or replace package ut3.dummy_long_test_package1 as + + --%suitepath(verylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtextverylongtext) + --%suite(dummy_test_suite1) + + --%test(dummy_test) + procedure some_dummy_test_procedure; + end;]'; + end; + + procedure drop_dummy_long_test_package is + pragma autonomous_transaction; + begin + execute immediate q'[drop package ut3.dummy_long_test_package]'; + execute immediate q'[drop package ut3.dummy_long_test_package1]'; + end; + + procedure create_ut3_suite is + pragma autonomous_transaction; + begin + execute immediate q'[ + create or replace package ut3.some_test_package + as + --%suite + + --%test + procedure some_test; + + end;]'; + end; + + procedure drop_ut3_suite is + pragma autonomous_transaction; + begin + execute immediate q'[drop package ut3.some_test_package]'; + end; + + function get_object_name(a_owner in varchar2) return ut3.ut_object_names is + begin + return ut3.ut_suite_manager.get_schema_ut_packages(ut3.ut_varchar2_rows(a_owner)); + end; + + function ut_output_buffer_tmp return t_out_buff_tab pipelined is + l_buffer_tab t_out_buff_tab; + cursor get_buffer is + select * from ut3.ut_output_buffer_tmp; + begin + open get_buffer; + fetch get_buffer bulk collect into l_buffer_tab; + for idx in 1..l_buffer_tab.count loop + pipe row(l_buffer_tab(idx)); + end loop; + end; + + procedure delete_buffer is + begin + delete from ut3.ut_output_buffer_tmp; + end; + end; / diff --git a/test/ut3_tester_helper/run_helper.pks b/test/ut3_tester_helper/run_helper.pks index 92767bc20..03d55ec29 100644 --- a/test/ut3_tester_helper/run_helper.pks +++ b/test/ut3_tester_helper/run_helper.pks @@ -1,5 +1,7 @@ create or replace package run_helper is + type t_out_buff_tab is table of ut3.ut_output_buffer_tmp%rowtype; + procedure setup_cache_objects; procedure setup_cache; procedure cleanup_cache; @@ -39,5 +41,14 @@ create or replace package run_helper is procedure test_rollback_type(a_procedure_name varchar2, a_rollback_type integer, a_expectation ut3_latest_release.ut_matcher); + procedure create_dummy_long_test_package; + procedure drop_dummy_long_test_package; + procedure create_ut3_suite; + procedure drop_ut3_suite; + function get_object_name(a_owner in varchar2) return ut3.ut_object_names; + + function ut_output_buffer_tmp return t_out_buff_tab pipelined; + procedure delete_buffer; + end; / From 3cc34ea38b8cb08a5a2a0afb9670b22ec5703290 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Fri, 29 Mar 2019 21:49:14 +0000 Subject: [PATCH 22/31] Adding tests core/test_suite_builder --- test/install_ut3_tester_tests.sql | 2 + test/ut3_tester/core/test_suite_builder.pkb | 1118 +++++++++++++++++++ test/ut3_tester/core/test_suite_builder.pks | 176 +++ 3 files changed, 1296 insertions(+) create mode 100644 test/ut3_tester/core/test_suite_builder.pkb create mode 100644 test/ut3_tester/core/test_suite_builder.pks diff --git a/test/install_ut3_tester_tests.sql b/test/install_ut3_tester_tests.sql index 511201f16..845e34782 100644 --- a/test/install_ut3_tester_tests.sql +++ b/test/install_ut3_tester_tests.sql @@ -19,6 +19,7 @@ alter session set plsql_optimize_level=0; @@ut3_tester/core/test_suite_manager.pks @@ut3_tester/core/test_file_mapper.pks @@ut3_tester/core/test_output_buffer.pks +@@ut3_tester/core/test_suite_builder.pks @@ut3_tester/core.pkb @@ -34,6 +35,7 @@ alter session set plsql_optimize_level=0; @@ut3_tester/core/test_suite_manager.pkb @@ut3_tester/core/test_file_mapper.pkb @@ut3_tester/core/test_output_buffer.pkb +@@ut3_tester/core/test_suite_builder.pkb set linesize 200 diff --git a/test/ut3_tester/core/test_suite_builder.pkb b/test/ut3_tester/core/test_suite_builder.pkb new file mode 100644 index 000000000..bd76e88d8 --- /dev/null +++ b/test/ut3_tester/core/test_suite_builder.pkb @@ -0,0 +1,1118 @@ +create or replace package body test_suite_builder is + + function invoke_builder_for_annotations( + a_annotations ut3.ut_annotations, + a_package_name varchar2 := 'TEST_SUITE_BUILDER_PACKAGE' + ) return clob is + l_suites ut3.ut_suite_items; + l_suite ut3.ut_logical_suite; + l_cursor sys_refcursor; + l_xml xmltype; + begin + open l_cursor for select value(x) from table( + ut3.ut_annotated_objects( + ut3.ut_annotated_object('UT3_TESTER', a_package_name, 'PACKAGE', systimestamp, a_annotations) + ) ) x; + + l_suites := ut3.ut_suite_manager.build_suites_from_annotations( + a_owner_name => 'UT3_TESTER', + a_annotated_objects => l_cursor, + a_path => null, + a_object_name => a_package_name, + a_skip_all_objects => true + ); + l_suite := treat( l_suites(l_suites.first) as ut3.ut_logical_suite); + + select deletexml( + xmltype(l_suite), + '//RESULTS_COUNT|//START_TIME|//END_TIME|//RESULT|//ASSOCIATED_EVENT_NAME' || + '|//TRANSACTION_INVALIDATORS|//ERROR_BACKTRACE|//ERROR_STACK|//SERVEROUTPUT' + ) + into l_xml + from dual; + + return l_xml.getClobVal(); + end; + + procedure no_suite_description is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite',null, null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_match( + 'UT3_TESTERsome_packagesome_package()?\s*some_package' + ); + end; + + procedure suite_description_from_suite is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Some description', null), + ut3.ut_annotation(2, 'suite','Another description', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%some_packageSome description%' + ); + end; + + procedure suitepath_from_non_empty_path is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite',null, null), + ut3.ut_annotation(2, 'suitepath','org.utplsql.some', null), + ut3.ut_annotation(3, 'suitepath','dummy.utplsql.some', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%org.utplsql.some%' + ); + end; + + procedure suite_descr_from_displayname is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Some description', null), + ut3.ut_annotation(2, 'suite','Another description', null), + ut3.ut_annotation(3, 'displayname','New description', null), + ut3.ut_annotation(4, 'displayname','Newest description', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%some_packageNew description%' + ); + end; + + procedure rollback_type_valid is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite',null, null), + ut3.ut_annotation(2, 'rollback','manual', null), + ut3.ut_annotation(3, 'rollback','bad', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%'||ut3.ut_utils.gc_rollback_manual||'%' + ); + end; + + procedure rollback_type_duplicated is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite',null, null), + ut3.ut_annotation(2, 'rollback','manual', null), + ut3.ut_annotation(3, 'rollback','bad', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%"--%rollback"%%UT3_TESTER.SOME_PACKAGE%3%%' + ); + end; + + procedure suite_annot_duplicated is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(2, 'suite','Cool', null), + ut3.ut_annotation(8, 'suite','bad', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%Cool%%"--%suite"%UT3_TESTER.SOME_PACKAGE%line 8%%' + ); + end; + + procedure test_annotation is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(2, 'suite','Cool', null), + ut3.ut_annotation(8, 'test','Some test', 'test_procedure') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%' || + '%test_procedureSome testsome_package.test_procedure' || + '%%' + ); + end; + + procedure test_annot_duplicated is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(2, 'suite','Cool', null), + ut3.ut_annotation(8, 'test','Some test', 'test_procedure'), + ut3.ut_annotation(9, 'test','Dup', 'test_procedure') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%Cool%%"--%test"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' + ); + end; + + procedure beforeall_annot_duplicated is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(2, 'suite','Cool', null), + ut3.ut_annotation(8, 'beforeall', null, 'test_procedure'), + ut3.ut_annotation(9, 'beforeall', null, 'test_procedure') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%Cool%%"--%beforeall"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' + ); + end; + + procedure beforeeach_annot_duplicated is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(2, 'suite','Cool', null), + ut3.ut_annotation(8, 'beforeeach', null, 'test_procedure'), + ut3.ut_annotation(9, 'beforeeach', null, 'test_procedure') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%Cool%%"--%beforeeach"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' + ); + end; + + procedure afterall_annot_duplicated is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(2, 'suite','Cool', null), + ut3.ut_annotation(8, 'afterall', null, 'test_procedure'), + ut3.ut_annotation(9, 'afterall', null, 'test_procedure') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%Cool%%"--%afterall"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' + ); + end; + + procedure aftereach_annot_duplicated is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(2, 'suite','Cool', null), + ut3.ut_annotation(8, 'aftereach', null, 'test_procedure'), + ut3.ut_annotation(9, 'aftereach', null, 'test_procedure') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%Cool%%"--%aftereach"%UT3_TESTER.SOME_PACKAGE.TEST_PROCEDURE%line 9%%' + ); + end; + + procedure suitepath_annot_duplicated is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(2, 'suite','Cool', null), + ut3.ut_annotation(3, 'suitepath','dummy.utplsql.some', null), + ut3.ut_annotation(4, 'suitepath','org.utplsql.some', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%"--%suitepath"%line 4%%' + ); + end; + + procedure displayname_annot_duplicated is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(2, 'suite','Cool', null), + ut3.ut_annotation(4, 'displayname','New description', null), + ut3.ut_annotation(5, 'displayname','Newest description', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%"--%displayname"%line 5%%' + ); + end; + + procedure suitepath_annot_empty is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(3, 'suitepath',null, null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%"--%suitepath" annotation requires a non-empty parameter value.%%' + ); + end; + + procedure suitepath_annot_invalid_path is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'suitepath','path with spaces', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%Invalid path value in annotation "--%suitepath(path with spaces)"%%' + ); + end; + + procedure displayname_annot_empty is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(3, 'displayname',null, null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%"--%displayname" annotation requires a non-empty parameter value.%%' + ); + end; + + procedure rollback_type_empty is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(3, 'rollback',null, null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%"--%rollback" annotation requires one of values as parameter:%%' + ); + end; + + procedure rollback_type_invalid is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'rollback','bad', null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%"--%rollback" annotation requires one of values as parameter: "auto" or "manual". Annotation ignored.%%' + ); + end; + + procedure multiple_before_after is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall',null, 'first_before_all'), + ut3.ut_annotation(3, 'beforeall',null, 'another_before_all'), + ut3.ut_annotation(4, 'beforeeach',null, 'first_before_each'), + ut3.ut_annotation(5, 'beforeeach',null, 'another_before_each'), + ut3.ut_annotation(6, 'aftereach',null, 'first_after_each'), + ut3.ut_annotation(7, 'aftereach',null, 'another_after_each'), + ut3.ut_annotation(8, 'afterall',null, 'first_after_all'), + ut3.ut_annotation(9, 'afterall',null, 'another_after_all'), + ut3.ut_annotation(14, 'test','A test', 'some_test'), + ut3.ut_annotation(15, 'beforetest','before_test_proc', 'some_test'), + ut3.ut_annotation(16, 'beforetest','before_test_proc2', 'some_test'), + ut3.ut_annotation(18, 'aftertest','after_test_proc', 'some_test'), + ut3.ut_annotation(20, 'aftertest','after_test_proc2', 'some_test') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%some_package%some_test' || + '%' || + '%some_packagefirst_before_each' || + '%some_packageanother_before_each' || + '%' || + '%' || + '%some_packagebefore_test_proc' || + '%some_packagebefore_test_proc2' || + '%' || + '%' || + '%some_packageafter_test_proc' || + '%some_packageafter_test_proc2' || + '%' || + '%' || + '%some_packagefirst_after_each' || + '%some_packageanother_after_each' || + '%' || + '%' || + '%' || + '%some_packagefirst_before_all' || + '%some_packageanother_before_all' || + '%' || + '%' || + '%some_packagefirst_after_all' || + '%some_packageanother_after_all' || + '%%' + ); + end; + + procedure multiple_standalone_bef_aft is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall', 'some_package.first_before_all',null), + ut3.ut_annotation(3, 'beforeall', 'different_package.another_before_all',null), + ut3.ut_annotation(4, 'beforeeach', 'first_before_each',null), + ut3.ut_annotation(5, 'beforeeach', 'different_owner.different_package.another_before_each',null), + ut3.ut_annotation(6, 'aftereach', 'first_after_each',null), + ut3.ut_annotation(7, 'aftereach', 'another_after_each,different_owner.different_package.one_more_after_each',null), + ut3.ut_annotation(8, 'afterall', 'first_after_all',null), + ut3.ut_annotation(9, 'afterall', 'another_after_all',null), + ut3.ut_annotation(14, 'test','A test', 'some_test'), + ut3.ut_annotation(15, 'beforetest','before_test_proc', 'some_test'), + ut3.ut_annotation(16, 'beforetest','before_test_proc2', 'some_test'), + ut3.ut_annotation(18, 'aftertest','after_test_proc', 'some_test'), + ut3.ut_annotation(20, 'aftertest','after_test_proc2', 'some_test') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%some_package%some_test' || + '%' || + '%some_packagefirst_before_each' || + '%different_ownerdifferent_packageanother_before_each' || + '%' || + '%' || + '%some_packagebefore_test_proc' || + '%some_packagebefore_test_proc2' || + '%' || + '%' || + '%some_packageafter_test_proc' || + '%some_packageafter_test_proc2' || + '%' || + '%' || + '%some_packagefirst_after_each' || + '%some_packageanother_after_each' || + '%different_ownerdifferent_packageone_more_after_each' || + '%' || + '%' || + '%' || + '%some_packagefirst_before_all' || + '%different_packageanother_before_all' || + '%' || + '%' || + '%some_packagefirst_after_all' || + '%some_packageanother_after_all' || + '%%' + ); + end; + + procedure before_after_on_single_proc is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall',null, 'do_stuff'), + ut3.ut_annotation(3, 'beforeeach',null, 'do_stuff'), + ut3.ut_annotation(4, 'aftereach',null, 'do_stuff'), + ut3.ut_annotation(5, 'afterall',null, 'do_stuff'), + ut3.ut_annotation(6, 'test','A test', 'some_test') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%some_package%some_test' || + '%' || + '%some_packagedo_stuff' || + '%' || + '%' || + '%some_packagedo_stuff' || + '%' || + '%' || + '%' || + '%some_packagedo_stuff' || + '%' || + '%' || + '%some_packagedo_stuff' || + '%%' + ); + end; + + procedure multiple_mixed_bef_aft is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall', null,'first_before_all'), + ut3.ut_annotation(3, 'beforeall', 'different_package.another_before_all',null), + ut3.ut_annotation(4, 'beforeeach', 'first_before_each',null), + ut3.ut_annotation(5, 'beforeeach', 'different_owner.different_package.another_before_each',null), + ut3.ut_annotation(6, 'aftereach', null, 'first_after_each'), + ut3.ut_annotation(7, 'aftereach', 'another_after_each,different_owner.different_package.one_more_after_each',null), + ut3.ut_annotation(8, 'afterall', 'first_after_all',null), + ut3.ut_annotation(9, 'afterall', 'another_after_all',null), + ut3.ut_annotation(14, 'test','A test', 'some_test'), + ut3.ut_annotation(15, 'beforetest','before_test_proc', 'some_test'), + ut3.ut_annotation(16, 'beforetest','before_test_proc2', 'some_test'), + ut3.ut_annotation(18, 'aftertest','after_test_proc', 'some_test'), + ut3.ut_annotation(20, 'aftertest','after_test_proc2', 'some_test'), + ut3.ut_annotation(21, 'beforeall', null,'last_before_all'), + ut3.ut_annotation(22, 'aftereach', null, 'last_after_each'), + ut3.ut_annotation(23, 'afterall', null, 'last_after_all') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%some_package%some_test' || + '%' || + '%some_packagefirst_before_each' || + '%different_ownerdifferent_packageanother_before_each' || + '%' || + '%' || + '%some_packagebefore_test_proc' || + '%some_packagebefore_test_proc2' || + '%' || + '%' || + '%some_packageafter_test_proc' || + '%some_packageafter_test_proc2' || + '%' || + '%' || + '%some_packagefirst_after_each' || + '%some_packageanother_after_each' || + '%different_ownerdifferent_packageone_more_after_each' || + '%some_packagelast_after_each' || + '%' || + '%' || + '%' || + '%some_packagefirst_before_all' || + '%different_packageanother_before_all' || + '%some_packagelast_before_all' || + '%' || + '%' || + '%some_packagefirst_after_all' || + '%some_packageanother_after_all' || + '%some_packagelast_after_all' || + '%%' + ); + end; + + + procedure before_after_mixed_with_test is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall',null, 'do_stuff'), + ut3.ut_annotation(3, 'beforeeach',null, 'do_stuff'), + ut3.ut_annotation(4, 'aftereach',null, 'do_stuff'), + ut3.ut_annotation(5, 'afterall',null, 'do_stuff'), + ut3.ut_annotation(6, 'test','A test', 'do_stuff') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like('%%Annotation "--\%beforeall"%line 2%%', '\'); + ut.expect(l_actual).to_be_like('%%Annotation "--\%beforeeach"%line 3%%', '\'); + ut.expect(l_actual).to_be_like('%%Annotation "--\%aftereach"%line 4%%', '\'); + ut.expect(l_actual).to_be_like('%%Annotation "--\%afterall" cannot be used with "--\%test". Annotation ignored.' + ||'%at "UT3_TESTER.SOME_PACKAGE.DO_STUFF", line 5%%', '\'); + ut.expect(l_actual).not_to_be_like('%%'); + ut.expect(l_actual).not_to_be_like('%%'); + ut.expect(l_actual).not_to_be_like('%%'); + ut.expect(l_actual).not_to_be_like('%%'); + end; + + procedure suite_from_context is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), + ut3.ut_annotation(3, 'test','In suite', 'suite_level_test'), + ut3.ut_annotation(4, 'context','a_context', null), + ut3.ut_annotation(5, 'displayname','A context', null), + ut3.ut_annotation(6, 'beforeall',null, 'context_setup'), + ut3.ut_annotation(7, 'test', 'In context', 'test_in_a_context'), + ut3.ut_annotation(8, 'endcontext',null, null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%' || + '%' || + '%' || + '' || + '%a_contextA contextsome_package.a_context' || + '%' || + '' || + '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || + '%' || + '' || + '' || + '%some_packagecontext_setup' || + '%' || + '' || + '' || + '' || + '%suite_level_testIn suitesome_package.suite_level_test' || + '%' || + '' || + '' || + '%some_packagesuite_level_beforeall' || + '%' || + '' || + '' + ); + end; + + procedure before_after_in_context is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite', 'Cool', null), + ut3.ut_annotation(2, 'test', 'In suite', 'suite_level_test'), + ut3.ut_annotation(3, 'context', 'a_context', null), + ut3.ut_annotation(4, 'beforeall', 'context_beforeall', null), + ut3.ut_annotation(5, 'beforeeach', null, 'context_beforeeach'), + ut3.ut_annotation(6, 'test', 'In context', 'test_in_a_context'), + ut3.ut_annotation(7, 'aftereach', 'context_aftereach' ,null), + ut3.ut_annotation(8, 'afterall', null, 'context_afterall'), + ut3.ut_annotation(9, 'endcontext', null, null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '' || + '%' || + '%' || + '%a_context' || + '%' || + '%' || + '%test_in_a_context' || + '%%context_beforeeach%' || + '%%test_in_a_context%' || + '%%context_aftereach%' || + '%' || + '%' || + '%%context_beforeall%' || + '%%context_afterall%' || + '%' || + '%' || + '%suite_level_test' || + '%%suite_level_test%' || + '%' || + '%' || + '%' + ); + ut.expect(l_actual).not_to_be_like('%%%%%%'); + ut.expect(l_actual).not_to_be_like('%%%%%%'); + ut.expect(l_actual).not_to_be_like('%%%%%%'); + ut.expect(l_actual).not_to_be_like('%%%%%%'); + end; + + procedure before_after_out_of_context is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), + ut3.ut_annotation(3, 'beforeeach',null, 'suite_level_beforeeach'), + ut3.ut_annotation(4, 'test','In suite', 'suite_level_test'), + ut3.ut_annotation(5, 'context','a_context', null), + ut3.ut_annotation(6, 'test', 'In context', 'test_in_a_context'), + ut3.ut_annotation(7, 'endcontext',null, null), + ut3.ut_annotation(8, 'aftereach',null, 'suite_level_aftereach'), + ut3.ut_annotation(9, 'afterall',null, 'suite_level_afterall') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '' || + '%' || + '%' || + '%a_context' || + '%' || + '%' || + '%test_in_a_context' || + '%%suite_level_beforeeach%' || + '%%test_in_a_context%' || + '%%suite_level_aftereach%' || + '%' || + '%' || + '%' || + '%' || + '%suite_level_test' || + '%%suite_level_beforeeach%' || + '%%suite_level_test%' || + '%%suite_level_aftereach%' || + '%' || + '%' || + '%%suite_level_beforeall%' || + '%%suite_level_afterall%' || + '%' + ); + ut.expect(l_actual).not_to_be_like('%%%%%%'); + ut.expect(l_actual).not_to_be_like('%%%%%%'); + end; + + procedure context_without_endcontext is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), + ut3.ut_annotation(3, 'test','In suite', 'suite_level_test'), + ut3.ut_annotation(4, 'context','A context', null), + ut3.ut_annotation(5, 'beforeall',null, 'context_setup'), + ut3.ut_annotation(7, 'test', 'In context', 'test_in_a_context') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%Invalid annotation "--\%context". Cannot find following "--\%endcontext". Annotation ignored.%at "UT3_TESTER.SOME_PACKAGE", line 4%' + ,'\' + ); + ut.expect(l_actual).to_be_like( + '' || + '%' || + '' || + '%suite_level_testIn suitesome_package.suite_level_test' || + '%' || + '' || + '%test_in_a_contextIn contextsome_package.test_in_a_context' || + '%' || + '' || + '' || + '%some_packagesuite_level_beforeall' || + '%some_packagecontext_setup' || + '%' || + '' || + '' + ); + end; + + procedure endcontext_without_context is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), + ut3.ut_annotation(3, 'test','In suite', 'suite_level_test'), + ut3.ut_annotation(4, 'context','a_context', null), + ut3.ut_annotation(5, 'displayname','A context', null), + ut3.ut_annotation(6, 'beforeall',null, 'context_setup'), + ut3.ut_annotation(7, 'test', 'In context', 'test_in_a_context'), + ut3.ut_annotation(8, 'endcontext',null, null), + ut3.ut_annotation(9, 'endcontext',null, null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%Invalid annotation "--\%endcontext". Cannot find preceding "--\%context". Annotation ignored.%at "UT3_TESTER.SOME_PACKAGE", line 9%' + ,'\' + ); + ut.expect(l_actual).to_be_like( + '' || + '%' || + '' || + '%a_contextA contextsome_package.a_context' || + '%' || + '' || + '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || + '%' || + '' || + '' || + '%some_packagecontext_setup' || + '%' || + '' || + '' || + '' || + '%suite_level_testIn suitesome_package.suite_level_test' || + '%' || + '' || + '' || + '%some_packagesuite_level_beforeall' || + '%' || + '' || + '' + ); + end; + + --%test(Gives warning when two contexts have the same name) + procedure duplicate_context_name is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'beforeall',null, 'suite_level_beforeall'), + ut3.ut_annotation(3, 'test','In suite', 'suite_level_test'), + ut3.ut_annotation(4, 'context','a_context', null), + ut3.ut_annotation(5, 'displayname','A context', null), + ut3.ut_annotation(6, 'beforeall',null, 'context_setup'), + ut3.ut_annotation(7, 'test', 'In context', 'test_in_a_context'), + ut3.ut_annotation(8, 'endcontext',null, null), + ut3.ut_annotation(9, 'context','a_context', null), + ut3.ut_annotation(10, 'displayname','A context', null), + ut3.ut_annotation(11, 'beforeall',null, 'setup_in_duplicated_context'), + ut3.ut_annotation(12, 'test', 'In duplicated context', 'test_in_duplicated_context'), + ut3.ut_annotation(13, 'endcontext',null, null) + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%Context name must be unique in a suite. Context and all of it's content ignored.%at "UT3_TESTER.SOME_PACKAGE", line 9%' + ,'\' + ); + ut.expect(l_actual).to_be_like( + '' || + '%' || + '' || + '%a_contextA contextsome_package.a_context' || + '%' || + '' || + '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || + '%' || + '' || + '' || + '%some_packagecontext_setup' || + '%' || + '' || + '' || + '' || + '%suite_level_testIn suitesome_package.suite_level_test' || + '%' || + '' || + '' || + '%some_packagesuite_level_beforeall' || + '%' || + '' || + '' + ); + end; + + procedure throws_value_empty is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(3, 'test','A test with empty throws annotation', 'A_TEST_PROCEDURE'), + ut3.ut_annotation(3, 'throws',null, 'A_TEST_PROCEDURE') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%"--%throws" annotation requires a parameter. Annotation ignored.%%' + ); + end; + + procedure throws_value_invalid is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(3, 'test','A test with invalid throws annotation', 'A_TEST_PROCEDURE'), + ut3.ut_annotation(3, 'throws',' -20145 , bad_variable_name ', 'A_TEST_PROCEDURE') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%Invalid parameter value "bad_variable_name" for "--%throws" annotation. Parameter ignored.%%' + ); + end; + + + procedure before_aftertest_multi is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(14, 'test','A test', 'some_test'), + ut3.ut_annotation(15, 'beforetest','before_test_proc', 'some_test'), + ut3.ut_annotation(16, 'beforetest','before_test_proc2', 'some_test'), + ut3.ut_annotation(18, 'aftertest','after_test_proc', 'some_test'), + ut3.ut_annotation(20, 'aftertest','after_test_proc2', 'some_test') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%some_package%some_test' || + '%' || + '%some_packagebefore_test_proc' || + '%some_packagebefore_test_proc2' || + '%' || + '%' || + '%some_packageafter_test_proc' || + '%some_packageafter_test_proc2' || + '%' || + '%%' + ); + end; + + procedure before_aftertest_twice is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(14, 'test','A test', 'some_test'), + ut3.ut_annotation(15, 'beforetest','before_test_proc, before_test_proc2', 'some_test'), + ut3.ut_annotation(16, 'beforetest','before_test_proc3', 'some_test'), + ut3.ut_annotation(18, 'aftertest','after_test_proc,after_test_proc2', 'some_test'), + ut3.ut_annotation(20, 'aftertest','after_test_proc3', 'some_test') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%some_package%some_test' || + '%' || + '%some_packagebefore_test_proc' || + '%some_packagebefore_test_proc2' || + '%some_packagebefore_test_proc3' || + '%' || + '%' || + '%some_packageafter_test_proc' || + '%some_packageafter_test_proc2' || + '%some_packageafter_test_proc3' || + '%' || + '%%' + ); + end; + + procedure before_aftertest_pkg_proc is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(14, 'test','A test', 'some_test'), + ut3.ut_annotation(15, 'beforetest','external_package.before_test_proc', 'some_test'), + ut3.ut_annotation(18, 'aftertest','external_package.after_test_proc', 'some_test') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%some_package%some_test' || + '%' || + '%external_packagebefore_test_proc' || + '%' || + '%' || + '%external_packageafter_test_proc' || + '%' || + '%%' + ); + end; + + procedure before_aftertest_mixed_syntax is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(14, 'test','A test', 'some_test'), + ut3.ut_annotation(15, 'beforetest','external_package.before_test_proc, before_test_proc2', 'some_test'), + ut3.ut_annotation(18, 'aftertest','external_package.after_test_proc, after_test_proc2', 'some_test') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%some_package%some_test' || + '%' || + '%external_packagebefore_test_proc' || + '%some_packagebefore_test_proc2' || + '%' || + '%' || + '%external_packageafter_test_proc' || + '%some_packageafter_test_proc2' || + '%' || + '%%' + ); + end; + + procedure test_annotation_ordering is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(4, 'test','B test', 'b_test'), + ut3.ut_annotation(10, 'test','Z test', 'z_test'), + ut3.ut_annotation(14, 'test','A test', 'a_test') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like( + '%%some_package%b_test' || + '%%'|| + '%%some_package%z_test' || + '%%'|| + '%%some_package%a_test' || + '%%' + ); + end; + + procedure test_bad_procedure_annotation is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(2, 'bad_procedure_annotation',null, 'some_procedure'), + ut3.ut_annotation(6, 'test','A test', 'do_stuff') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like('%Unsupported annotation "--\%bad_procedure_annotation". Annotation ignored.% line 2%', '\'); + end; + + procedure test_bad_package_annotation is + l_actual clob; + l_annotations ut3.ut_annotations; + begin + --Arrange + l_annotations := ut3.ut_annotations( + ut3.ut_annotation(1, 'suite','Cool', null), + ut3.ut_annotation(17, 'bad_package_annotation',null, null), + ut3.ut_annotation(24, 'test','A test', 'do_stuff') + ); + --Act + l_actual := invoke_builder_for_annotations(l_annotations, 'SOME_PACKAGE'); + --Assert + ut.expect(l_actual).to_be_like('%Unsupported annotation "--\%bad_package_annotation". Annotation ignored.% line 17%', '\'); + end; + +end test_suite_builder; +/ diff --git a/test/ut3_tester/core/test_suite_builder.pks b/test/ut3_tester/core/test_suite_builder.pks new file mode 100644 index 000000000..bae124e3e --- /dev/null +++ b/test/ut3_tester/core/test_suite_builder.pks @@ -0,0 +1,176 @@ +create or replace package test_suite_builder is + --%suite(suite_builder) + --%suitepath(utplsql.framework_tester.core) + + --%context(suite) + --%displayname(--%suite annotation) + + --%test(Sets suite name from package name and leaves description empty) + procedure no_suite_description; + + --%test(Sets suite description using first --%suite annotation) + procedure suite_description_from_suite; + + --%test(Gives warning if more than one --%suite annotation used) + procedure suite_annot_duplicated; + + --%endcontext + + --%context(displayname) + --%displayname(--%displayname annotation) + + --%test(Overrides suite description using first --%displayname annotation) + procedure suite_descr_from_displayname; + + --%test(Gives warning if more than one --%displayname annotation used) + procedure displayname_annot_duplicated; + + --%test(Gives warning if --%displayname annotation has no value) + procedure displayname_annot_empty; + + --%endcontext + + --%context(test) + --%displayname(--%test annotation) + + --%test(Creates a test item for procedure annotated with --%test annotation) + procedure test_annotation; + + --%test(Gives warning if more than one --%test annotation used) + procedure test_annot_duplicated; + + --%test(Is added to suite according to annotation order in package spec) + procedure test_annotation_ordering; + + --%endcontext + + --%context(suitepath) + --%displayname(--%suitepath annotation) + + --%test(Sets suite path using first --%suitepath annotation) + procedure suitepath_from_non_empty_path; + + --%test(Gives warning if more than one --%suitepath annotation used) + procedure suitepath_annot_duplicated; + + --%test(Gives warning if --%suitepath annotation has no value) + procedure suitepath_annot_empty; + + --%test(Gives warning if --%suitepath annotation has invalid value) + procedure suitepath_annot_invalid_path; + + --%endcontext + + --%context(rollback) + --%displayname(--%rollback annotation) + + --%test(Sets rollback type using first --%rollback annotation) + procedure rollback_type_valid; + + --%test(Gives warning if more than one --%rollback annotation used) + procedure rollback_type_duplicated; + + --%test(Gives warning if --%rollback annotation has no value) + procedure rollback_type_empty; + + --%test(Gives warning if --%rollback annotation has invalid value) + procedure rollback_type_invalid; + + --%endcontext + + --%context(before_after_all_each) + --%displayname(--%before/after all/each annotations) + + --%test(Supports multiple before/after all/each procedure level definitions) + procedure multiple_before_after; + + --%test(Supports multiple before/after all/each standalone level definitions) + procedure multiple_standalone_bef_aft; + + --%test(Supports mixing before/after all/each annotations on single procedure) + procedure before_after_on_single_proc; + + --%test(Supports mixed before/after all/each as standalone and procedure level definitions) + procedure multiple_mixed_bef_aft; + + --%test(Gives warning if more than one --%beforeall annotation used on procedure) + procedure beforeall_annot_duplicated; + + --%test(Gives warning if more than one --%beforeeach annotation used on procedure) + procedure beforeeach_annot_duplicated; + + --%test(Gives warning if more than one --%afterall annotation used on procedure) + procedure afterall_annot_duplicated; + + --%test(Gives warning if more than one --%aftereach annotation used on procedure) + procedure aftereach_annot_duplicated; + + --%test(Gives warning on before/after all/each annotations mixed with test) + procedure before_after_mixed_with_test; + + --%endcontext + + --%context(context) + --%displayname(--%context annotation) + + --%test(Creates nested suite for content between context/endcontext annotations) + procedure suite_from_context; + + --%test(Associates before/after all/each to tests in context only) + procedure before_after_in_context; + + --%test(Propagates beforeeach/aftereach to context) + procedure before_after_out_of_context; + + --%test(Does not create context and gives warning when endcontext is missing) + procedure context_without_endcontext; + + --%test(Gives warning if --%endcontext is missing a preceding --%context) + procedure endcontext_without_context; + + --%test(Gives warning when two contexts have the same name and ignores duplicated context) + procedure duplicate_context_name; + + --%endcontext + + --%context(throws) + --%displayname(--%throws annotation) + + --%test(Gives warning if --%throws annotation has no value) + procedure throws_value_empty; + + --%test(Gives warning if --%throws annotation has invalid value) + procedure throws_value_invalid; + + --%endcontext + + --%context(beforetest_aftertest) + --%displayname(--%beforetest/aftertest annotation) + + --%test(Supports multiple occurrences of beforetest/aftertest for a test) + procedure before_aftertest_multi; + + --%test(Supports same procedure defined twice) + procedure before_aftertest_twice; + + --%test(Supports beforetest from external package) + procedure before_aftertest_pkg_proc; + + --%test(Supports mix of procedure and package.procedure) + procedure before_aftertest_mixed_syntax; + + --%endcontext + + --%context(unknown_annotation) + --%displayname(--%bad_annotation) + + --%test(Gives warning when unknown procedure level annotation passed) + procedure test_bad_procedure_annotation; + + --%test(Gives warning when unknown package level annotation passed) + procedure test_bad_package_annotation; + + --%endcontext + +end test_suite_builder; +/ From a6a848d77fe6af8c32f692c6187d5e775ea5f151 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Sat, 30 Mar 2019 07:48:46 +0000 Subject: [PATCH 23/31] Adding tests: reporters reporters/test_junit_reporter reporters/test_sonar_test_reporter reporters/test_teamcity_reporter reporters/test_tfs_junit_reporter --- test/install_ut3_tester_tests.sql | 1 + test/install_ut3_user_tests.sql | 13 + test/ut3_tester/core/test_ut_executable.pks | 2 - test/ut3_user/reporters.pkb | 150 ++++++++ test/ut3_user/reporters.pks | 18 + .../reporters/test_junit_reporter.pkb | 353 ++++++++++++++++++ .../reporters/test_junit_reporter.pks | 51 +++ .../reporters/test_sonar_test_reporter.pkb | 36 ++ .../reporters/test_sonar_test_reporter.pks | 13 + .../reporters/test_teamcity_reporter.pkb | 131 +++++++ .../reporters/test_teamcity_reporter.pks | 22 ++ .../reporters/test_tfs_junit_reporter.pkb | 207 ++++++++++ .../reporters/test_tfs_junit_reporter.pks | 39 ++ 13 files changed, 1034 insertions(+), 2 deletions(-) create mode 100644 test/ut3_user/reporters.pkb create mode 100644 test/ut3_user/reporters.pks create mode 100644 test/ut3_user/reporters/test_junit_reporter.pkb create mode 100644 test/ut3_user/reporters/test_junit_reporter.pks create mode 100644 test/ut3_user/reporters/test_sonar_test_reporter.pkb create mode 100644 test/ut3_user/reporters/test_sonar_test_reporter.pks create mode 100644 test/ut3_user/reporters/test_teamcity_reporter.pkb create mode 100644 test/ut3_user/reporters/test_teamcity_reporter.pks create mode 100644 test/ut3_user/reporters/test_tfs_junit_reporter.pkb create mode 100644 test/ut3_user/reporters/test_tfs_junit_reporter.pks diff --git a/test/install_ut3_tester_tests.sql b/test/install_ut3_tester_tests.sql index 845e34782..1d4155c3d 100644 --- a/test/install_ut3_tester_tests.sql +++ b/test/install_ut3_tester_tests.sql @@ -38,6 +38,7 @@ alter session set plsql_optimize_level=0; @@ut3_tester/core/test_suite_builder.pkb + set linesize 200 set define on set verify off diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 583c844be..3db7beee7 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -20,6 +20,13 @@ prompt Install user tests @@ut3_user/expectations/test_expectations_cursor.pks @@ut3_user/api/test_ut_runner.pks @@ut3_user/api/test_ut_run.pks +@@ut3_user/reporters.pks +@@ut3_user/reporters/test_tfs_junit_reporter.pks +@@ut3_user/reporters/test_teamcity_reporter.pks +@@ut3_user/reporters/test_sonar_test_reporter.pks +@@ut3_user/reporters/test_junit_reporter.pks + + @@ut3_user/expectations/unary/test_expect_not_to_be_null.pkb @@ut3_user/expectations/unary/test_expect_to_be_null.pkb @@ -36,6 +43,12 @@ prompt Install user tests @@ut3_user/expectations/test_expectations_cursor.pkb @@ut3_user/api/test_ut_runner.pkb @@ut3_user/api/test_ut_run.pkb +@@ut3_user/reporters.pkb +@@ut3_user/reporters/test_tfs_junit_reporter.pkb +@@ut3_user/reporters/test_teamcity_reporter.pkb +@@ut3_user/reporters/test_sonar_test_reporter.pkb +@@ut3_user/reporters/test_junit_reporter.pkb + set linesize 200 set define on diff --git a/test/ut3_tester/core/test_ut_executable.pks b/test/ut3_tester/core/test_ut_executable.pks index 453998693..acb91d1be 100644 --- a/test/ut3_tester/core/test_ut_executable.pks +++ b/test/ut3_tester/core/test_ut_executable.pks @@ -8,9 +8,7 @@ create or replace package test_ut_executable is --%test(Executes procedure in current schema when user was not provided) procedure exec_schema_package_proc; - /* TODO: Fix Me */ --%test(Executes procedure and saves dbms_output) - --%disabled procedure exec_package_proc_output; --%test(Executes a procedure raising exception, saves dbms_output and exception stack trace) diff --git a/test/ut3_user/reporters.pkb b/test/ut3_user/reporters.pkb new file mode 100644 index 000000000..364566569 --- /dev/null +++ b/test/ut3_user/reporters.pkb @@ -0,0 +1,150 @@ +create or replace package body reporters is + + procedure create_test_helper_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package test_reporters +as + --%suite(A suite for testing different outcomes from reporters) + --%suitepath(org.utplsql.tests.helpers) + + --%beforeall + procedure beforeall; + + --%beforeeach + procedure beforeeach; + + --%context(some_context) + --%displayname(A description of some context) + + --%test + --%beforetest(beforetest) + --%aftertest(aftertest) + procedure passing_test; + + --%endcontext + + procedure beforetest; + + procedure aftertest; + + --%test(a test with failing assertion) + procedure failing_test; + + --%test(a test raising unhandled exception) + procedure erroring_test; + + --%test(a disabled test) + --%disabled + procedure disabled_test; + + --%aftereach + procedure aftereach; + + --%afterall + procedure afterall; + +end;]'; + + execute immediate q'[create or replace package body test_reporters +as + + procedure beforetest is + begin + dbms_output.put_line(''); + end; + + procedure aftertest + is + begin + dbms_output.put_line(''); + end; + + procedure beforeeach is + begin + dbms_output.put_line(''); + end; + + procedure aftereach is + begin + dbms_output.put_line(''); + end; + + procedure passing_test + is + begin + dbms_output.put_line(''); + ut3.ut.expect(1,'Test 1 Should Pass').to_equal(1); + end; + + procedure failing_test + is + begin + dbms_output.put_line(''); + ut3.ut.expect('number [1] ','Fails as values are different').to_equal('number [2] '); + end; + + procedure erroring_test + is + l_variable integer; + begin + dbms_output.put_line(''); + l_variable := 'a string'; + ut3.ut.expect(l_variable).to_equal(1); + end; + + procedure disabled_test + is + begin + dbms_output.put_line(''); + ut3.ut.expect(1,'this should not execute').to_equal(1); + end; + + procedure beforeall is + begin + dbms_output.put_line(''); + end; + + procedure afterall is + begin + dbms_output.put_line(''); + end; + +end;]'; + + end; + + procedure reporters_setup is + begin + create_test_helper_package; + end; + + procedure drop_test_helper_package is + begin + execute immediate 'drop package test_reporters'; + end; + + procedure reporters_cleanup is + pragma autonomous_transaction; + begin + drop_test_helper_package; + end; + + procedure check_xml_encoding_included( + a_reporter ut3.ut_output_reporter_base, + a_client_character_set varchar2 + ) is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('test_reporters', a_reporter, a_client_character_set => a_client_character_set)); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%'); + end; + +end reporters; +/ diff --git a/test/ut3_user/reporters.pks b/test/ut3_user/reporters.pks new file mode 100644 index 000000000..cb601cf3b --- /dev/null +++ b/test/ut3_user/reporters.pks @@ -0,0 +1,18 @@ +create or replace package reporters is + + --%suite + --%suitepath(utplsql.test_user) + + --%beforeall + procedure reporters_setup; + + --%afterall + procedure reporters_cleanup; + + procedure check_xml_encoding_included( + a_reporter ut3.ut_output_reporter_base, + a_client_character_set varchar2 + ); + +end reporters; +/ diff --git a/test/ut3_user/reporters/test_junit_reporter.pkb b/test/ut3_user/reporters/test_junit_reporter.pkb new file mode 100644 index 000000000..b86bb698c --- /dev/null +++ b/test/ut3_user/reporters/test_junit_reporter.pkb @@ -0,0 +1,353 @@ +create or replace package body test_junit_reporter as + + procedure create_a_test_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package check_junit_reporting is + --%suite(A suite with ) + + --%test(A test with ) + procedure test_do_stuff; + + end;]'; + execute immediate q'[create or replace package body check_junit_reporting is + procedure test_do_stuff is + begin + ut3.ut.expect(1).to_equal(1); + ut3.ut.expect(1).to_equal(2); + end; + + end;]'; + + execute immediate q'[create or replace package check_junit_rep_suitepath is + --%suitepath(core) + --%suite(check_junit_rep_suitepath) + --%displayname(Check junit Get path for suitepath) + + --%test(check_junit_rep_suitepath) + --%displayname(Check junit Get path for suitepath) + procedure check_junit_rep_suitepath; + end;]'; + execute immediate q'[create or replace package body check_junit_rep_suitepath is + procedure check_junit_rep_suitepath is + begin + ut3.ut.expect(1).to_equal(1); + end; + end;]'; + + + execute immediate q'[create or replace package tst_package_junit_nodesc as + --%suite(Suite name) + + --%test + procedure test1; + + --%test(Test name) + procedure test2; + end;]'; + + execute immediate q'[create or replace package body tst_package_junit_nodesc as + procedure test1 is begin ut.expect(1).to_equal(1); end; + procedure test2 is begin ut.expect(1).to_equal(1); end; + end;]'; + + execute immediate q'[create or replace package tst_package_junit_nosuite as + --%suite + + --%test(Test name) + procedure test1; + end;]'; + + execute immediate q'[create or replace package body tst_package_junit_nosuite as + procedure test1 is begin ut.expect(1).to_equal(1); end; + end;]'; + + execute immediate q'[create or replace package Tst_Fix_Case_Sensitive as + --%suite + + --%test(bugfix) + procedure bUgFiX; + end;]'; + + execute immediate q'[create or replace package body Tst_Fix_Case_Sensitive as + procedure bUgFiX is begin ut.expect(1).to_equal(1); end; + end;]'; + + execute immediate q'[create or replace package check_fail_escape is + --%suitepath(core) + --%suite(checkfailedescape) + --%displayname(Check JUNIT XML failure is escaped) + + --%test(Fail Miserably) + procedure fail_miserably; + + end;]'; + + execute immediate q'[create or replace package body check_fail_escape is + procedure fail_miserably is + begin + ut3.ut.expect('test').to_equal(''); + end; + end;]'; + + end; + + procedure escapes_special_chars is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).not_to_be_like('%%'); + ut.expect(l_actual).to_be_like('%<tag>%'); + end; + + procedure reports_only_failed_or_errored is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).not_to_be_like('%Actual: 1 (number) was expected to equal: 1 (number)%'); + ut.expect(l_actual).to_be_like('%Actual: 1 (number) was expected to equal: 2 (number)%'); + end; + + procedure reports_xunit_only_fail_or_err is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting',ut3.ut_xunit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).not_to_be_like('%Actual: 1 (number) was expected to equal: 1 (number)%'); + ut.expect(l_actual).to_be_like('%Actual: 1 (number) was expected to equal: 2 (number)%'); + end; + + procedure reports_failed_line is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%at "%.CHECK_JUNIT_REPORTING%", line %'); + end; + + procedure check_classname_suite is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%testcase classname="check_junit_reporting" assertions="%" name="%"%'); + end; + + procedure check_nls_number_formatting is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_nls_numeric_characters varchar2(30); + begin + --Arrange + select replace(nsp.value,'''','''''') into l_nls_numeric_characters + from nls_session_parameters nsp + where parameter = 'NLS_NUMERIC_CHARACTERS'; + execute immediate q'[alter session set NLS_NUMERIC_CHARACTERS=', ']'; + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting', ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_match('time="[0-9]*\.[0-9]{3,6}"'); + --Cleanup + execute immediate 'alter session set NLS_NUMERIC_CHARACTERS='''||l_nls_numeric_characters||''''; + end; + + procedure check_classname_suitepath is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_rep_suitepath',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%testcase classname="core.check_junit_rep_suitepath" assertions="%" name="%"%'); + end; + + procedure report_test_without_desc is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_expected varchar2(32767):= q'[ + + + + + + + + + + + + + +]'; + begin + select * + bulk collect into l_results + from table(ut3.ut.run('tst_package_junit_nodesc',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure report_suite_without_desc is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_expected varchar2(32767):= q'[ + + + + + + + + + +]'; + begin + select * + bulk collect into l_results + from table(ut3.ut.run('tst_package_junit_nosuite',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure reporort_produces_expected_out is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_expected varchar2(32767):=q'[ + + + + + + + + +% + + + + + + + +%Fails as values are different% + +% + + + + +%ORA-06502:% + +% + + + + + + + + +% + + + + + + + +]'; + + begin + select * + bulk collect into l_results + from table(ut3.ut.run('test_reporters',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure check_failure_escaped is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_fail_escape',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%Actual: 'test' (varchar2) was expected to equal: '<![CDATA[some stuff]]>' (varchar2)%'); + end; + + procedure check_classname_is_populated is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_expected varchar2(32767):= q'[ + + + + + + + + + +]'; + begin + select * + bulk collect into l_results + from table(ut3.ut.run('Tst_Fix_Case_Sensitive',ut3.ut_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure check_encoding_included is + begin + reporters.check_xml_encoding_included(ut3.ut_junit_reporter(), 'UTF-8'); + end; + + procedure remove_test_package is + pragma autonomous_transaction; + begin + execute immediate 'drop package check_junit_reporting'; + execute immediate 'drop package check_junit_rep_suitepath'; + execute immediate 'drop package tst_package_junit_nodesc'; + execute immediate 'drop package tst_package_junit_nosuite'; + execute immediate 'drop package check_fail_escape'; + execute immediate 'drop package Tst_Fix_Case_Sensitive'; + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_junit_reporter.pks b/test/ut3_user/reporters/test_junit_reporter.pks new file mode 100644 index 000000000..8af2ba430 --- /dev/null +++ b/test/ut3_user/reporters/test_junit_reporter.pks @@ -0,0 +1,51 @@ +create or replace package test_junit_reporter as + + --%suite(ut_junit_reporter) + --%suitepath(utplsql.test_user.reporters) + + --%beforeall + procedure create_a_test_package; + + --%test(Escapes special characters from test and suite description) + procedure escapes_special_chars; + + --%test(Reports only failed expectations and exceptions) + procedure reports_only_failed_or_errored; + + --%test(Xunit Backward Compatibility - Reports only failed expectations and exceptions) + procedure reports_xunit_only_fail_or_err; + + --%test(Reports failed line of test) + procedure reports_failed_line; + + --%test(Check that classname is returned correct suite) + procedure check_classname_suite; + + --%test(Check that classname is returned correct suitepath) + procedure check_classname_suitepath; + + --%test(Reports duration according to XML specification for numbers) + procedure check_nls_number_formatting; + + --%test(Report on test without description) + procedure report_test_without_desc; + + --%test(Report on suite without description) + procedure report_suite_without_desc; + + --%test(Report produces expected output) + procedure reporort_produces_expected_out; + + --%test( Check classname is populated when procedure is mixed cased - bug #659) + procedure check_classname_is_populated; + + --%test( Validate that fail with special char are escaped ) + procedure check_failure_escaped; + + --%test(Includes XML header with encoding when encoding provided) + procedure check_encoding_included; + + --%afterall + procedure remove_test_package; +end; +/ diff --git a/test/ut3_user/reporters/test_sonar_test_reporter.pkb b/test/ut3_user/reporters/test_sonar_test_reporter.pkb new file mode 100644 index 000000000..76cec84c8 --- /dev/null +++ b/test/ut3_user/reporters/test_sonar_test_reporter.pkb @@ -0,0 +1,36 @@ +create or replace package body test_sonar_test_reporter as + + procedure report_produces_expected_out is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_expected varchar2(32767):=q'[ + + +% +%%% +%%% +%% + +]'; + + begin + select * + bulk collect into l_results + from table( + ut3.ut.run( + 'test_reporters', + ut3.ut_sonar_test_reporter(), + a_test_file_mappings => ut3.ut_file_mapper.build_file_mappings( sys_context('USERENV', 'CURRENT_USER'), ut3.ut_varchar2_list('tests/helpers/test_reporters.pkb')) + ) + ); + l_actual :=ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure check_encoding_included is + begin + reporters.check_xml_encoding_included(ut3.ut_sonar_test_reporter(), 'UTF-8'); + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_sonar_test_reporter.pks b/test/ut3_user/reporters/test_sonar_test_reporter.pks new file mode 100644 index 000000000..0c2fdf70a --- /dev/null +++ b/test/ut3_user/reporters/test_sonar_test_reporter.pks @@ -0,0 +1,13 @@ +create or replace package test_sonar_test_reporter as + + --%suite(ut_sonar_test_reporter) + --%suitepath(utplsql.test_user.reporters) + + --%test(Report produces expected output) + procedure report_produces_expected_out; + + --%test(Includes XML header with encoding when encoding provided) + procedure check_encoding_included; + +end; +/ diff --git a/test/ut3_user/reporters/test_teamcity_reporter.pkb b/test/ut3_user/reporters/test_teamcity_reporter.pkb new file mode 100644 index 000000000..fc2ab169e --- /dev/null +++ b/test/ut3_user/reporters/test_teamcity_reporter.pkb @@ -0,0 +1,131 @@ +create or replace package body test_teamcity_reporter as + + procedure create_a_test_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package check_escape_special_chars is + --%suite(A suite with 'quote') + + --%test(A test with 'quote') + procedure test_do_stuff; + + end;]'; + execute immediate q'[create or replace package body check_escape_special_chars is + procedure test_do_stuff is + begin + ut3.ut.expect(' [ ' || chr(13) || chr(10) || ' ] ' ).to_be_null; + end; + + end;]'; + + execute immediate q'[create or replace package check_trims_long_output is + --%suite + + --%test + procedure long_output; + end;]'; + execute immediate q'[create or replace package body check_trims_long_output is + procedure long_output is + begin + ut3.ut.expect(rpad('aVarchar',4000,'a')).to_be_null; + end; + end;]'; + + end; + + + procedure report_produces_expected_out is + l_output_data ut3.ut_varchar2_list; + l_output clob; + l_expected varchar2(32767); + begin + l_expected := q'{%##teamcity[testSuiteStarted timestamp='%' name='org'] +%##teamcity[testSuiteStarted timestamp='%' name='org.utplsql'] +%##teamcity[testSuiteStarted timestamp='%' name='org.utplsql.tests'] +%##teamcity[testSuiteStarted timestamp='%' name='org.utplsql.tests.helpers'] +%##teamcity[testSuiteStarted timestamp='%' name='A suite for testing different outcomes from reporters'] +%##teamcity[testSuiteStarted timestamp='%' name='A description of some context'] +%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3$user#.test_reporters.passing_test'] + + + + + +%##teamcity[testFinished timestamp='%' duration='%' name='ut3$user#.test_reporters.passing_test'] +%##teamcity[testSuiteFinished timestamp='%' name='A description of some context'] +%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3$user#.test_reporters.failing_test'] + + + +%##teamcity[testFailed timestamp='%' details='Actual: |'number |[1|] |' (varchar2) was expected to equal: |'number |[2|] |' (varchar2) ' message='Fails as values are different' name='ut3$user#.test_reporters.failing_test'] +%##teamcity[testFinished timestamp='%' duration='%' name='ut3$user#.test_reporters.failing_test'] +%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3$user#.test_reporters.erroring_test'] + + + +%##teamcity[testStdErr timestamp='%' name='ut3$user#.test_reporters.erroring_test' out='Test exception:|nORA-06512: at "UT3$USER#.TEST_REPORTERS", line %|nORA-06512: at %|n|n'] +%##teamcity[testFailed timestamp='%' details='Test exception:|nORA-06512: at "UT3$USER#.TEST_REPORTERS", line %|nORA-06512: at %|n|n' message='Error occured' name='ut3$user#.test_reporters.erroring_test'] +%##teamcity[testFinished timestamp='%' duration='%' name='ut3$user#.test_reporters.erroring_test'] +%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3$user#.test_reporters.disabled_test'] +%##teamcity[testIgnored timestamp='%' name='ut3$user#.test_reporters.disabled_test'] +%##teamcity[testSuiteFinished timestamp='%' name='A suite for testing different outcomes from reporters'] +%##teamcity[testSuiteFinished timestamp='%' name='org.utplsql.tests.helpers'] +%##teamcity[testSuiteFinished timestamp='%' name='org.utplsql.tests'] +%##teamcity[testSuiteFinished timestamp='%' name='org.utplsql'] +%##teamcity[testSuiteFinished timestamp='%' name='org']}'; + --act + select * + bulk collect into l_output_data + from table(ut3.ut.run('test_reporters',ut3.ut_teamcity_reporter())); + + --assert + ut.expect(ut3_tester_helper.main_helper.table_to_clob(l_output_data)).to_be_like(l_expected); + end; + + procedure escape_special_chars is + l_output_data ut3.ut_varchar2_list; + l_output clob; + l_expected varchar2(32767); + begin + l_expected := q'{%##teamcity[testSuiteStarted timestamp='%' name='A suite with |'quote|''] +%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3$user#.check_escape_special_chars.test_do_stuff'] +%##teamcity[testFailed timestamp='%' details='Actual: (varchar2)|n |' |[ |r|n |] |'|nwas expected to be null' name='ut3$user#.check_escape_special_chars.test_do_stuff'] +%##teamcity[testFinished timestamp='%' duration='%' name='ut3$user#.check_escape_special_chars.test_do_stuff'] +%##teamcity[testSuiteFinished timestamp='%' name='A suite with |'quote|'']}'; + --act + select * + bulk collect into l_output_data + from table(ut3.ut.run('check_escape_special_chars',ut3.ut_teamcity_reporter())); + + --assert + ut.expect(ut3_tester_helper.main_helper.table_to_clob(l_output_data)).to_be_like(l_expected); + end; + + procedure trims_long_output is + l_output_data ut3.ut_varchar2_list; + l_output clob; + l_expected varchar2(32767); + begin + l_expected := q'{%##teamcity[testSuiteStarted timestamp='%' name='check_trims_long_output'] +%##teamcity[testStarted timestamp='%' captureStandardOutput='true' name='ut3$user#.check_trims_long_output.long_output'] +%##teamcity[testFailed timestamp='%' details='Actual: (varchar2)|n |'aVarcharaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|[...|]' name='ut3$user#.check_trims_long_output.long_output'] +%##teamcity[testFinished timestamp='%' duration='%' name='ut3$user#.check_trims_long_output.long_output'] +%##teamcity[testSuiteFinished timestamp='%' name='check_trims_long_output']}'; + --act + select * + bulk collect into l_output_data + from table(ut3.ut.run('check_trims_long_output',ut3.ut_teamcity_reporter())); + + --assert + ut.expect(ut3_tester_helper.main_helper.table_to_clob(l_output_data)).to_be_like(l_expected); + end; + + procedure remove_test_package is + pragma autonomous_transaction; + begin + execute immediate 'drop package check_escape_special_chars'; + execute immediate 'drop package check_trims_long_output'; + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_teamcity_reporter.pks b/test/ut3_user/reporters/test_teamcity_reporter.pks new file mode 100644 index 000000000..f849751f1 --- /dev/null +++ b/test/ut3_user/reporters/test_teamcity_reporter.pks @@ -0,0 +1,22 @@ +create or replace package test_teamcity_reporter as + + --%suite(ut_teamcity_reporter) + --%suitepath(utplsql.test_user.reporters) + + --%beforeall + procedure create_a_test_package; + + --%test(Report produces expected output) + procedure report_produces_expected_out; + + --%test(Escapes special characters) + procedure escape_special_chars; + + --%test(Trims output so it fits into 4000 chars) + procedure trims_long_output; + + --%afterall + procedure remove_test_package; + +end; +/ diff --git a/test/ut3_user/reporters/test_tfs_junit_reporter.pkb b/test/ut3_user/reporters/test_tfs_junit_reporter.pkb new file mode 100644 index 000000000..623dda51e --- /dev/null +++ b/test/ut3_user/reporters/test_tfs_junit_reporter.pkb @@ -0,0 +1,207 @@ +create or replace package body test_tfs_junit_reporter as + + procedure crate_a_test_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package check_junit_reporting is + --%suite(A suite with ) + + --%test(A test with ) + procedure test_do_stuff; + + end;]'; + execute immediate q'[create or replace package body check_junit_reporting is + procedure test_do_stuff is + begin + ut3.ut.expect(1).to_equal(1); + ut3.ut.expect(1).to_equal(2); + end; + + end;]'; + + execute immediate q'[create or replace package check_junit_rep_suitepath is + --%suitepath(core) + --%suite(check_junit_rep_suitepath) + --%displayname(Check JUNIT Get path for suitepath) + + --%test(check_junit_rep_suitepath) + --%displayname(Check JUNIT Get path for suitepath) + procedure check_junit_rep_suitepath; + end;]'; + execute immediate q'[create or replace package body check_junit_rep_suitepath is + procedure check_junit_rep_suitepath is + begin + ut3.ut.expect(1).to_equal(1); + end; + end;]'; + + execute immediate q'[create or replace package check_junit_flat_suitepath is + --%suitepath(core.check_junit_rep_suitepath) + --%suite(flatsuitepath) + + --%beforeall + procedure donuffin; + end;]'; + execute immediate q'[create or replace package body check_junit_flat_suitepath is + procedure donuffin is + begin + null; + end; + end;]'; + + + execute immediate q'[create or replace package check_fail_escape is + --%suitepath(core) + --%suite(checkfailedescape) + --%displayname(Check JUNIT XML failure is escaped) + + --%test(Fail Miserably) + procedure fail_miserably; + + end;]'; + + execute immediate q'[create or replace package body check_fail_escape is + procedure fail_miserably is + begin + ut3.ut.expect('test').to_equal(''); + end; + end;]'; + + end; + + + procedure escapes_special_chars is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting',ut3.ut_tfs_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).not_to_be_like('%%'); + ut.expect(l_actual).to_be_like('%<tag>%'); + end; + + procedure reports_only_failed_or_errored is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting',ut3.ut_tfs_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).not_to_be_like('%Actual: 1 (number) was expected to equal: 1 (number)%'); + ut.expect(l_actual).to_be_like('%Actual: 1 (number) was expected to equal: 2 (number)%'); + end; + + procedure reports_failed_line is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting',ut3.ut_tfs_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%at "%.CHECK_JUNIT_REPORTING%", line %'); + end; + + procedure check_classname_suite is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting',ut3.ut_tfs_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%testcase classname="check_junit_reporting"%'); + end; + + procedure check_flatten_nested_suites is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_flat_suitepath',ut3.ut_tfs_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like(' + + + + + +%'); + end; + + procedure check_nls_number_formatting is + l_results ut3.ut_varchar2_list; + l_actual clob; + l_nls_numeric_characters varchar2(30); + begin + --Arrange + select replace(nsp.value,'''','''''') into l_nls_numeric_characters + from nls_session_parameters nsp + where parameter = 'NLS_NUMERIC_CHARACTERS'; + execute immediate q'[alter session set NLS_NUMERIC_CHARACTERS=', ']'; + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_reporting', ut3.ut_tfs_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_match('time="[0-9]*\.[0-9]{3,6}"'); + --Cleanup + execute immediate 'alter session set NLS_NUMERIC_CHARACTERS='''||l_nls_numeric_characters||''''; + end; + + procedure check_failure_escaped is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_fail_escape',ut3.ut_tfs_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%Actual: 'test' (varchar2) was expected to equal: '<![CDATA[some stuff]]>' (varchar2)%'); + end; + + procedure check_classname_suitepath is + l_results ut3.ut_varchar2_list; + l_actual clob; + begin + --Act + select * + bulk collect into l_results + from table(ut3.ut.run('check_junit_rep_suitepath',ut3.ut_tfs_junit_reporter())); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like('%testcase classname="core.check_junit_rep_suitepath"%'); + end; + procedure remove_test_package is + pragma autonomous_transaction; + begin + execute immediate 'drop package check_junit_reporting'; + execute immediate 'drop package check_junit_rep_suitepath'; + execute immediate 'drop package check_junit_flat_suitepath'; + execute immediate 'drop package check_fail_escape'; + end; + + procedure check_encoding_included is + begin + reporters.check_xml_encoding_included(ut3.ut_tfs_junit_reporter(), 'UTF-8'); + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_tfs_junit_reporter.pks b/test/ut3_user/reporters/test_tfs_junit_reporter.pks new file mode 100644 index 000000000..af6227283 --- /dev/null +++ b/test/ut3_user/reporters/test_tfs_junit_reporter.pks @@ -0,0 +1,39 @@ +create or replace package test_tfs_junit_reporter as + + --%suite(ut_tfs_junit_reporter) + --%suitepath(utplsql.test_user.reporters) + + --%beforeall + procedure crate_a_test_package; + + --%test(Escapes special characters from test and suite description) + procedure escapes_special_chars; + + --%test(Reports only failed expectations and exceptions) + procedure reports_only_failed_or_errored; + + --%test(Reports failed line of test) + procedure reports_failed_line; + + --%test(Check that classname is returned correct suite) + procedure check_classname_suite; + + --%test(Check that classname is returned correct suitepath) + procedure check_classname_suitepath; + + --%test(Check that nested suites are being flatten) + procedure check_flatten_nested_suites; + + --%test(Reports duration according to XML specification for numbers) + procedure check_nls_number_formatting; + + --%test( Validate that failures with special char are escaped ) + procedure check_failure_escaped; + + --%test(Includes XML header with encoding when encoding provided) + procedure check_encoding_included; + + --%afterall + procedure remove_test_package; +end; +/ From 858372c7001e1b2e7106302350d9a35a1cd34993 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Sun, 31 Mar 2019 16:33:08 +0100 Subject: [PATCH 24/31] Adding set of tests: reporters/test_coverage reporters/test_debug_reporter reporters/test_documentation_reporter reporters/test_extended_coverage reporters/test_realtime_reporter Fixing some helper methods. --- test/grant_ut3_owner_to_ut3_tester.sql | 2 +- test/install_ut3_tester_helper.sql | 4 + test/install_ut3_user_tests.sql | 24 +- test/ut3_tester_helper/coverage_helper.pkb | 215 ++++++++++ test/ut3_tester_helper/coverage_helper.pks | 27 ++ test/ut3_tester_helper/main_helper.pkb | 20 + test/ut3_tester_helper/main_helper.pks | 10 +- test/ut3_tester_helper/run_helper.pkb | 2 +- test/ut3_tester_helper/run_helper.pks | 5 +- test/ut3_tester_helper/test_event_list.tps | 2 + test/ut3_tester_helper/test_event_object.tps | 15 + test/ut3_user/reporters/test_coverage.pkb | 51 +++ test/ut3_user/reporters/test_coverage.pks | 20 + .../reporters/test_debug_reporter.pkb | 45 ++ .../reporters/test_debug_reporter.pks | 16 + .../reporters/test_documentation_reporter.pkb | 1 + .../reporters/test_documentation_reporter.pks | 10 + .../reporters/test_extended_coverage.pkb | 106 +++++ .../reporters/test_extended_coverage.pks | 22 + .../reporters/test_realtime_reporter.pkb | 401 ++++++++++++++++++ .../reporters/test_realtime_reporter.pks | 55 +++ 21 files changed, 1048 insertions(+), 5 deletions(-) create mode 100644 test/ut3_tester_helper/coverage_helper.pkb create mode 100644 test/ut3_tester_helper/coverage_helper.pks create mode 100644 test/ut3_tester_helper/test_event_list.tps create mode 100644 test/ut3_tester_helper/test_event_object.tps create mode 100644 test/ut3_user/reporters/test_coverage.pkb create mode 100644 test/ut3_user/reporters/test_coverage.pks create mode 100644 test/ut3_user/reporters/test_debug_reporter.pkb create mode 100644 test/ut3_user/reporters/test_debug_reporter.pks create mode 100644 test/ut3_user/reporters/test_documentation_reporter.pkb create mode 100644 test/ut3_user/reporters/test_documentation_reporter.pks create mode 100644 test/ut3_user/reporters/test_extended_coverage.pkb create mode 100644 test/ut3_user/reporters/test_extended_coverage.pks create mode 100644 test/ut3_user/reporters/test_realtime_reporter.pkb create mode 100644 test/ut3_user/reporters/test_realtime_reporter.pks diff --git a/test/grant_ut3_owner_to_ut3_tester.sql b/test/grant_ut3_owner_to_ut3_tester.sql index d06a24ace..19424be1a 100644 --- a/test/grant_ut3_owner_to_ut3_tester.sql +++ b/test/grant_ut3_owner_to_ut3_tester.sql @@ -17,7 +17,7 @@ begin and generated = 'N' and lower(object_name) not like 'sys%') loop - execute immediate 'grant execute on ut3.'||i.object_name||' to UT3_TESTER'; + execute immediate 'grant execute on ut3."'||i.object_name||'" to UT3_TESTER'; end loop; end; / diff --git a/test/install_ut3_tester_helper.sql b/test/install_ut3_tester_helper.sql index 1645cd4c7..c6244fd39 100644 --- a/test/install_ut3_tester_helper.sql +++ b/test/install_ut3_tester_helper.sql @@ -11,14 +11,18 @@ alter session set plsql_optimize_level=0; @@ut3_tester_helper/test_tab_varray.tps @@ut3_tester_helper/test_dummy_number.tps @@ut3_tester_helper/ut_test_table.sql +@@ut3_tester_helper/test_event_object.tps +@@ut3_tester_helper/test_event_list.tps @@ut3_tester_helper/main_helper.pks @@ut3_tester_helper/run_helper.pks +@@ut3_tester_helper/coverage_helper.pks @@ut3_tester_helper/expectations_helper.pks @@ut3_tester_helper/ut_example_tests.pks @@ut3_tester_helper/main_helper.pkb @@ut3_tester_helper/run_helper.pkb +@@ut3_tester_helper/coverage_helper.pkb @@ut3_tester_helper/expectations_helper.pkb @@ut3_tester_helper/ut_example_tests.pkb diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 3db7beee7..5da99d802 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -25,8 +25,18 @@ prompt Install user tests @@ut3_user/reporters/test_teamcity_reporter.pks @@ut3_user/reporters/test_sonar_test_reporter.pks @@ut3_user/reporters/test_junit_reporter.pks +@@ut3_user/reporters/test_documentation_reporter.pks +@@ut3_user/reporters/test_debug_reporter.pks +@@ut3_user/reporters/test_realtime_reporter.pks +@@ut3_user/reporters/test_coverage.pks +set define on +@@install_above_12_1.sql 'ut3_user/reporters/test_extended_coverage.pks' +set define off - +--set define on +--@@install_below_12_2.sql 'ut3_user/reporters/test_proftag_coverage.pks' +--@@install_below_12_2.sql 'ut3_user/reporters/test_coverage/test_html_proftab_reporter.pks' +--set define off @@ut3_user/expectations/unary/test_expect_not_to_be_null.pkb @@ut3_user/expectations/unary/test_expect_to_be_null.pkb @@ -48,6 +58,18 @@ prompt Install user tests @@ut3_user/reporters/test_teamcity_reporter.pkb @@ut3_user/reporters/test_sonar_test_reporter.pkb @@ut3_user/reporters/test_junit_reporter.pkb +@@ut3_user/reporters/test_documentation_reporter.pkb +@@ut3_user/reporters/test_debug_reporter.pkb +@@ut3_user/reporters/test_realtime_reporter.pkb +@@ut3_user/reporters/test_coverage.pkb +set define on +@@install_above_12_1.sql 'ut3_user/reporters/test_extended_coverage.pkb' +set define off + +--set define on +--@@install_below_12_2.sql 'ut3_user/reporters/test_coverage.pkb' +--@@install_below_12_2.sql 'ut3_user/reporters/test_coverage/test_html_proftab_reporter.pkb' +--set define off set linesize 200 diff --git a/test/ut3_tester_helper/coverage_helper.pkb b/test/ut3_tester_helper/coverage_helper.pkb new file mode 100644 index 000000000..06f42bbf3 --- /dev/null +++ b/test/ut3_tester_helper/coverage_helper.pkb @@ -0,0 +1,215 @@ +create or replace package body coverage_helper is + + function get_mock_run_id return integer is + v_result integer; + begin + select nvl(min(runid),0) - 1 into v_result + from ut3.plsql_profiler_runs; + return v_result; + end; + + function get_mock_block_run_id return integer is + v_result integer; + begin + select nvl(min(run_id),0) - 1 into v_result + from dbmspcc_runs; + return v_result; + end; + + procedure mock_coverage_data(a_run_id integer,a_user in varchar2) is + c_unit_id constant integer := 1; + begin + insert into ut3.plsql_profiler_runs ( runid, run_owner, run_date, run_comment) + values(a_run_id, a_user, sysdate, 'unit testing utPLSQL'); + + insert into ut3.plsql_profiler_units ( runid, unit_number, unit_type, unit_owner, unit_name) + values(a_run_id, c_unit_id, 'PACKAGE BODY', 'UT3', 'DUMMY_COVERAGE'); + + insert into ut3.plsql_profiler_data ( runid, unit_number, line#, total_occur, total_time) + select a_run_id, c_unit_id, 4, 1, 1 from dual union all + select a_run_id, c_unit_id, 5, 0, 0 from dual union all + select a_run_id, c_unit_id, 7, 1, 1 from dual; + end; + + procedure cleanup_dummy_coverage(a_run_id in integer) is + pragma autonomous_transaction; + begin + delete from ut3.plsql_profiler_data where runid = a_run_id; + delete from ut3.plsql_profiler_units where runid = a_run_id; + delete from ut3.plsql_profiler_runs where runid = a_run_id; + commit; + end; + + procedure create_dummy_coverage_package is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package UT3.DUMMY_COVERAGE is + procedure do_stuff; + + procedure grant_myself; + end;]'; + execute immediate q'[create or replace package body UT3.DUMMY_COVERAGE is + procedure do_stuff is + begin + if 1 = 2 then + dbms_output.put_line('should not get here'); + else + dbms_output.put_line('should get here'); + end if; + end; + + procedure grant_myself is + begin + execute immediate 'grant debug,execute on UT3.DUMMY_COVERAGE to ut3$user#'; + end; + end;]'; + + end; + + procedure create_dummy_coverage_test is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package UT3.TEST_DUMMY_COVERAGE is + --%suite(dummy coverage test) + --%suitepath(coverage_testing) + + --%test + procedure test_do_stuff; + + procedure grant_myself; + end;]'; + execute immediate q'[create or replace package body UT3.TEST_DUMMY_COVERAGE is + procedure test_do_stuff is + begin + dummy_coverage.do_stuff; + end; + + procedure grant_myself is + begin + execute immediate 'grant debug,execute on UT3.TEST_DUMMY_COVERAGE to ut3$user#'; + end; + end;]'; + + end; + + procedure grant_exec_on_cov is + pragma autonomous_transaction; + begin + execute immediate 'begin UT3.DUMMY_COVERAGE.grant_myself(); end;'; + execute immediate 'begin UT3.TEST_DUMMY_COVERAGE.grant_myself(); end;'; + end; + + procedure drop_dummy_coverage_pkg is + pragma autonomous_transaction; + begin + begin execute immediate q'[drop package ut3.test_dummy_coverage]'; exception when others then null; end; + begin execute immediate q'[drop package ut3.dummy_coverage]'; exception when others then null; end; + end; + + + --12.2 Setup + procedure create_dummy_12_2_cov_pck is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package UT3.DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG is + procedure do_stuff(i_input in number); + + procedure grant_myself; + end;]'; + execute immediate q'[create or replace package body UT3.DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG is + procedure do_stuff(i_input in number) is + begin + if i_input = 2 then + dbms_output.put_line('should not get here'); + else + dbms_output.put_line('should get here'); + end if; + end; + + procedure grant_myself is + begin + execute immediate 'grant debug,execute on UT3.DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG to ut3$user#'; + end; + + end;]'; + end; + + procedure create_dummy_12_2_cov_test is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package UT3.TEST_BLOCK_DUMMY_COVERAGE is + --%suite(dummy coverage test) + --%suitepath(coverage_testing) + + --%test + procedure test_do_stuff; + + procedure grant_myself; + + end;]'; + execute immediate q'[create or replace package body UT3.TEST_BLOCK_DUMMY_COVERAGE is + procedure test_do_stuff is + begin + dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long.do_stuff(1); + ut.expect(1).to_equal(1); + end; + + procedure grant_myself is + begin + execute immediate 'grant debug,execute on UT3.TEST_BLOCK_DUMMY_COVERAGE to ut3$user#'; + end; + end;]'; + end; + + procedure mock_block_coverage_data(a_run_id integer,a_user in varchar2) is + c_unit_id constant integer := 1; + begin + insert into dbmspcc_runs ( run_id, run_owner, run_timestamp, run_comment) + values(a_run_id, a_user, sysdate, 'unit testing utPLSQL'); + + insert into dbmspcc_units ( run_id, object_id, type, owner, name,last_ddl_time) + values(a_run_id, c_unit_id, 'PACKAGE BODY', 'UT3', 'DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG',sysdate); + + insert into dbmspcc_blocks ( run_id, object_id, line,block,col,covered,not_feasible) + select a_run_id, c_unit_id,4,1,1,1,0 from dual union all + select a_run_id, c_unit_id,4,2,2,0,0 from dual union all + select a_run_id, c_unit_id,5,3,0,1,0 from dual union all + select a_run_id, c_unit_id,7,4,1,1,0 from dual; + end; + + procedure mock_profiler_coverage_data(a_run_id integer,a_user in varchar2) is + c_unit_id constant integer := 1; + begin + insert into ut3.plsql_profiler_runs ( runid, run_owner, run_date, run_comment) + values(a_run_id, a_user, sysdate, 'unit testing utPLSQL'); + + insert into ut3.plsql_profiler_units ( runid, unit_number, unit_type, unit_owner, unit_name) + values(a_run_id, c_unit_id, 'PACKAGE BODY', 'UT3', 'DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG'); + + insert into ut3.plsql_profiler_data ( runid, unit_number, line#, total_occur, total_time) + select a_run_id, c_unit_id, 4, 1, 1 from dual union all + select a_run_id, c_unit_id, 5, 0, 0 from dual union all + select a_run_id, c_unit_id, 6, 1, 0 from dual union all + select a_run_id, c_unit_id, 7, 1, 1 from dual; + end; + + procedure cleanup_dummy_coverage(a_block_id in integer, a_prof_id in integer) is + pragma autonomous_transaction; + begin + begin execute immediate q'[drop package ut3.test_block_dummy_coverage]'; exception when others then null; end; + begin execute immediate q'[drop package ut3.dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long]'; exception when others then null; end; + delete from dbmspcc_blocks where run_id = a_block_id; + delete from dbmspcc_units where run_id = a_block_id; + delete from dbmspcc_runs where run_id = a_block_id; + cleanup_dummy_coverage(a_prof_id); + commit; + end; + + procedure grant_exec_on_12_2_cov is + pragma autonomous_transaction; + begin + execute immediate 'begin UT3.DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG.grant_myself(); end;'; + execute immediate 'begin UT3.TEST_BLOCK_DUMMY_COVERAGE.grant_myself(); end;'; + end; +end; +/ diff --git a/test/ut3_tester_helper/coverage_helper.pks b/test/ut3_tester_helper/coverage_helper.pks new file mode 100644 index 000000000..427a965c0 --- /dev/null +++ b/test/ut3_tester_helper/coverage_helper.pks @@ -0,0 +1,27 @@ +create or replace package coverage_helper is + + g_run_id integer; + + type prof_runs_tab is table of ut3.plsql_profiler_runs%rowtype; + + function get_mock_run_id return integer; + function get_mock_block_run_id return integer; + procedure cleanup_dummy_coverage(a_run_id in integer); + procedure mock_coverage_data(a_run_id integer,a_user in varchar2); + + --Profiler coveage + procedure create_dummy_coverage_package; + procedure create_dummy_coverage_test; + procedure grant_exec_on_cov; + procedure mock_profiler_coverage_data(a_run_id integer,a_user in varchar2); + procedure drop_dummy_coverage_pkg; + + --Block coverage + procedure create_dummy_12_2_cov_pck; + procedure create_dummy_12_2_cov_test; + procedure mock_block_coverage_data(a_run_id integer,a_user in varchar2); + procedure cleanup_dummy_coverage(a_block_id in integer, a_prof_id in integer); + procedure grant_exec_on_12_2_cov; + +end; +/ diff --git a/test/ut3_tester_helper/main_helper.pkb b/test/ut3_tester_helper/main_helper.pkb index d9ffc06bd..ffccc3185 100644 --- a/test/ut3_tester_helper/main_helper.pkb +++ b/test/ut3_tester_helper/main_helper.pkb @@ -134,5 +134,25 @@ create or replace package body main_helper is where srj.job_name = a_job_name; end; + procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_list, a_item varchar2) is + begin + ut3.ut_utils.append_to_list(a_list,a_item); + end; + + procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_rows, a_item varchar2) is + begin + ut3.ut_utils.append_to_list(a_list,a_item); + end; + + procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_rows, a_item clob) is + begin + ut3.ut_utils.append_to_list(a_list,a_item); + end; + + procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_rows, a_items ut3.ut_varchar2_rows) is + begin + ut3.ut_utils.append_to_list(a_list,a_items); + end; + end; / diff --git a/test/ut3_tester_helper/main_helper.pks b/test/ut3_tester_helper/main_helper.pks index 296670707..7d349151c 100644 --- a/test/ut3_tester_helper/main_helper.pks +++ b/test/ut3_tester_helper/main_helper.pks @@ -36,6 +36,14 @@ create or replace package main_helper is procedure parse_dummy_test_as_ut3$user#; function get_job_count(a_job_name varchar2) return number; - + + procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_list, a_item varchar2); + + procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_rows, a_item varchar2); + + procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_rows, a_item clob); + + procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_rows, a_items ut3.ut_varchar2_rows); + end; / diff --git a/test/ut3_tester_helper/run_helper.pkb b/test/ut3_tester_helper/run_helper.pkb index bfc0e1c47..0fad905fd 100644 --- a/test/ut3_tester_helper/run_helper.pkb +++ b/test/ut3_tester_helper/run_helper.pkb @@ -522,6 +522,6 @@ create or replace package body run_helper is begin delete from ut3.ut_output_buffer_tmp; end; - + end; / diff --git a/test/ut3_tester_helper/run_helper.pks b/test/ut3_tester_helper/run_helper.pks index 03d55ec29..7d285d7af 100644 --- a/test/ut3_tester_helper/run_helper.pks +++ b/test/ut3_tester_helper/run_helper.pks @@ -1,6 +1,9 @@ create or replace package run_helper is + g_run_id integer; + type t_out_buff_tab is table of ut3.ut_output_buffer_tmp%rowtype; + type prof_runs_tab is table of ut3.plsql_profiler_runs%rowtype; procedure setup_cache_objects; procedure setup_cache; @@ -49,6 +52,6 @@ create or replace package run_helper is function ut_output_buffer_tmp return t_out_buff_tab pipelined; procedure delete_buffer; - + end; / diff --git a/test/ut3_tester_helper/test_event_list.tps b/test/ut3_tester_helper/test_event_list.tps new file mode 100644 index 000000000..8abf71b13 --- /dev/null +++ b/test/ut3_tester_helper/test_event_list.tps @@ -0,0 +1,2 @@ +create or replace type test_event_list as table of test_event_object; +/ diff --git a/test/ut3_tester_helper/test_event_object.tps b/test/ut3_tester_helper/test_event_object.tps new file mode 100644 index 000000000..da458d2c2 --- /dev/null +++ b/test/ut3_tester_helper/test_event_object.tps @@ -0,0 +1,15 @@ +declare + l_exists integer; +begin + select count(1) into l_exists from user_types where type_name = 'TEST_EVENT_OBJECT'; + if l_exists > 0 then + execute immediate 'drop type test_event_object force'; + end if; +end; +/ + +create or replace type test_event_object as object ( + event_type varchar2(1000), + event_doc xmltype +) +/ \ No newline at end of file diff --git a/test/ut3_user/reporters/test_coverage.pkb b/test/ut3_user/reporters/test_coverage.pkb new file mode 100644 index 000000000..c3617bc55 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage.pkb @@ -0,0 +1,51 @@ +create or replace package body test_coverage is + + function get_mock_run_id return integer is + v_result integer; + begin + return ut3_tester_helper.coverage_helper.get_mock_run_id(); + end; + + procedure create_dummy_coverage_package is + begin + ut3_tester_helper.coverage_helper.create_dummy_coverage_package(); + end; + + procedure create_dummy_coverage_test is + begin + ut3_tester_helper.coverage_helper.create_dummy_coverage_test(); + end; + + procedure mock_coverage_data(a_run_id integer) is + begin + ut3_tester_helper.coverage_helper.mock_coverage_data(a_run_id,user); + end; + + procedure create_dummy_coverage_pkg is + begin + create_dummy_coverage_package(); + create_dummy_coverage_test(); + ut3_tester_helper.coverage_helper.grant_exec_on_cov(); + end; + + procedure setup_dummy_coverage is + pragma autonomous_transaction; + begin + g_run_id := get_mock_run_id(); + ut3.ut_coverage.mock_coverage_id(g_run_id, ut3.ut_coverage.gc_proftab_coverage); + mock_coverage_data(g_run_id); + commit; + end; + + procedure drop_dummy_coverage_pkg is + begin + ut3_tester_helper.coverage_helper.drop_dummy_coverage_pkg(); + end; + + procedure cleanup_dummy_coverage is + begin + ut3_tester_helper.coverage_helper.cleanup_dummy_coverage(g_run_id); + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_coverage.pks b/test/ut3_user/reporters/test_coverage.pks new file mode 100644 index 000000000..d56597d11 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage.pks @@ -0,0 +1,20 @@ +create or replace package test_coverage is + + --%suite + --%suitepath(utplsql.test_user.reporters) + + g_run_id integer; + + --%beforeall + procedure create_dummy_coverage_pkg; + --%beforeall + procedure setup_dummy_coverage; + + + --%afterall + procedure drop_dummy_coverage_pkg; + --%afterall + procedure cleanup_dummy_coverage; + +end; +/ diff --git a/test/ut3_user/reporters/test_debug_reporter.pkb b/test/ut3_user/reporters/test_debug_reporter.pkb new file mode 100644 index 000000000..f108ec577 --- /dev/null +++ b/test/ut3_user/reporters/test_debug_reporter.pkb @@ -0,0 +1,45 @@ +create or replace package body test_debug_reporter as + + g_actual clob; + + procedure run_reporter is + l_results ut3.ut_varchar2_list; + begin + select * + bulk collect into l_results + from table( + ut3.ut.run( + 'test_reporters', + ut3.ut_debug_reporter() + ) + ); + g_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + end; + + procedure includes_event_info is + l_expected varchar2(32767); + begin + l_expected := '\s+' || + '(\s+' || + '[0-9\-]+T[0-9:\.]+<\/TIMESTAMP>\s+' || + '[0-9 \+:\.]+<\/TIME_FROM_START>\s+' || + '[0-9 \+:\.]+<\/TIME_FROM_PREVIOUS>\s+' || + '\w+<\/EVENT_NAME>\s+' || + '(\s|\S)+?<\/CALL_STACK>(\s|\S)+?' || + '<\/DEBUG>\s+)+' || + '<\/DEBUG_LOG>'; + ut.expect( g_actual ).to_match( l_expected, 'm' ); + end; + + procedure includes_run_info is + l_expected varchar2(32767); + begin + l_expected := '(\s|\S)+?(\s|\S)+?<\/UT_RUN_INFO>\s+<\/DEBUG>'; + ut.expect( g_actual ).to_match( l_expected, 'm' ); + end; + + +end; +/ + + diff --git a/test/ut3_user/reporters/test_debug_reporter.pks b/test/ut3_user/reporters/test_debug_reporter.pks new file mode 100644 index 000000000..4d7f7962f --- /dev/null +++ b/test/ut3_user/reporters/test_debug_reporter.pks @@ -0,0 +1,16 @@ +create or replace package test_debug_reporter as + + --%suite(ut_debug_reporter) + --%suitepath(utplsql.test_user.reporters) + + --%beforeall + procedure run_reporter; + + --%test(Includes event info for every event) + procedure includes_event_info; + + --%test(Includes run info) + procedure includes_run_info; + +end; +/ diff --git a/test/ut3_user/reporters/test_documentation_reporter.pkb b/test/ut3_user/reporters/test_documentation_reporter.pkb new file mode 100644 index 000000000..394594fa4 --- /dev/null +++ b/test/ut3_user/reporters/test_documentation_reporter.pkb @@ -0,0 +1 @@ +create or replace package body test_documentation_reporter as procedure report_produces_expected_out is l_results ut3.ut_varchar2_list; l_actual clob; l_expected varchar2(32767):=q'[%org utplsql tests helpers A suite for testing different outcomes from reporters A description of some context passing_test [% sec] a test with failing assertion [% sec] (FAILED - 1) a test raising unhandled exception [% sec] (FAILED - 2) a disabled test [0 sec] (DISABLED) % Failures: % 1) failing_test "Fails as values are different" Actual: 'number [1] ' (varchar2) was expected to equal: 'number [2] ' (varchar2)% at "UT3$USER#.TEST_REPORTERS%", line 36 ut3.ut.expect('number [1] ','Fails as values are different').to_equal('number [2] '); % % 2) erroring_test ORA-06502: PL/SQL: numeric or value error: character to number conversion error ORA-06512: at "UT3$USER#.TEST_REPORTERS", line 44% ORA-06512: at line 6 Finished in % seconds 4 tests, 1 failed, 1 errored, 1 disabled, 0 warning(s)%]'; begin select * bulk collect into l_results from table( ut3.ut.run( 'test_reporters', ut3.ut_documentation_reporter() ) ); l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); ut.expect(l_actual).to_be_like(l_expected); end; procedure check_encoding_included is begin reporters.check_xml_encoding_included(ut3.ut_sonar_test_reporter(), 'UTF-8'); end; end; / \ No newline at end of file diff --git a/test/ut3_user/reporters/test_documentation_reporter.pks b/test/ut3_user/reporters/test_documentation_reporter.pks new file mode 100644 index 000000000..ec6894c61 --- /dev/null +++ b/test/ut3_user/reporters/test_documentation_reporter.pks @@ -0,0 +1,10 @@ +create or replace package test_documentation_reporter as + + --%suite(ut_documentation_reporter) + --%suitepath(utplsql.test_user.reporters) + + --%test(Report produces expected output) + procedure report_produces_expected_out; + +end; +/ diff --git a/test/ut3_user/reporters/test_extended_coverage.pkb b/test/ut3_user/reporters/test_extended_coverage.pkb new file mode 100644 index 000000000..bb8bd27a6 --- /dev/null +++ b/test/ut3_user/reporters/test_extended_coverage.pkb @@ -0,0 +1,106 @@ +create or replace package body test_extended_coverage is + + g_run_id ut3.ut_coverage.tt_coverage_id_arr; + + function get_mock_block_run_id return integer is + begin + return ut3_tester_helper.coverage_helper.get_mock_block_run_id(); + end; + + function get_mock_proftab_run_id return integer is + begin + return ut3_tester_helper.coverage_helper.get_mock_run_id(); + end; + + procedure setup_dummy_coverage is + pragma autonomous_transaction; + begin + ut3_tester_helper.coverage_helper.create_dummy_12_2_cov_pck(); + ut3_tester_helper.coverage_helper.create_dummy_12_2_cov_test(); + ut3_tester_helper.coverage_helper.grant_exec_on_12_2_cov(); + g_run_id(ut3.ut_coverage.gc_block_coverage) := get_mock_block_run_id(); + g_run_id(ut3.ut_coverage.gc_proftab_coverage) := get_mock_proftab_run_id(); + ut3.ut_coverage.mock_coverage_id(g_run_id); + ut3_tester_helper.coverage_helper.mock_block_coverage_data(g_run_id(ut3.ut_coverage.gc_block_coverage),user); + ut3_tester_helper.coverage_helper.mock_profiler_coverage_data(g_run_id(ut3.ut_coverage.gc_proftab_coverage),user); + commit; + end; + + procedure cleanup_dummy_coverage is + begin + ut3_tester_helper.coverage_helper.cleanup_dummy_coverage(g_run_id(ut3.ut_coverage.gc_block_coverage) + ,g_run_id(ut3.ut_coverage.gc_proftab_coverage)); + end; + + procedure coverage_for_object is + l_expected clob; + l_actual clob; + l_results ut3.ut_varchar2_list; + begin + --Arrange + l_expected := '%%%'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_block_dummy_coverage', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long' ) + ) + ); + --Assert + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure coverage_for_schema is + l_expected clob; + l_actual clob; + l_results ut3.ut_varchar2_list; + begin + --Arrange + l_expected := '%%%'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_block_dummy_coverage', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_coverage_schemes => ut3.ut_varchar2_list( 'ut3' ) + ) + ); + --Assert + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + ut.expect(l_actual).to_be_like('%%%'); + end; + + procedure coverage_for_file is + l_expected clob; + l_actual clob; + l_results ut3.ut_varchar2_list; + l_file_path varchar2(250); + begin + --Arrange + l_file_path := lower('test/ut3.dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long.pkb'); + l_expected := '%%%'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_block_dummy_coverage', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_source_files => ut3.ut_varchar2_list( l_file_path ), + a_test_files => ut3.ut_varchar2_list( ) + ) + ); + --Assert + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_extended_coverage.pks b/test/ut3_user/reporters/test_extended_coverage.pks new file mode 100644 index 000000000..fe4a2ecc5 --- /dev/null +++ b/test/ut3_user/reporters/test_extended_coverage.pks @@ -0,0 +1,22 @@ +create or replace package test_extended_coverage is + + --%suite + --%suitepath(utplsql.test_user.reporters.test_coverage) + + --%beforeall + procedure setup_dummy_coverage; + + --%afterall + procedure cleanup_dummy_coverage; + + --%test(Coverage is gathered for specified object - extended coverage type) + procedure coverage_for_object; + + --%test(Coverage is gathered for specified schema - extended coverage type) + procedure coverage_for_schema; + + --%test(Coverage is gathered for specified file - extended coverage type) + procedure coverage_for_file; + +end; +/ diff --git a/test/ut3_user/reporters/test_realtime_reporter.pkb b/test/ut3_user/reporters/test_realtime_reporter.pkb new file mode 100644 index 000000000..6850ed687 --- /dev/null +++ b/test/ut3_user/reporters/test_realtime_reporter.pkb @@ -0,0 +1,401 @@ +create or replace package body test_realtime_reporter as + + g_events ut3_tester_helper.test_event_list := ut3_tester_helper.test_event_list(); + + procedure create_test_suites_and_run is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package check_realtime_reporting1 is + --%suite(suite ) + --%suitepath(realtime_reporting) + + --%context(test context) + + --%test(test 1 - OK) + procedure test_1_ok; + + --%test(test 2 - NOK) + procedure test_2_nok; + + --%endcontext + end;]'; + execute immediate q'[create or replace package body check_realtime_reporting1 is + procedure test_1_ok is + begin + ut3.ut.expect(1).to_equal(1); + end; + + procedure test_2_nok is + begin + ut3.ut.expect(1).to_equal(2); + end; + end;]'; + + execute immediate q'[create or replace package check_realtime_reporting2 is + --%suite + --%suitepath(realtime_reporting) + + --%test + procedure test_3_ok; + + --%test + procedure test_4_nok; + + --%test + --%disabled + procedure test_5; + end;]'; + execute immediate q'[create or replace package body check_realtime_reporting2 is + procedure test_3_ok is + begin + ut3.ut.expect(2).to_equal(2); + end; + + procedure test_4_nok is + begin + ut3.ut.expect(2).to_equal(3); + ut3.ut.expect(2).to_equal(4); + end; + + procedure test_5 is + begin + null; + end; + end;]'; + + execute immediate q'[create or replace package check_realtime_reporting3 is + --%suite + --%suitepath(realtime_reporting) + + --%test + procedure test_6_with_runtime_error; + + --%test + procedure test_7_with_serveroutput; + + --%afterall + procedure print_and_raise; + end;]'; + execute immediate q'[create or replace package body check_realtime_reporting3 is + procedure test_6_with_runtime_error is + l_actual integer; + begin + execute immediate 'select 6 from non_existing_table' into l_actual; + ut3.ut.expect(6).to_equal(l_actual); + end; + + procedure test_7_with_serveroutput is + begin + dbms_output.put_line('before test 7'); + ut3.ut.expect(7).to_equal(7); + dbms_output.put_line('after test 7'); + end; + + procedure print_and_raise is + begin + dbms_output.put_line('Now, a no_data_found exception is raised'); + dbms_output.put_line('dbms_output and error stack is reported for this suite.'); + dbms_output.put_line('A runtime error in afterall is counted as a warning.'); + raise no_data_found; + end; + end;]'; + + <> + declare + l_reporter ut3.ut_realtime_reporter := ut3.ut_realtime_reporter(); + begin + -- produce + ut3.ut_runner.run( + a_paths => ut3.ut_varchar2_list(':realtime_reporting'), + a_reporters => ut3.ut_reporters(l_reporter) + ); + -- consume + select ut3_tester_helper.test_event_object(item_type, xmltype(text)) + bulk collect into g_events + from table(ut3.ut_output_table_buffer(l_reporter.output_buffer.output_id).get_lines()) + where trim(text) is not null and item_type is not null; + end run_report_and_cache_result; + end create_test_suites_and_run; + + procedure xml_report_structure is + l_actual sys_refcursor; + l_expected sys_refcursor; + begin + open l_actual for + select t.event_doc.extract('/event/@type').getstringval() as event_type, + t.event_doc.extract('/event/suite/@id|/event/test/@id').getstringval() as item_id + from table(g_events) t; + open l_expected for + select 'pre-run' as event_type, null as item_id from dual union all + select 'pre-suite' as event_type, 'realtime_reporting' as item_id from dual union all + select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting3' as item_id from dual union all + select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error' as item_id from dual union all + select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error' as item_id from dual union all + select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput' as item_id from dual union all + select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput' as item_id from dual union all + select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting3' as item_id from dual union all + select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting2' as item_id from dual union all + select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_3_ok' as item_id from dual union all + select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_3_ok' as item_id from dual union all + select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_4_nok' as item_id from dual union all + select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_4_nok' as item_id from dual union all + select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_5' as item_id from dual union all + select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting2.test_5' as item_id from dual union all + select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting2' as item_id from dual union all + select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting1' as item_id from dual union all + select 'pre-suite' as event_type, 'realtime_reporting.check_realtime_reporting1.test context' as item_id from dual union all + select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_1_ok' as item_id from dual union all + select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_1_ok' as item_id from dual union all + select 'pre-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok' as item_id from dual union all + select 'post-test' as event_type, 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok' as item_id from dual union all + select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting1.test context' as item_id from dual union all + select 'post-suite' as event_type, 'realtime_reporting.check_realtime_reporting1' as item_id from dual union all + select 'post-suite' as event_type, 'realtime_reporting' as item_id from dual union all + select 'post-run' as event_type, null as item_id from dual; + ut.expect(l_actual).to_equal(l_expected); + end xml_report_structure; + + procedure pre_run_composite_nodes is + l_actual sys_refcursor; + l_expected sys_refcursor; + begin + open l_actual for + select x.node_path + from table(g_events) t, + xmltable( + q'[ + for $i in //(event|items|suite|test) + return {$i/string-join(ancestor-or-self::*/name(.), '/')} + ]' + passing t.event_doc + columns node_path varchar2(128) path '.' + ) x + where event_type = 'pre-run'; + open l_expected for + select 'event' as node_path from dual union all + select 'event/items' as node_path from dual union all + select 'event/items/suite' as node_path from dual union all + select 'event/items/suite/items' as node_path from dual union all + select 'event/items/suite/items/suite' as node_path from dual union all + select 'event/items/suite/items/suite/items' as node_path from dual union all + select 'event/items/suite/items/suite/items/test' as node_path from dual union all + select 'event/items/suite/items/suite/items/test' as node_path from dual union all + select 'event/items/suite/items/suite' as node_path from dual union all + select 'event/items/suite/items/suite/items' as node_path from dual union all + select 'event/items/suite/items/suite/items/test' as node_path from dual union all + select 'event/items/suite/items/suite/items/test' as node_path from dual union all + select 'event/items/suite/items/suite/items/test' as node_path from dual union all + select 'event/items/suite/items/suite' as node_path from dual union all + select 'event/items/suite/items/suite/items' as node_path from dual union all + select 'event/items/suite/items/suite/items/suite' as node_path from dual union all + select 'event/items/suite/items/suite/items/suite/items' as node_path from dual union all + select 'event/items/suite/items/suite/items/suite/items/test' as node_path from dual union all + select 'event/items/suite/items/suite/items/suite/items/test' as node_path from dual; + ut.expect(l_actual).to_equal(l_expected); + end pre_run_composite_nodes; + + procedure total_number_of_tests is + l_actual integer; + l_expected integer := 7; + begin + select t.event_doc.extract('/event/totalNumberOfTests/text()').getnumberval() + into l_actual + from table(g_events) t + where t.event_type = 'pre-run'; + ut.expect(l_actual).to_equal(l_expected); + end total_number_of_tests; + + procedure execution_time_of_run is + l_actual number; + begin + select t.event_doc.extract('/event/run/executionTime/text()').getnumberval() + into l_actual + from table(g_events) t + where t.event_type = 'post-run'; + ut.expect(l_actual).to_be_not_null; + end execution_time_of_run; + + procedure escaped_characters is + l_actual varchar2(32767); + l_expected varchar2(20) := 'suite <A>'; + begin + select t.event_doc.extract( + '//suite[@id="realtime_reporting.check_realtime_reporting1"]/description/text()' + ).getstringval() + into l_actual + from table(g_events) t + where t.event_type = 'pre-run'; + ut.expect(l_actual).to_equal(l_expected); + end escaped_characters; + + procedure pre_test_nodes is + l_actual sys_refcursor; + l_expected sys_refcursor; + begin + open l_actual for + select t.event_doc.extract('//test/testNumber/text()') + .getnumberval() as test_number, + t.event_doc.extract('//test/totalNumberOfTests/text()') + .getnumberval() as total_number_of_tests + from table(g_events) t + where t.event_type = 'pre-test' + and t.event_doc.extract('//test/@id').getstringval() is not null; + open l_expected for + select level as test_number, + 7 as total_number_of_tests + from dual + connect by level <= 7; + ut.expect(l_actual).to_equal(l_expected).unordered; + end pre_test_nodes; + + procedure post_test_nodes is + l_actual sys_refcursor; + l_expected sys_refcursor; + begin + open l_actual for + select t.event_doc.extract('//test/testNumber/text()') + .getnumberval() as test_number, + t.event_doc.extract('//test/totalNumberOfTests/text()') + .getnumberval() as total_number_of_tests + from table(g_events) t + where t.event_type = 'post-test' + and t.event_doc.extract('//test/@id').getstringval() is not null + and t.event_doc.extract('//test/startTime/text()').getstringval() is not null + and t.event_doc.extract('//test/endTime/text()').getstringval() is not null + and t.event_doc.extract('//test/executionTime/text()').getnumberval() is not null + and t.event_doc.extract('//test/counter/disabled/text()').getnumberval() is not null + and t.event_doc.extract('//test/counter/success/text()').getnumberval() is not null + and t.event_doc.extract('//test/counter/failure/text()').getnumberval() is not null + and t.event_doc.extract('//test/counter/error/text()').getnumberval() is not null + and t.event_doc.extract('//test/counter/warning/text()').getnumberval() is not null; + open l_expected for + select level as test_number, + 7 as total_number_of_tests + from dual + connect by level <= 7; + ut.expect(l_actual).to_equal(l_expected).unordered; + end post_test_nodes; + + procedure single_failed_message is + l_actual varchar2(32767); + l_expected varchar2(80) := ''; + begin + select t.event_doc.extract( + '/event/test/failedExpectations/expectation[1]/message/text()' + ).getstringval() + into l_actual + from table(g_events) t + where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval() + = 'realtime_reporting.check_realtime_reporting1.test context.test_2_nok'; + ut.expect(l_actual).to_equal(l_expected); + end single_failed_message; + + procedure multiple_failed_messages is + l_actual integer; + l_expected integer := 2; + begin + select count(*) + into l_actual + from table(g_events) t, + xmltable( + '/event/test/failedExpectations/expectation' + passing t.event_doc + columns message clob path 'message', + caller clob path 'caller' + ) x + where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval() + = 'realtime_reporting.check_realtime_reporting2.test_4_nok' + and x.message is not null + and x.caller is not null; + ut.expect(l_actual).to_equal(l_expected); + end multiple_failed_messages; + + procedure serveroutput_of_test is + l_actual clob; + l_expected_list ut3.ut_varchar2_list; + l_expected clob; + begin + select t.event_doc.extract('//event/test/serverOutput/text()').getstringval() + into l_actual + from table(g_events) t + where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval() + = 'realtime_reporting.check_realtime_reporting3.test_7_with_serveroutput'; + ut3_tester_helper.main_helper.append_to_list(l_expected_list, ''); + l_expected := ut3_tester_helper.main_helper.table_to_clob(l_expected_list); + ut.expect(l_actual).to_equal(l_expected); + end serveroutput_of_test; + + procedure serveroutput_of_testsuite is + l_actual clob; + l_expected_list ut3.ut_varchar2_list; + l_expected clob; + begin + select t.event_doc.extract('//event/suite/serverOutput/text()').getstringval() + into l_actual + from table(g_events) t + where t.event_doc.extract('/event[@type="post-suite"]/suite/@id').getstringval() + = 'realtime_reporting.check_realtime_reporting3'; + ut3_tester_helper.main_helper.append_to_list(l_expected_list, ''); + l_expected := ut3_tester_helper.main_helper.table_to_clob(l_expected_list); + ut.expect(l_actual).to_equal(l_expected); + end serveroutput_of_testsuite; + + procedure error_stack_of_test is + l_actual clob; + l_expected_list ut3.ut_varchar2_list; + l_expected clob; + begin + select t.event_doc.extract('//event/test/errorStack/text()').getstringval() + into l_actual + from table(g_events) t + where t.event_doc.extract('/event[@type="post-test"]/test/@id').getstringval() + = 'realtime_reporting.check_realtime_reporting3.test_6_with_runtime_error'; + ut3_tester_helper.main_helper.append_to_list(l_expected_list, ''); + l_expected := ut3_tester_helper.main_helper.table_to_clob(l_expected_list); + ut.expect(l_actual).to_be_like(l_expected); + end error_stack_of_test; + + procedure error_stack_of_testsuite is + l_actual clob; + l_expected_list ut3.ut_varchar2_list; + l_expected clob; + begin + select t.event_doc.extract('//event/suite/errorStack/text()').getstringval() + into l_actual + from table(g_events) t + where t.event_doc.extract('/event[@type="post-suite"]/suite/@id').getstringval() + = 'realtime_reporting.check_realtime_reporting3'; + ut3_tester_helper.main_helper.append_to_list(l_expected_list, ''); + l_expected := ut3_tester_helper.main_helper.table_to_clob(l_expected_list); + ut.expect(l_actual).to_be_like(l_expected); + end error_stack_of_testsuite; + + procedure get_description is + l_reporter ut3.ut_realtime_reporter; + l_actual varchar2(4000); + l_expected varchar2(80) := '%SQL Developer%'; + begin + l_reporter := ut3.ut_realtime_reporter(); + l_actual := l_reporter.get_description(); + ut.expect(l_actual).to_be_like(l_expected); + end get_description; + + procedure remove_test_suites is + pragma autonomous_transaction; + begin + execute immediate 'drop package check_realtime_reporting1'; + execute immediate 'drop package check_realtime_reporting2'; + execute immediate 'drop package check_realtime_reporting3'; + end remove_test_suites; + +end test_realtime_reporter; +/ diff --git a/test/ut3_user/reporters/test_realtime_reporter.pks b/test/ut3_user/reporters/test_realtime_reporter.pks new file mode 100644 index 000000000..04cd288e1 --- /dev/null +++ b/test/ut3_user/reporters/test_realtime_reporter.pks @@ -0,0 +1,55 @@ +create or replace package test_realtime_reporter as + + --%suite(ut_realtime_reporter) + --%suitepath(utplsql.test_user.reporters) + + --%beforeall + procedure create_test_suites_and_run; + + --%test(Provide a report structure with pre-run information and event based messages per suite and per test) + procedure xml_report_structure; + + --%test(Provide the total number of tests as part of the pre-run information structure) + procedure total_number_of_tests; + + --%test(Provide composite structure for items, an item is either a suite or a test, suites may have nested items) + procedure pre_run_composite_nodes; + + --%test(Provide the execution time as part of the post-run information structure) + procedure execution_time_of_run; + + --%test(Escape special characters in data such as the test suite description) + procedure escaped_characters; + + --%test(Provide a node before starting a test with testNumber and totalNumberOfTests) + procedure pre_test_nodes; + + --%test(Provide a node after completion of a test with test results) + procedure post_test_nodes; + + --%test(Provide expectation message for a failed test) + procedure single_failed_message; + + --%test(Provide expectation messages for each failed assertion of a failed test) + procedure multiple_failed_messages; + + --%test(Provide dbms_output produced in a test) + procedure serveroutput_of_test; + + --%test(Provide dbms_output produced in a testsuite) + procedure serveroutput_of_testsuite; + + --%test(Provide the error stack of a test) + procedure error_stack_of_test; + + --%test(Provide the error stack of a testsuite) + procedure error_stack_of_testsuite; + + --%test(Provide a description of the reporter explaining the use for SQL Developer) + procedure get_description; + + --%afterall + procedure remove_test_suites; + +end test_realtime_reporter; +/ From 620fd6186050f0a676117636aeb8a8c2ea423a3a Mon Sep 17 00:00:00 2001 From: lwasylow Date: Sun, 31 Mar 2019 17:42:06 +0100 Subject: [PATCH 25/31] Adding extra tests: reporters/test_coverage/test_cov_cobertura_reporter reporters/test_coverage/test_coverage_sonar_reporter reporters/test_coverage/test_coveralls_reporter reporters/test_coverage/test_html_extended_reporter --- test/install_ut3_user_tests.sql | 9 ++ .../test_cov_cobertura_reporter.pkb | 45 ++++++++++ .../test_cov_cobertura_reporter.pks | 10 +++ .../test_coverage_sonar_reporter.pkb | 39 ++++++++ .../test_coverage_sonar_reporter.pks | 13 +++ .../test_coverage/test_coveralls_reporter.pkb | 90 +++++++++++++++++++ .../test_coverage/test_coveralls_reporter.pks | 13 +++ .../test_html_extended_reporter.pkb | 29 ++++++ .../test_html_extended_reporter.pks | 10 +++ 9 files changed, 258 insertions(+) create mode 100644 test/ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pkb create mode 100644 test/ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pks create mode 100644 test/ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pkb create mode 100644 test/ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pks create mode 100644 test/ut3_user/reporters/test_coverage/test_coveralls_reporter.pkb create mode 100644 test/ut3_user/reporters/test_coverage/test_coveralls_reporter.pks create mode 100644 test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pkb create mode 100644 test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pks diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 5da99d802..688937a09 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -31,7 +31,12 @@ prompt Install user tests @@ut3_user/reporters/test_coverage.pks set define on @@install_above_12_1.sql 'ut3_user/reporters/test_extended_coverage.pks' +@@install_above_12_1.sql 'ut3_user/reporters/test_coverage/test_html_extended_reporter.pks' set define off +@@ut3_user/reporters/test_coverage/test_coveralls_reporter.pks +@@ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pks +@@ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pks + --set define on --@@install_below_12_2.sql 'ut3_user/reporters/test_proftag_coverage.pks' @@ -64,7 +69,11 @@ set define off @@ut3_user/reporters/test_coverage.pkb set define on @@install_above_12_1.sql 'ut3_user/reporters/test_extended_coverage.pkb' +@@install_above_12_1.sql 'ut3_user/reporters/test_coverage/test_html_extended_reporter.pkb' set define off +@@ut3_user/reporters/test_coverage/test_coveralls_reporter.pkb +@@ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pkb +@@ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pkb --set define on --@@install_below_12_2.sql 'ut3_user/reporters/test_coverage.pkb' diff --git a/test/ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pkb b/test/ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pkb new file mode 100644 index 000000000..ecfb66340 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pkb @@ -0,0 +1,45 @@ +create or replace package body test_cov_cobertura_reporter is + + procedure report_on_file is + l_results ut3.ut_varchar2_list; + l_expected clob; + l_actual clob; + begin + --Arrange + l_expected := + q'[ + + + +test/ut3.dummy_coverage.pkb + + + + + + + + + + + + +]'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coverage_cobertura_reporter( ), + a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), + a_test_files => ut3.ut_varchar2_list( ) + ) + ); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like(l_expected); + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pks b/test/ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pks new file mode 100644 index 000000000..365815964 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pks @@ -0,0 +1,10 @@ +create or replace package test_cov_cobertura_reporter is + + --%suite(ut_cov_cobertura_reporter) + --%suitepath(utplsql.test_user.reporters.test_coverage) + + --%test(reports on a project file mapped to database object) + procedure report_on_file; + +end test_cov_cobertura_reporter; +/ diff --git a/test/ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pkb b/test/ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pkb new file mode 100644 index 000000000..5cd53a093 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pkb @@ -0,0 +1,39 @@ +create or replace package body test_coverage_sonar_reporter is + + procedure report_on_file is + l_results ut3.ut_varchar2_list; + l_expected clob; + l_actual clob; + begin + --Arrange + l_expected := ' + + + + + + +'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), + a_test_files => ut3.ut_varchar2_list( ) + ) + ); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_equal(l_expected); + end; + + procedure check_encoding_included is + begin + reporters.check_xml_encoding_included(ut3.ut_coverage_sonar_reporter(), 'UTF-8'); + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pks b/test/ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pks new file mode 100644 index 000000000..7a98355cf --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pks @@ -0,0 +1,13 @@ +create or replace package test_coverage_sonar_reporter is + + --%suite(ut_coverge_sonar_reporter) + --%suitepath(utplsql.test_user.reporters.test_coverage) + + --%test(reports on a project file mapped to database object) + procedure report_on_file; + + --%test(Includes XML header with encoding when encoding provided) + procedure check_encoding_included; + +end; +/ diff --git a/test/ut3_user/reporters/test_coverage/test_coveralls_reporter.pkb b/test/ut3_user/reporters/test_coverage/test_coveralls_reporter.pkb new file mode 100644 index 000000000..0be0e8ce3 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_coveralls_reporter.pkb @@ -0,0 +1,90 @@ +create or replace package body test_coveralls_reporter is + + procedure report_on_file is + l_results ut3.ut_varchar2_list; + l_expected clob; + l_actual clob; + begin + --Arrange + l_expected := q'[{"source_files":[ +{ "name": "test/ut3.dummy_coverage.pkb", +"coverage": [ +null, +null, +null, +1, +0, +null, +1 +] +} +]} + ]'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coveralls_reporter( ), + a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), + a_test_files => ut3.ut_varchar2_list( ) + ) + ); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_equal(l_expected); + end; + + procedure report_zero_coverage is + l_results ut3.ut_varchar2_list; + l_expected clob; + l_actual clob; + pragma autonomous_transaction; + begin + --Arrange + l_expected := q'[{"source_files":[ +{ "name": "ut3.dummy_coverage", +"coverage": [ +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0 +] +} +]} + ]'; + + test_coverage.cleanup_dummy_coverage; + + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + 'ut3.test_dummy_coverage', + ut3.ut_coveralls_reporter(), + a_include_objects => ut3.ut_varchar2_list('UT3.DUMMY_COVERAGE') + ) + ); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_equal(l_expected); + + test_coverage.setup_dummy_coverage; + + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_coverage/test_coveralls_reporter.pks b/test/ut3_user/reporters/test_coverage/test_coveralls_reporter.pks new file mode 100644 index 000000000..d958b8f12 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_coveralls_reporter.pks @@ -0,0 +1,13 @@ +create or replace package test_coveralls_reporter is + + --%suite(ut_coveralls_reporter) + --%suitepath(utplsql.test_user.reporters.test_coverage) + + --%test(reports on a project file mapped to database object) + procedure report_on_file; + + --%test(reports zero coverage on each line of non-executed database object) + procedure report_zero_coverage; + +end; +/ diff --git a/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pkb b/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pkb new file mode 100644 index 000000000..36a6be015 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pkb @@ -0,0 +1,29 @@ +create or replace package body test_html_extended_reporter is + + procedure report_on_file is + l_results ut3.ut_varchar2_list; + l_expected varchar2(32767); + l_actual clob; + l_charset varchar2(100) := 'ISO-8859-1'; + begin + --Arrange + l_expected := '%%

UT3.DUMMY_COVERAGE_PACKAGE_WITH_AN_AMAZINGLY_LONG_NAME_THAT_YOU_WOULD_NOT_THINK_OF_IN_REAL_LIFE_PROJECT_BECAUSE_ITS_SIMPLY_TOO_LONG

%4 relevant lines. 3 lines covered (including 1 lines partially covered ) and 1 lines missed%'; + + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coverage_html_reporter(), + a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long.pkb' ), + a_test_files => ut3.ut_varchar2_list( ), + a_client_character_set => l_charset + ) + ); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like(l_expected); + end; + +end test_html_extended_reporter; +/ diff --git a/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pks b/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pks new file mode 100644 index 000000000..3158b3777 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pks @@ -0,0 +1,10 @@ +create or replace package test_html_extended_reporter is + + --%suite(ut_html_extended_reporter) + --%suitepath(utplsql.test_user.reporters.test_coverage.test_extended_coverage) + + --%test(reports on a project file mapped to database object in extended profiler coverage) + procedure report_on_file; + +end test_html_extended_reporter; +/ From c508e7937d8c56c25ed3723d29b78fc3bfdf61d0 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 1 Apr 2019 07:43:07 +0100 Subject: [PATCH 26/31] Adding tests: reporters/test_coverage reporters/test_coverage/test_html_proftab_reporter reporters/test_proftab_coverage --- test/install_ut3_user_tests.sql | 18 +-- test/ut3_tester/core.pkb | 1 + test/ut3_tester_helper/coverage_helper.pkb | 60 ++++++++ test/ut3_tester_helper/coverage_helper.pks | 5 +- test/ut3_user/reporters/test_coverage.pkb | 19 +-- .../test_html_proftab_reporter.pkb | 29 ++++ .../test_html_proftab_reporter.pks | 10 ++ .../reporters/test_proftab_coverage.pkb | 143 ++++++++++++++++++ .../reporters/test_proftab_coverage.pks | 27 ++++ 9 files changed, 284 insertions(+), 28 deletions(-) create mode 100644 test/ut3_user/reporters/test_coverage/test_html_proftab_reporter.pkb create mode 100644 test/ut3_user/reporters/test_coverage/test_html_proftab_reporter.pks create mode 100644 test/ut3_user/reporters/test_proftab_coverage.pkb create mode 100644 test/ut3_user/reporters/test_proftab_coverage.pks diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 688937a09..3f499a494 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -36,13 +36,12 @@ set define off @@ut3_user/reporters/test_coverage/test_coveralls_reporter.pks @@ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pks @@ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pks +set define on +@@install_below_12_2.sql 'ut3_user/reporters/test_proftab_coverage.pks' +@@install_below_12_2.sql 'ut3_user/reporters/test_coverage/test_html_proftab_reporter.pks' +set define off ---set define on ---@@install_below_12_2.sql 'ut3_user/reporters/test_proftag_coverage.pks' ---@@install_below_12_2.sql 'ut3_user/reporters/test_coverage/test_html_proftab_reporter.pks' ---set define off - @@ut3_user/expectations/unary/test_expect_not_to_be_null.pkb @@ut3_user/expectations/unary/test_expect_to_be_null.pkb @@ut3_user/expectations/unary/test_expect_to_be_empty.pkb @@ -74,11 +73,10 @@ set define off @@ut3_user/reporters/test_coverage/test_coveralls_reporter.pkb @@ut3_user/reporters/test_coverage/test_cov_cobertura_reporter.pkb @@ut3_user/reporters/test_coverage/test_coverage_sonar_reporter.pkb - ---set define on ---@@install_below_12_2.sql 'ut3_user/reporters/test_coverage.pkb' ---@@install_below_12_2.sql 'ut3_user/reporters/test_coverage/test_html_proftab_reporter.pkb' ---set define off +set define on +@@install_below_12_2.sql 'ut3_user/reporters/test_proftab_coverage.pkb' +@@install_below_12_2.sql 'ut3_user/reporters/test_coverage/test_html_proftab_reporter.pkb' +set define off set linesize 200 diff --git a/test/ut3_tester/core.pkb b/test/ut3_tester/core.pkb index a1da097a9..8843c129f 100644 --- a/test/ut3_tester/core.pkb +++ b/test/ut3_tester/core.pkb @@ -5,6 +5,7 @@ create or replace package body core is ut3.ut_coverage.set_develop_mode(true); --improve performance of test execution by disabling all compiler optimizations ut3_tester_helper.main_helper.execute_autonomous('ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=0'); + dbms_output.enable(null); end; end; diff --git a/test/ut3_tester_helper/coverage_helper.pkb b/test/ut3_tester_helper/coverage_helper.pkb index 06f42bbf3..feac8000d 100644 --- a/test/ut3_tester_helper/coverage_helper.pkb +++ b/test/ut3_tester_helper/coverage_helper.pkb @@ -106,6 +106,66 @@ create or replace package body coverage_helper is begin execute immediate q'[drop package ut3.dummy_coverage]'; exception when others then null; end; end; + + procedure create_dummy_coverage_test_1 is + pragma autonomous_transaction; + begin + execute immediate q'[create or replace package UT3.DUMMY_COVERAGE_1 is + procedure do_stuff; + procedure grant_myself; + end;]'; + execute immediate q'[create or replace package body UT3.DUMMY_COVERAGE_1 is + procedure do_stuff is + begin + if 1 = 2 then + dbms_output.put_line('should not get here'); + else + dbms_output.put_line('should get here'); + end if; + end; + + procedure grant_myself is + begin + execute immediate 'grant debug,execute on UT3.DUMMY_COVERAGE_1 to ut3$user#'; + end; + + end;]'; + execute immediate q'[create or replace package UT3.TEST_DUMMY_COVERAGE_1 is + --%suite(dummy coverage test 1) + --%suitepath(coverage_testing) + + --%test + procedure test_do_stuff; + + procedure grant_myself; + end;]'; + execute immediate q'[create or replace package body UT3.TEST_DUMMY_COVERAGE_1 is + procedure test_do_stuff is + begin + dummy_coverage_1.do_stuff; + end; + + procedure grant_myself is + begin + execute immediate 'grant debug,execute on UT3.TEST_DUMMY_COVERAGE_1 to ut3$user#'; + end; + + end;]'; + end; + + procedure drop_dummy_coverage_test_1 is + pragma autonomous_transaction; + begin + execute immediate q'[drop package UT3.DUMMY_COVERAGE_1]'; + execute immediate q'[drop package UT3.TEST_DUMMY_COVERAGE_1]'; + end; + + procedure grant_exec_on_cov_1 is + pragma autonomous_transaction; + begin + execute immediate 'begin UT3.DUMMY_COVERAGE_1.grant_myself(); end;'; + execute immediate 'begin UT3.TEST_DUMMY_COVERAGE_1.grant_myself(); end;'; + end; --12.2 Setup procedure create_dummy_12_2_cov_pck is diff --git a/test/ut3_tester_helper/coverage_helper.pks b/test/ut3_tester_helper/coverage_helper.pks index 427a965c0..73ff7b448 100644 --- a/test/ut3_tester_helper/coverage_helper.pks +++ b/test/ut3_tester_helper/coverage_helper.pks @@ -15,7 +15,10 @@ create or replace package coverage_helper is procedure grant_exec_on_cov; procedure mock_profiler_coverage_data(a_run_id integer,a_user in varchar2); procedure drop_dummy_coverage_pkg; - + procedure create_dummy_coverage_test_1; + procedure drop_dummy_coverage_test_1; + procedure grant_exec_on_cov_1; + --Block coverage procedure create_dummy_12_2_cov_pck; procedure create_dummy_12_2_cov_test; diff --git a/test/ut3_user/reporters/test_coverage.pkb b/test/ut3_user/reporters/test_coverage.pkb index c3617bc55..6b094f2ae 100644 --- a/test/ut3_user/reporters/test_coverage.pkb +++ b/test/ut3_user/reporters/test_coverage.pkb @@ -6,25 +6,10 @@ create or replace package body test_coverage is return ut3_tester_helper.coverage_helper.get_mock_run_id(); end; - procedure create_dummy_coverage_package is + procedure create_dummy_coverage_pkg is begin ut3_tester_helper.coverage_helper.create_dummy_coverage_package(); - end; - - procedure create_dummy_coverage_test is - begin ut3_tester_helper.coverage_helper.create_dummy_coverage_test(); - end; - - procedure mock_coverage_data(a_run_id integer) is - begin - ut3_tester_helper.coverage_helper.mock_coverage_data(a_run_id,user); - end; - - procedure create_dummy_coverage_pkg is - begin - create_dummy_coverage_package(); - create_dummy_coverage_test(); ut3_tester_helper.coverage_helper.grant_exec_on_cov(); end; @@ -33,7 +18,7 @@ create or replace package body test_coverage is begin g_run_id := get_mock_run_id(); ut3.ut_coverage.mock_coverage_id(g_run_id, ut3.ut_coverage.gc_proftab_coverage); - mock_coverage_data(g_run_id); + ut3_tester_helper.coverage_helper.mock_coverage_data(g_run_id,user); commit; end; diff --git a/test/ut3_user/reporters/test_coverage/test_html_proftab_reporter.pkb b/test/ut3_user/reporters/test_coverage/test_html_proftab_reporter.pkb new file mode 100644 index 000000000..8daf36513 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_html_proftab_reporter.pkb @@ -0,0 +1,29 @@ +create or replace package body test_html_proftab_reporter is + + procedure report_on_file is + l_results ut3.ut_varchar2_list; + l_expected varchar2(32767); + l_actual clob; + l_charset varchar2(100) := 'ISO-8859-1'; + begin + --Arrange + l_expected := '%%

UT3.DUMMY_COVERAGE

%3 relevant lines. 2 lines covered and 1 lines missed%'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coverage_html_reporter(), + a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage.pkb' ), + a_test_files => ut3.ut_varchar2_list( ), + a_client_character_set => l_charset + ) + ); + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + --Assert + ut.expect(l_actual).to_be_like(l_expected); + end; + +end test_html_proftab_reporter; +/ diff --git a/test/ut3_user/reporters/test_coverage/test_html_proftab_reporter.pks b/test/ut3_user/reporters/test_coverage/test_html_proftab_reporter.pks new file mode 100644 index 000000000..02973fbe0 --- /dev/null +++ b/test/ut3_user/reporters/test_coverage/test_html_proftab_reporter.pks @@ -0,0 +1,10 @@ +create or replace package test_html_proftab_reporter is + + --%suite(ut_html_proftab_reporter) + --%suitepath(utplsql.test_user.reporters.test_coverage.test_proftab_coverage) + + --%test(reports on a project file mapped to database object in profiler coverage) + procedure report_on_file; + +end test_html_proftab_reporter; +/ diff --git a/test/ut3_user/reporters/test_proftab_coverage.pkb b/test/ut3_user/reporters/test_proftab_coverage.pkb new file mode 100644 index 000000000..c5ad8c112 --- /dev/null +++ b/test/ut3_user/reporters/test_proftab_coverage.pkb @@ -0,0 +1,143 @@ +create or replace package body test_proftab_coverage is + + procedure create_dummy_coverage_test_1 is + begin + ut3_tester_helper.coverage_helper.create_dummy_coverage_test_1(); + ut3_tester_helper.coverage_helper.grant_exec_on_cov_1(); + end; + + procedure drop_dummy_coverage_test_1 is + begin + ut3_tester_helper.coverage_helper.drop_dummy_coverage_test_1(); + end; + + procedure coverage_for_object is + l_expected clob; + l_actual clob; + l_results ut3.ut_varchar2_list; + begin + --Arrange + l_expected := '%%'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage' ) + ) + ); + --Assert + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure coverage_for_object_no_owner is + l_expected clob; + l_actual clob; + l_results ut3.ut_varchar2_list; + begin + --Arrange + l_expected := '%%'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_include_objects => ut3.ut_varchar2_list( 'dummy_coverage' ) + ) + ); + --Assert + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure coverage_for_schema is + l_expected clob; + l_actual clob; + l_results ut3.ut_varchar2_list; + begin + --Arrange + l_expected := ''; + l_expected := '%'||l_expected||'%'||l_expected||'%'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_coverage_schemes => ut3.ut_varchar2_list( 'ut3' ) + ) + ); + --Assert + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure coverage_for_file is + l_expected clob; + l_actual clob; + l_results ut3.ut_varchar2_list; + l_file_path varchar2(100); + begin + --Arrange + l_file_path := lower('test/ut3.dummy_coverage.pkb'); + l_expected := '%%'; + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3.test_dummy_coverage', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_source_files => ut3.ut_varchar2_list( l_file_path ), + a_test_files => ut3.ut_varchar2_list( ) + ) + ); + --Assert + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_be_like(l_expected); + end; + + procedure coverage_tmp_data_refresh is + l_actual clob; + l_results ut3.ut_varchar2_list; + begin + --Arrange + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3:coverage_testing', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage' ) + ) + ); + ut3_tester_helper.coverage_helper.cleanup_dummy_coverage(test_coverage.g_run_id); + ut3_tester_helper.coverage_helper.drop_dummy_coverage_pkg(); + create_dummy_coverage_test_1; + + --Act + select * + bulk collect into l_results + from table( + ut3.ut.run( + a_path => 'ut3:coverage_testing', + a_reporter=> ut3.ut_coverage_sonar_reporter( ), + a_include_objects => ut3.ut_varchar2_list( 'ut3.dummy_coverage' ) + ) + ); + + --Assert + l_actual := ut3_tester_helper.main_helper.table_to_clob(l_results); + ut.expect(l_actual).to_equal(to_clob(' + +')); + end; + +end; +/ diff --git a/test/ut3_user/reporters/test_proftab_coverage.pks b/test/ut3_user/reporters/test_proftab_coverage.pks new file mode 100644 index 000000000..1bb5c10cd --- /dev/null +++ b/test/ut3_user/reporters/test_proftab_coverage.pks @@ -0,0 +1,27 @@ +create or replace package test_proftab_coverage is + + --%suite + --%suitepath(utplsql.test_user.reporters.test_coverage) + + --%test(Coverage is gathered for specified object - default coverage type) + procedure coverage_for_object; + + --%test(Coverage is gathered for specified schema - default coverage type) + procedure coverage_for_object_no_owner; + + --%test(Coverage is gathered for specified schema) + procedure coverage_for_schema; + + --%test(Coverage is gathered for specified file - default coverage type) + procedure coverage_for_file; + + --%test(Coverage data is not cached between runs - issue #562 ) + --%aftertest(ut3$user#.test_coverage.create_dummy_coverage_pkg) + --%aftertest(ut3$user#.test_coverage.setup_dummy_coverage) + --%aftertest(drop_dummy_coverage_test_1) + procedure coverage_tmp_data_refresh; + + procedure drop_dummy_coverage_test_1; + +end; +/ From 858a675c1e867563a9a0b135fd621bab554fb965 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 1 Apr 2019 12:41:34 +0100 Subject: [PATCH 27/31] Fixing broken test. Adding test: reporters/test_coverage/test_html_extended_reporter reporters/test_extended_coverage --- .travis/install.sh | 2 +- test/ut3_tester/core/test_ut_test.pkb | 10 ++++++++++ test/ut3_tester/core/test_ut_test.pks | 8 ++++++-- test/ut3_tester_helper/ut_example_tests.pkb | 13 ++++++++++++- test/ut3_tester_helper/ut_example_tests.pks | 4 ++++ .../test_coverage/test_html_extended_reporter.pkb | 2 +- .../test_coverage/test_html_extended_reporter.pks | 2 +- test/ut3_user/reporters/test_extended_coverage.pks | 2 +- 8 files changed, 36 insertions(+), 7 deletions(-) diff --git a/.travis/install.sh b/.travis/install.sh index a6a8a60b0..d8c2a87fc 100755 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -86,7 +86,7 @@ grant create public database link to $UT3_TESTER_HELPER; grant drop public database link to $UT3_TESTER_HELPER; set feedback on --Needed for testing coverage outside of main UT3 schema. -grant create any procedure, drop any procedure, execute any procedure, create any type, drop any type, execute any type, under any type, select any table, update any table, insert any table, delete any table, create any table, drop any table, alter any table, select any dictionary to $UT3_TESTER_HELPER; +grant create any procedure, drop any procedure, execute any procedure, create any type, drop any type, execute any type, under any type, select any table, update any table, insert any table, delete any table, create any table, drop any table, alter any table, select any dictionary, create any synonym, drop any synonym to $UT3_TESTER_HELPER; grant create job to $UT3_TESTER_HELPER; exit SQL diff --git a/test/ut3_tester/core/test_ut_test.pkb b/test/ut3_tester/core/test_ut_test.pkb index 183f9f9c9..2a85a323f 100644 --- a/test/ut3_tester/core/test_ut_test.pkb +++ b/test/ut3_tester/core/test_ut_test.pkb @@ -404,6 +404,16 @@ create or replace package body test_ut_test is ut.expect(l_test.result).to_equal(ut3.ut_utils.gc_error); end; + procedure create_synonym is + begin + ut3_tester_helper.ut_example_tests.create_synonym; + end; + + procedure drop_synonym is + begin + ut3_tester_helper.ut_example_tests.drop_synonym; + end; + procedure owner_name_null is --Arrange l_test ut3.ut_test := ut3.ut_test( diff --git a/test/ut3_tester/core/test_ut_test.pks b/test/ut3_tester/core/test_ut_test.pks index 3f10d5a6f..a2b0fd4f5 100644 --- a/test/ut3_tester/core/test_ut_test.pks +++ b/test/ut3_tester/core/test_ut_test.pks @@ -50,9 +50,13 @@ create or replace package test_ut_test is --%test(Fails when owner name invalid) procedure owner_name_invalid; - --TODO: FIX that + + procedure create_synonym; + procedure drop_synonym; + --%test(Runs test as current schema when owner name null) - --%disabled + --%beforetest(create_synonym) + --%aftertest(drop_synonym) procedure owner_name_null; procedure create_invalid_package; diff --git a/test/ut3_tester_helper/ut_example_tests.pkb b/test/ut3_tester_helper/ut_example_tests.pkb index d4954fff3..7e795d184 100644 --- a/test/ut3_tester_helper/ut_example_tests.pkb +++ b/test/ut3_tester_helper/ut_example_tests.pkb @@ -1,6 +1,17 @@ create or replace package body ut_example_tests as - + procedure create_synonym is + pragma autonomous_transaction; + begin + execute immediate 'create or replace synonym ut3_tester.ut_example_tests for ut3_tester_helper.ut_example_tests'; + end; + + procedure drop_synonym is + pragma autonomous_transaction; + begin + execute immediate 'drop synonym ut3_tester.ut_example_tests'; + end; + procedure set_g_number_0 as begin g_number := 0; diff --git a/test/ut3_tester_helper/ut_example_tests.pks b/test/ut3_tester_helper/ut_example_tests.pks index a7077a8a8..a62c02332 100644 --- a/test/ut3_tester_helper/ut_example_tests.pks +++ b/test/ut3_tester_helper/ut_example_tests.pks @@ -1,5 +1,9 @@ create or replace package ut_example_tests is g_number number; + + procedure create_synonym; + procedure drop_synonym; + procedure set_g_number_0; procedure add_1_to_g_number; procedure failing_procedure; diff --git a/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pkb b/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pkb index 36a6be015..02b275020 100644 --- a/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pkb +++ b/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pkb @@ -13,7 +13,7 @@ create or replace package body test_html_extended_reporter is bulk collect into l_results from table( ut3.ut.run( - a_path => 'ut3.test_dummy_coverage', + a_path => 'ut3.test_block_dummy_coverage', a_reporter=> ut3.ut_coverage_html_reporter(), a_source_files => ut3.ut_varchar2_list( 'test/ut3.dummy_coverage_package_with_an_amazingly_long_name_that_you_would_not_think_of_in_real_life_project_because_its_simply_too_long.pkb' ), a_test_files => ut3.ut_varchar2_list( ), diff --git a/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pks b/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pks index 3158b3777..dbe31b83d 100644 --- a/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pks +++ b/test/ut3_user/reporters/test_coverage/test_html_extended_reporter.pks @@ -1,7 +1,7 @@ create or replace package test_html_extended_reporter is --%suite(ut_html_extended_reporter) - --%suitepath(utplsql.test_user.reporters.test_coverage.test_extended_coverage) + --%suitepath(utplsql.test_user.reporters.test_extended_coverage) --%test(reports on a project file mapped to database object in extended profiler coverage) procedure report_on_file; diff --git a/test/ut3_user/reporters/test_extended_coverage.pks b/test/ut3_user/reporters/test_extended_coverage.pks index fe4a2ecc5..aaef20877 100644 --- a/test/ut3_user/reporters/test_extended_coverage.pks +++ b/test/ut3_user/reporters/test_extended_coverage.pks @@ -1,7 +1,7 @@ create or replace package test_extended_coverage is --%suite - --%suitepath(utplsql.test_user.reporters.test_coverage) + --%suitepath(utplsql.test_user.reporters) --%beforeall procedure setup_dummy_coverage; From 1642f478e2be5abcfd065df1e37874f3b085bf3c Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 1 Apr 2019 17:11:59 +0100 Subject: [PATCH 28/31] Adding test: unary/test_expect_to_be_not_null --- test/install_ut3_user_tests.sql | 2 + .../unary/test_expect_to_be_not_null.pkb | 264 ++++++++++++++++++ .../unary/test_expect_to_be_not_null.pks | 97 +++++++ 3 files changed, 363 insertions(+) create mode 100644 test/ut3_user/expectations/unary/test_expect_to_be_not_null.pkb create mode 100644 test/ut3_user/expectations/unary/test_expect_to_be_not_null.pks diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 3f499a494..015c1573e 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -10,6 +10,7 @@ prompt Install user tests @@ut3_user/expectations/unary/test_expect_to_be_empty.pks @@ut3_user/expectations/unary/test_expect_to_have_count.pks @@ut3_user/expectations/unary/test_expect_to_be_true_false.pks +@@ut3_user/expectations/unary/test_expect_to_be_not_null.pks @@ut3_user/expectations/binary/test_equal.pks @@ut3_user/expectations/binary/test_expect_to_be_less_than.pks @@ut3_user/expectations/binary/test_be_less_or_equal.pks @@ -47,6 +48,7 @@ set define off @@ut3_user/expectations/unary/test_expect_to_be_empty.pkb @@ut3_user/expectations/unary/test_expect_to_have_count.pkb @@ut3_user/expectations/unary/test_expect_to_be_true_false.pkb +@@ut3_user/expectations/unary/test_expect_to_be_not_null.pkb @@ut3_user/expectations/binary/test_equal.pkb @@ut3_user/expectations/binary/test_expect_to_be_less_than.pkb @@ut3_user/expectations/binary/test_be_less_or_equal.pkb diff --git a/test/ut3_user/expectations/unary/test_expect_to_be_not_null.pkb b/test/ut3_user/expectations/unary/test_expect_to_be_not_null.pkb new file mode 100644 index 000000000..0e747eb85 --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_be_not_null.pkb @@ -0,0 +1,264 @@ +create or replace package body test_expect_to_be_not_null +is + gc_object_name constant varchar2(30) := 't_to_be_not_null_test'; + gc_nested_table_name constant varchar2(30) := 'tt_to_be_not_null_test'; + gc_varray_name constant varchar2(30) := 'tv_to_be_not_null_test'; + + procedure cleanup_expectations is + begin + ut3_tester_helper.main_helper.clear_expectations( ); + end; + + procedure create_types is + pragma autonomous_transaction; + begin + execute immediate 'create type '||gc_object_name||' is object (dummy number)'; + execute immediate 'create type '||gc_nested_table_name||' is table of number'; + execute immediate 'create type '||gc_varray_name||' is varray(1) of number'; + end; + + procedure drop_types is + pragma autonomous_transaction; + begin + execute immediate 'drop type '||gc_object_name; + execute immediate 'drop type '||gc_nested_table_name; + execute immediate 'drop type '||gc_varray_name; + end; + + procedure blob_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'blob', 'to_blob(''abc'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure empty_blob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'blob', 'empty_blob()'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure boolean_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'boolean', 'true'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure clob_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'clob', 'to_clob(''abc'')'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure empty_clob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'clob', 'empty_clob()'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure date_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'date', 'sysdate'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure number_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'number', '1234'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure timestamp_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'timestamp', 'systimestamp'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure timestamp_with_ltz_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'timestamp with local time zone', 'systimestamp'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure timestamp_with_tz_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'timestamp with time zone', 'systimestamp'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure varchar2_not_null is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'varchar2(4000)', '''abc'''); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure initialized_object is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_not_null', gc_object_name, gc_object_name||'(1)', 'object' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure initialized_nested_table is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_not_null', gc_nested_table_name, gc_nested_table_name||'()', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure initialized_varray is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_not_null', gc_varray_name, gc_varray_name||'()', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_equal(0); + end; + + procedure null_blob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'blob', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_boolean is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'boolean', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + + procedure null_clob is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'clob', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + + procedure null_date is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'date', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + + procedure null_number is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'number', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + + procedure null_timestamp is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'timestamp', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + + procedure null_timestamp_with_ltz is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'timestamp with local time zone', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + + procedure null_timestamp_with_tz is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'timestamp with time zone', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + + procedure null_varchar2 is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'varchar2(4000)', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure null_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_block('to_be_not_null', 'anydata', 'null'); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure uninit_object_in_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_not_null', gc_object_name, 'null', 'object' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure uninit_nested_table_in_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_not_null', gc_nested_table_name, 'null', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + + procedure uninit_varray_in_anydata is + begin + --Act + execute immediate ut3_tester_helper.expectations_helper.unary_expectation_object_block( + 'to_be_not_null', gc_varray_name, 'null', 'collection' + ); + --Assert + ut.expect(ut3_tester_helper.main_helper.get_failed_expectations_num).to_be_greater_than(0); + end; + +end test_expect_to_be_not_null; +/ diff --git a/test/ut3_user/expectations/unary/test_expect_to_be_not_null.pks b/test/ut3_user/expectations/unary/test_expect_to_be_not_null.pks new file mode 100644 index 000000000..7cb7cc265 --- /dev/null +++ b/test/ut3_user/expectations/unary/test_expect_to_be_not_null.pks @@ -0,0 +1,97 @@ +create or replace package test_expect_to_be_not_null +is + --%suite(to_be_not_null) + --%suitepath(utplsql.test_user.expectations.unary) + + --%aftereach + procedure cleanup_expectations; + + --%beforeall + procedure create_types; + + --%afterall + procedure drop_types; + + --%test(Gives success for not null blob) + procedure blob_not_null; + + --%test(Gives success for empty blob) + procedure empty_blob; + + --%test(Gives success for not null boolean) + procedure boolean_not_null; + + --%test(Gives success for not null clob) + procedure clob_not_null; + + --%test(Gives success for empty clob) + procedure empty_clob; + + --%test(Gives success for not null date) + procedure date_not_null; + + --%test(Gives success for not null number) + procedure number_not_null; + + --%test(Gives success for not null timestamp) + procedure timestamp_not_null; + + --%test(Gives success for not null timestamp with local time zone) + procedure timestamp_with_ltz_not_null; + + --%test(Gives success for not null timestamp with time zone) + procedure timestamp_with_tz_not_null; + + --%test(Gives success for not null varchar2) + procedure varchar2_not_null; + + --%test(Gives success for initialized object within anydata) + procedure initialized_object; + + --%test(Gives success for initialized nested table within anydata) + procedure initialized_nested_table; + + --%test(Gives success for initialized varray within anydata) + procedure initialized_varray; + + --%test(Gives failure with null blob) + procedure null_blob; + + --%test(Gives failure with null boolean) + procedure null_boolean; + + --%test(Gives failure with null clob) + procedure null_clob; + + --%test(Gives failure with null date) + procedure null_date; + + --%test(Gives failure with null number) + procedure null_number; + + --%test(Gives failure null timestamp) + procedure null_timestamp; + + --%test(Gives failure with null timestamp with local time zone) + procedure null_timestamp_with_ltz; + + --%test(Gives failure with null timestamp with time zone) + procedure null_timestamp_with_tz; + + --%test(Gives failure with null varchar2) + procedure null_varchar2; + + --%test(Gives failure with null anydata) + procedure null_anydata; + + --%test(Gives failure with uninitialized object within anydata) + procedure uninit_object_in_anydata; + + --%test(Gives failure with uninitialized nested table within anydata) + procedure uninit_nested_table_in_anydata; + + --%test(Gives failure with uninitialized varray within anydata) + procedure uninit_varray_in_anydata; + +end test_expect_to_be_not_null; +/ From 30d27fedef6428c1a7d17752f2f82a3e54ef46b4 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Mon, 1 Apr 2019 19:23:27 +0100 Subject: [PATCH 29/31] Adding global setup --- test/install_and_run_tests.sh | 3 ++- test/install_ut3_user_tests.sql | 3 ++- test/ut3_tester/core.pkb | 2 +- test/ut3_tester_helper/main_helper.pkb | 4 ++++ test/ut3_tester_helper/main_helper.pks | 2 ++ test/ut3_user/test_user.pkb | 12 ++++++++++++ test/ut3_user/test_user.pks | 10 ++++++++++ 7 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 test/ut3_user/test_user.pkb create mode 100644 test/ut3_user/test_user.pks diff --git a/test/install_and_run_tests.sh b/test/install_and_run_tests.sh index 9f5752b5e..4359934ab 100755 --- a/test/install_and_run_tests.sh +++ b/test/install_and_run_tests.sh @@ -27,4 +27,5 @@ time utPLSQL-cli/bin/utplsql run ${UT3_TESTER_HELPER}/${UT3_TESTER_HELPER_PASSWO -f=ut_junit_reporter -o=junit_test_results.xml \ -f=ut_tfs_junit_reporter -o=tfs_test_results.xml \ -f=ut_documentation_reporter -o=test_results.log -s \ --scc +-scc \ +-q diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 015c1573e..547fc2762 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -5,6 +5,7 @@ whenever oserror exit failure rollback alter session set plsql_optimize_level=0; prompt Install user tests +@@ut3_user/test_user.pks @@ut3_user/expectations/unary/test_expect_not_to_be_null.pks @@ut3_user/expectations/unary/test_expect_to_be_null.pks @@ut3_user/expectations/unary/test_expect_to_be_empty.pks @@ -42,7 +43,7 @@ set define on @@install_below_12_2.sql 'ut3_user/reporters/test_coverage/test_html_proftab_reporter.pks' set define off - +@@ut3_user/test_user.pkb @@ut3_user/expectations/unary/test_expect_not_to_be_null.pkb @@ut3_user/expectations/unary/test_expect_to_be_null.pkb @@ut3_user/expectations/unary/test_expect_to_be_empty.pkb diff --git a/test/ut3_tester/core.pkb b/test/ut3_tester/core.pkb index 8843c129f..64ebc0093 100644 --- a/test/ut3_tester/core.pkb +++ b/test/ut3_tester/core.pkb @@ -5,7 +5,7 @@ create or replace package body core is ut3.ut_coverage.set_develop_mode(true); --improve performance of test execution by disabling all compiler optimizations ut3_tester_helper.main_helper.execute_autonomous('ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=0'); - dbms_output.enable(null); + --dbms_output.enable(null); end; end; diff --git a/test/ut3_tester_helper/main_helper.pkb b/test/ut3_tester_helper/main_helper.pkb index ffccc3185..64dc24e8d 100644 --- a/test/ut3_tester_helper/main_helper.pkb +++ b/test/ut3_tester_helper/main_helper.pkb @@ -154,5 +154,9 @@ create or replace package body main_helper is ut3.ut_utils.append_to_list(a_list,a_items); end; + procedure output_null is + begin + dbms_output.enable(null); + end; end; / diff --git a/test/ut3_tester_helper/main_helper.pks b/test/ut3_tester_helper/main_helper.pks index 7d349151c..e3b9f11bf 100644 --- a/test/ut3_tester_helper/main_helper.pks +++ b/test/ut3_tester_helper/main_helper.pks @@ -45,5 +45,7 @@ create or replace package main_helper is procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_rows, a_items ut3.ut_varchar2_rows); + procedure output_null; + end; / diff --git a/test/ut3_user/test_user.pkb b/test/ut3_user/test_user.pkb new file mode 100644 index 000000000..36ed8e898 --- /dev/null +++ b/test/ut3_user/test_user.pkb @@ -0,0 +1,12 @@ +create or replace package body test_user is + + procedure global_setup is + begin + ut3.ut_coverage.set_develop_mode(true); + --improve performance of test execution by disabling all compiler optimizations + ut3_tester_helper.main_helper.execute_autonomous('ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=0'); + --dbms_output.enable(null); + end; + +end; +/ diff --git a/test/ut3_user/test_user.pks b/test/ut3_user/test_user.pks new file mode 100644 index 000000000..ea0435efd --- /dev/null +++ b/test/ut3_user/test_user.pks @@ -0,0 +1,10 @@ +create or replace package test_user is + + --%suite + --%suitepath(utplsql) + + --%beforeall + procedure global_setup; + +end; +/ From 5d3b18c35238eb38a8c468bc7d209076254276a2 Mon Sep 17 00:00:00 2001 From: lwasylow Date: Tue, 2 Apr 2019 17:25:42 +0100 Subject: [PATCH 30/31] Update cleanup script after branching from random order branch --- development/cleanup.sh | 4 ++-- development/template.env.sh | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/development/cleanup.sh b/development/cleanup.sh index fb0415ed1..313e382ca 100755 --- a/development/cleanup.sh +++ b/development/cleanup.sh @@ -26,12 +26,12 @@ drop user ${UT3_USER} cascade; begin for i in ( - select decode(owner,'PUBLIC','drop public synonym "','drop synonym "'||owner||'"."')|| synonym_name ||'"' drop_orphaned_synonym from dba_synonyms a + select decode(owner,'PUBLIC','drop public synonym "','drop synonym "'||owner||'"."')|| synonym_name ||'"' drop_orphaned_synonym, owner||'.'||synonym_name syn from dba_synonyms a where not exists (select 1 from dba_objects b where (a.table_name=b.object_name and a.table_owner=b.owner or b.owner='SYS' and a.table_owner=b.object_name) ) and a.table_owner not in ('SYS','SYSTEM') ) loop - dbms_output.put_line(i.drop_orphaned_synonym); execute immediate i.drop_orphaned_synonym; + dbms_output.put_line('synonym '||i.syn||' dropped'); end loop; end; / diff --git a/development/template.env.sh b/development/template.env.sh index 285b60577..54497cc30 100755 --- a/development/template.env.sh +++ b/development/template.env.sh @@ -18,5 +18,3 @@ export UT3_TESTER_HELPER_PASSWORD=ut3 export UT3_TABLESPACE=users export UT3_USER="UT3\$USER#" export UT3_USER_PASSWORD=ut3 -export UT3_TESTER_HELPER=ut3_tester_helper -export UT3_TESTER_HELPER_PASSWORD=ut3 From b56d27adfcd2ecae307665727a35c3ee9ef41171 Mon Sep 17 00:00:00 2001 From: Jacek Gebal Date: Wed, 3 Apr 2019 09:45:47 +0100 Subject: [PATCH 31/31] Fixed invalid suitepath in `core` package. Updated cli version to 3.1.6 Added top package `utplsql` with dbms_output.enable for both test users. Renamed suitepath to match username (ut3_tester) --- .travis.yml | 2 +- development/template.env.sh | 2 +- test/common_helper/utplsql.pkb | 11 +++++++++++ test/common_helper/utplsql.pks | 9 +++++++++ test/install_and_run_tests.sh | 3 +-- test/install_ut3_tester_tests.sql | 2 ++ test/install_ut3_user_tests.sql | 3 +++ test/ut3_tester/core.pkb | 6 +----- test/ut3_tester/core.pks | 2 +- .../core/annotations/test_annot_throws_exception.pks | 2 +- .../core/annotations/test_annotation_manager.pks | 2 +- .../core/annotations/test_annotation_parser.pks | 2 +- .../annotations/test_before_after_annotations.pks | 2 +- .../core/expectations/test_expectation_processor.pks | 2 +- test/ut3_tester/core/test_file_mapper.pks | 2 +- test/ut3_tester/core/test_output_buffer.pks | 2 +- test/ut3_tester/core/test_suite_builder.pks | 2 +- test/ut3_tester/core/test_suite_manager.pks | 2 +- test/ut3_tester/core/test_ut_executable.pks | 2 +- test/ut3_tester/core/test_ut_suite.pks | 2 +- test/ut3_tester/core/test_ut_test.pks | 2 +- test/ut3_tester/core/test_ut_utils.pks | 2 +- test/ut3_tester_helper/main_helper.pkb | 4 ---- test/ut3_tester_helper/main_helper.pks | 2 -- test/ut3_user/api/test_ut_runner.pkb | 11 +++++++---- test/ut3_user/test_user.pkb | 1 - 26 files changed, 50 insertions(+), 34 deletions(-) create mode 100644 test/common_helper/utplsql.pkb create mode 100644 test/common_helper/utplsql.pks diff --git a/.travis.yml b/.travis.yml index f23501e05..af8a07cee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,7 +47,7 @@ env: #utPLSQL released version directory - UTPLSQL_DIR="utPLSQL_latest_release" - SELFTESTING_BRANCH=${TRAVIS_BRANCH} - - UTPLSQL_CLI_VERSION="3.1.0" + - UTPLSQL_CLI_VERSION="3.1.6" # Maven - MAVEN_HOME=/usr/local/maven - MAVEN_CFG=$HOME/.m2 diff --git a/development/template.env.sh b/development/template.env.sh index 54497cc30..ab4f4efa2 100755 --- a/development/template.env.sh +++ b/development/template.env.sh @@ -4,7 +4,7 @@ export SQLCLI=sql # For sqlcl client #export SQLCLI=sqlplus # For sqlplus client export CONNECTION_STR=127.0.0.1:1521/xe # Adjust the connect string export ORACLE_PWD=oracle # Adjust your local SYS password -export UTPLSQL_CLI_VERSION="3.1.0" +export UTPLSQL_CLI_VERSION="3.1.6" export SELFTESTING_BRANCH=develop export UTPLSQL_DIR="utPLSQL_latest_release" diff --git a/test/common_helper/utplsql.pkb b/test/common_helper/utplsql.pkb new file mode 100644 index 000000000..c752caa41 --- /dev/null +++ b/test/common_helper/utplsql.pkb @@ -0,0 +1,11 @@ +create or replace package body utplsql is + + procedure global_setup is + begin + --we need to have dbms_output enable for our tests + --TODO - move this to utPLSQL-cli once cli has support for it. + dbms_output.enable(null); + end; + +end; +/ diff --git a/test/common_helper/utplsql.pks b/test/common_helper/utplsql.pks new file mode 100644 index 000000000..51adbb117 --- /dev/null +++ b/test/common_helper/utplsql.pks @@ -0,0 +1,9 @@ +create or replace package utplsql is + + --%suite + + --%beforeall + procedure global_setup; + +end; +/ diff --git a/test/install_and_run_tests.sh b/test/install_and_run_tests.sh index 983b20b96..be7857346 100755 --- a/test/install_and_run_tests.sh +++ b/test/install_and_run_tests.sh @@ -26,5 +26,4 @@ time utPLSQL-cli/bin/utplsql run ${UT3_TESTER_HELPER}/${UT3_TESTER_HELPER_PASSWO -f=ut_sonar_test_reporter -o=test_results.xml \ -f=ut_junit_reporter -o=junit_test_results.xml \ -f=ut_tfs_junit_reporter -o=tfs_test_results.xml \ --f=ut_documentation_reporter -o=test_results.log -s \ --scc +-f=ut_documentation_reporter -o=test_results.log -s diff --git a/test/install_ut3_tester_tests.sql b/test/install_ut3_tester_tests.sql index 1d4155c3d..6b3a5356c 100644 --- a/test/install_ut3_tester_tests.sql +++ b/test/install_ut3_tester_tests.sql @@ -4,6 +4,8 @@ whenever oserror exit failure rollback alter session set plsql_optimize_level=0; +@@common_helper/utplsql.pks +@@common_helper/utplsql.pkb --Install tests @@ut3_tester/core.pks diff --git a/test/install_ut3_user_tests.sql b/test/install_ut3_user_tests.sql index 547fc2762..67014f815 100644 --- a/test/install_ut3_user_tests.sql +++ b/test/install_ut3_user_tests.sql @@ -4,6 +4,9 @@ whenever oserror exit failure rollback alter session set plsql_optimize_level=0; +@@common_helper/utplsql.pks +@@common_helper/utplsql.pkb + prompt Install user tests @@ut3_user/test_user.pks @@ut3_user/expectations/unary/test_expect_not_to_be_null.pks diff --git a/test/ut3_tester/core.pkb b/test/ut3_tester/core.pkb index 8038bf236..505388a8f 100644 --- a/test/ut3_tester/core.pkb +++ b/test/ut3_tester/core.pkb @@ -1,14 +1,10 @@ create or replace package body core is - procedure global_setup is + procedure global_setup is begin ut3.ut_coverage.set_develop_mode(true); --improve performance of test execution by disabling all compiler optimizations ut3_tester_helper.main_helper.execute_autonomous('ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=0'); - dbms_output.enable(null); - - --trn on helper output - ut3_tester_helper.main_helper.output_null; end; end; diff --git a/test/ut3_tester/core.pks b/test/ut3_tester/core.pks index 0edf2ae54..4565c47f3 100644 --- a/test/ut3_tester/core.pks +++ b/test/ut3_tester/core.pks @@ -1,7 +1,7 @@ create or replace package core is --%suite - --%suitepath(utplsql) + --%suitepath(utplsql.ut3_tester) --%beforeall procedure global_setup; diff --git a/test/ut3_tester/core/annotations/test_annot_throws_exception.pks b/test/ut3_tester/core/annotations/test_annot_throws_exception.pks index 6c2df63b1..ce2e6ba7a 100644 --- a/test/ut3_tester/core/annotations/test_annot_throws_exception.pks +++ b/test/ut3_tester/core/annotations/test_annot_throws_exception.pks @@ -1,7 +1,7 @@ create or replace package test_annot_throws_exception is --%suite(annotations - throws) - --%suitepath(utplsql.framework_tester.core.annotations) + --%suitepath(utplsql.ut3_tester.core.annotations) --%beforeall procedure recollect_tests_results; diff --git a/test/ut3_tester/core/annotations/test_annotation_manager.pks b/test/ut3_tester/core/annotations/test_annotation_manager.pks index b40965c74..b2f351a6f 100644 --- a/test/ut3_tester/core/annotations/test_annotation_manager.pks +++ b/test/ut3_tester/core/annotations/test_annotation_manager.pks @@ -1,7 +1,7 @@ create or replace package test_annotation_manager is --%suite(ut_annotation_manager) - --%suitepath(utplsql.framework_tester.core.annotations) + --%suitepath(utplsql.ut3_tester.core.annotations) --%aftereach procedure cleanup_annotation_cache; diff --git a/test/ut3_tester/core/annotations/test_annotation_parser.pks b/test/ut3_tester/core/annotations/test_annotation_parser.pks index bfd06c7b9..a4fe3ed70 100644 --- a/test/ut3_tester/core/annotations/test_annotation_parser.pks +++ b/test/ut3_tester/core/annotations/test_annotation_parser.pks @@ -1,7 +1,7 @@ create or replace package test_annotation_parser is --%suite(ut_annotation_parser) - --%suitepath(utplsql.framework_tester.core.annotations) + --%suitepath(utplsql.ut3_tester.core.annotations) --%test(Treats procedure level annotations as package level, if mixed with comments) procedure test_proc_comments; diff --git a/test/ut3_tester/core/annotations/test_before_after_annotations.pks b/test/ut3_tester/core/annotations/test_before_after_annotations.pks index 1a0a2ebaf..062efff48 100644 --- a/test/ut3_tester/core/annotations/test_before_after_annotations.pks +++ b/test/ut3_tester/core/annotations/test_before_after_annotations.pks @@ -1,7 +1,7 @@ create or replace package test_before_after_annotations is --%suite(annotations - beforetest and aftertest) - --%suitepath(utplsql.framework_tester.core.annotations) + --%suitepath(utplsql.ut3_tester.core.annotations) subtype t_procedure_name is varchar2(250) not null; type t_procedures is table of t_procedure_name; diff --git a/test/ut3_tester/core/expectations/test_expectation_processor.pks b/test/ut3_tester/core/expectations/test_expectation_processor.pks index c6f80f20d..5b63c8938 100644 --- a/test/ut3_tester/core/expectations/test_expectation_processor.pks +++ b/test/ut3_tester/core/expectations/test_expectation_processor.pks @@ -1,7 +1,7 @@ create or replace package test_expectation_processor is --%suite(expectation_processor) - --%suitepath(utplsql.framework_tester.core.expectations) + --%suitepath(utplsql.ut3_tester.core.expectations) --%context(who_called_expectation) diff --git a/test/ut3_tester/core/test_file_mapper.pks b/test/ut3_tester/core/test_file_mapper.pks index 4f9c41bd0..b2443766c 100644 --- a/test/ut3_tester/core/test_file_mapper.pks +++ b/test/ut3_tester/core/test_file_mapper.pks @@ -1,7 +1,7 @@ create or replace package test_file_mapper is --%suite(file_mapper) - --%suitepath(utplsql.framework_tester.core) + --%suitepath(utplsql.ut3_tester.core) --%test(Maps file paths into database objects using default mappings) procedure default_mappings; diff --git a/test/ut3_tester/core/test_output_buffer.pks b/test/ut3_tester/core/test_output_buffer.pks index cf069427d..9a4cfa68a 100644 --- a/test/ut3_tester/core/test_output_buffer.pks +++ b/test/ut3_tester/core/test_output_buffer.pks @@ -1,7 +1,7 @@ create or replace package test_output_buffer is --%suite(output_buffer) - --%suitepath(utplsql.framework_tester.core) + --%suitepath(utplsql.ut3_tester.core) --%test(Receives a line from buffer table and deletes) procedure test_receive; diff --git a/test/ut3_tester/core/test_suite_builder.pks b/test/ut3_tester/core/test_suite_builder.pks index bae124e3e..5715cfd85 100644 --- a/test/ut3_tester/core/test_suite_builder.pks +++ b/test/ut3_tester/core/test_suite_builder.pks @@ -1,6 +1,6 @@ create or replace package test_suite_builder is --%suite(suite_builder) - --%suitepath(utplsql.framework_tester.core) + --%suitepath(utplsql.ut3_tester.core) --%context(suite) --%displayname(--%suite annotation) diff --git a/test/ut3_tester/core/test_suite_manager.pks b/test/ut3_tester/core/test_suite_manager.pks index 43f288224..ed318b890 100644 --- a/test/ut3_tester/core/test_suite_manager.pks +++ b/test/ut3_tester/core/test_suite_manager.pks @@ -1,7 +1,7 @@ create or replace package test_suite_manager is --%suite(suite_manager) - --%suitepath(utplsql.framework_tester.core) + --%suitepath(utplsql.ut3_tester.core) procedure create_dummy_long_test_package; diff --git a/test/ut3_tester/core/test_ut_executable.pks b/test/ut3_tester/core/test_ut_executable.pks index acb91d1be..882f0f209 100644 --- a/test/ut3_tester/core/test_ut_executable.pks +++ b/test/ut3_tester/core/test_ut_executable.pks @@ -1,7 +1,7 @@ create or replace package test_ut_executable is --%suite(ut_executable) - --%suitepath(utplsql.framework_tester.core) + --%suitepath(utplsql.ut3_tester.core) --%context(do_execute) diff --git a/test/ut3_tester/core/test_ut_suite.pks b/test/ut3_tester/core/test_ut_suite.pks index fd351d87f..385d00fc7 100644 --- a/test/ut3_tester/core/test_ut_suite.pks +++ b/test/ut3_tester/core/test_ut_suite.pks @@ -1,7 +1,7 @@ create or replace package test_ut_suite is --%suite(ut_suite) - --%suitepath(utplsql.core.framework_tester) + --%suitepath(utplsql.ut3_tester.core) --%beforeeach procedure cleanup_package_state; diff --git a/test/ut3_tester/core/test_ut_test.pks b/test/ut3_tester/core/test_ut_test.pks index a2b0fd4f5..18ea6613f 100644 --- a/test/ut3_tester/core/test_ut_test.pks +++ b/test/ut3_tester/core/test_ut_test.pks @@ -1,7 +1,7 @@ create or replace package test_ut_test is --%suite(ut_test) - --%suitepath(utplsql.framework_tester.core) + --%suitepath(utplsql.ut3_tester.core) --%beforeeach procedure cleanup_package_state; diff --git a/test/ut3_tester/core/test_ut_utils.pks b/test/ut3_tester/core/test_ut_utils.pks index ecc2596c5..d8fca3b60 100644 --- a/test/ut3_tester/core/test_ut_utils.pks +++ b/test/ut3_tester/core/test_ut_utils.pks @@ -1,7 +1,7 @@ create or replace package test_ut_utils is --%suite(ut_utils) - --%suitepath(utplsql.framework_tester.core) + --%suitepath(utplsql.ut3_tester.core) function get_numeric_delimiter return varchar2; diff --git a/test/ut3_tester_helper/main_helper.pkb b/test/ut3_tester_helper/main_helper.pkb index 64dc24e8d..ffccc3185 100644 --- a/test/ut3_tester_helper/main_helper.pkb +++ b/test/ut3_tester_helper/main_helper.pkb @@ -154,9 +154,5 @@ create or replace package body main_helper is ut3.ut_utils.append_to_list(a_list,a_items); end; - procedure output_null is - begin - dbms_output.enable(null); - end; end; / diff --git a/test/ut3_tester_helper/main_helper.pks b/test/ut3_tester_helper/main_helper.pks index e3b9f11bf..7d349151c 100644 --- a/test/ut3_tester_helper/main_helper.pks +++ b/test/ut3_tester_helper/main_helper.pks @@ -45,7 +45,5 @@ create or replace package main_helper is procedure append_to_list(a_list in out nocopy ut3.ut_varchar2_rows, a_items ut3.ut_varchar2_rows); - procedure output_null; - end; / diff --git a/test/ut3_user/api/test_ut_runner.pkb b/test/ut3_user/api/test_ut_runner.pkb index 0c47248bd..298c15c2a 100644 --- a/test/ut3_user/api/test_ut_runner.pkb +++ b/test/ut3_user/api/test_ut_runner.pkb @@ -69,6 +69,7 @@ end;'; procedure close_newly_opened_transaction is l_output_data dbms_output.chararr; l_num_lines integer := 100000; + pragma autonomous_transaction; begin --Arrange create_test_spec(); @@ -285,12 +286,13 @@ end;'; end; procedure db_link_cleanup is - begin - ut3_tester_helper.run_helper.db_link_cleanup(); - end; + pragma autonomous_transaction; + begin + ut3_tester_helper.run_helper.db_link_cleanup(); + end; procedure db_link_setup is - l_service_name varchar2(100); + pragma autonomous_transaction; begin ut3_tester_helper.run_helper.db_link_setup(); end; @@ -298,6 +300,7 @@ end;'; procedure raises_20213_on_fail_link is l_reporter ut3.ut_documentation_reporter := ut3.ut_documentation_reporter(); l_lines ut3.ut_varchar2_list; + pragma autonomous_transaction; begin --Arrange --Act diff --git a/test/ut3_user/test_user.pkb b/test/ut3_user/test_user.pkb index 07db53ede..ca84a1c69 100644 --- a/test/ut3_user/test_user.pkb +++ b/test/ut3_user/test_user.pkb @@ -5,7 +5,6 @@ create or replace package body test_user is ut3.ut_coverage.set_develop_mode(true); --improve performance of test execution by disabling all compiler optimizations ut3_tester_helper.main_helper.execute_autonomous('ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=0'); - --dbms_output.enable(null); end; end;