From 099ef71bee78c8499be538c11e1ef3e08968e152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20G=C4=99bal?= Date: Tue, 13 Dec 2016 22:56:08 +0000 Subject: [PATCH 1/2] Added a test to indicate the bug. --- tests/RunAll.sql | 1 + ....cursor.GivesFailureForDifferentValues.sql | 4 +-- ...qual.cursor.GivesSuccessForEqualValues.sql | 4 +-- ...ual.cursor.ReturnsCursorDataForFailure.sql | 25 +++++++++++++++++++ 4 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 tests/asssertions/ut.expect.to_equal.cursor.ReturnsCursorDataForFailure.sql diff --git a/tests/RunAll.sql b/tests/RunAll.sql index c9c572d3d..82591fb6b 100644 --- a/tests/RunAll.sql +++ b/tests/RunAll.sql @@ -40,6 +40,7 @@ create table ut$test_table (val varchar2(1)); @@lib/RunTest.sql asssertions/ut.expect.to_equal.anydata.PutsObjectStrucureIntoAssert.sql @@lib/RunTest.sql asssertions/ut.expect.to_equal.cursor.GivesFailureForDifferentValues.sql @@lib/RunTest.sql asssertions/ut.expect.to_equal.cursor.GivesSuccessForEqualValues.sql +@@lib/RunTest.sql asssertions/ut.expect.to_equal.cursor.ReturnsCursorDataForFailure.sql @@lib/RunTest.sql asssertions/ut.expect.to_equal.GivesFailureForDifferentDataTypes.sql @@lib/RunTest.sql asssertions/ut.expect.to_equal.GivesFailureForDifferentValues.sql @@lib/RunTest.sql asssertions/ut.expect.to_equal.GivesFailureWhenActualIsNull.sql diff --git a/tests/asssertions/ut.expect.to_equal.cursor.GivesFailureForDifferentValues.sql b/tests/asssertions/ut.expect.to_equal.cursor.GivesFailureForDifferentValues.sql index 0dec91dd2..fa22e5e03 100644 --- a/tests/asssertions/ut.expect.to_equal.cursor.GivesFailureForDifferentValues.sql +++ b/tests/asssertions/ut.expect.to_equal.cursor.GivesFailureForDifferentValues.sql @@ -6,8 +6,8 @@ declare l_result integer; begin --Act - open l_actual for select * from user_objects; - open l_expected for select * from user_objects where rownum <5; + open l_actual for select * from user_objects where rownum <=4; + open l_expected for select * from user_objects where rownum <=5; ut.expect(l_actual).to_equal(l_expected); l_result := ut_assert_processor.get_aggregate_asserts_result(); --Assert diff --git a/tests/asssertions/ut.expect.to_equal.cursor.GivesSuccessForEqualValues.sql b/tests/asssertions/ut.expect.to_equal.cursor.GivesSuccessForEqualValues.sql index df6baedf7..01ccc1d32 100644 --- a/tests/asssertions/ut.expect.to_equal.cursor.GivesSuccessForEqualValues.sql +++ b/tests/asssertions/ut.expect.to_equal.cursor.GivesSuccessForEqualValues.sql @@ -6,8 +6,8 @@ declare l_result integer; begin --Act - open l_actual for select * from user_objects; - open l_expected for select * from user_objects; + open l_actual for select * from user_objects where rownum <=4; + open l_expected for select * from user_objects where rownum <=4; ut.expect(l_actual).to_equal(l_expected); l_result := ut_assert_processor.get_aggregate_asserts_result(); --Assert diff --git a/tests/asssertions/ut.expect.to_equal.cursor.ReturnsCursorDataForFailure.sql b/tests/asssertions/ut.expect.to_equal.cursor.ReturnsCursorDataForFailure.sql new file mode 100644 index 000000000..b8ca8ae5b --- /dev/null +++ b/tests/asssertions/ut.expect.to_equal.cursor.ReturnsCursorDataForFailure.sql @@ -0,0 +1,25 @@ +PROMPT Gives a success when comparing values of different cursors +--Arrange +declare + l_actual SYS_REFCURSOR; + l_expected SYS_REFCURSOR; + l_result ut_assert_result; + l_expected_string varchar2(32767); + l_actual_string varchar2(32767); +begin +--Act + open l_actual for select * from user_objects where rownum <=2; + open l_expected for select * from user_objects where rownum <=3; + ut.expect(l_actual).to_equal(l_expected); + + l_result := treat( ut_assert_processor.get_asserts_results()(1) as ut_assert_result ); + l_expected_string := l_result.expected_value_string; + l_actual_string := l_result.actual_value_string; +--Assert + if nvl(:test_result, ut_utils.tr_success) = ut_utils.tr_success and l_expected_string != 'NULL' and l_actual_string != 'NULL' then + :test_result := ut_utils.tr_success; + else + dbms_output.put_line('expected not null values and got: '''||l_expected_string||''', '''||l_actual_string||'''' ); + end if; +end; +/ From 3d32d69ce6e569caf56a321639338e28380ee651 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20G=C4=99bal?= Date: Tue, 13 Dec 2016 22:56:21 +0000 Subject: [PATCH 2/2] Fixed a bug in cursor reporting. --- source/expectations/data_values/ut_data_value_refcursor.tpb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/expectations/data_values/ut_data_value_refcursor.tpb b/source/expectations/data_values/ut_data_value_refcursor.tpb index 497493a9e..fd6556d46 100644 --- a/source/expectations/data_values/ut_data_value_refcursor.tpb +++ b/source/expectations/data_values/ut_data_value_refcursor.tpb @@ -30,9 +30,9 @@ create or replace type body ut_data_value_refcursor as begin if self.datavalue is not null then ut_assert_processor.set_xml_nls_params(); + dbms_xmlgen.restartQuery(self.datavalue); dbms_xmlgen.setMaxRows(self.datavalue, 100); l_result := dbms_xmlgen.getxml(self.datavalue); - dbms_xmlgen.restartQuery(self.datavalue); ut_assert_processor.reset_nls_params(); end if; return ut_utils.to_string(l_result);