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

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion source/install.sql
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
prompt Installing utplsql framework

whenever sqlerror exit failure rollback
whenever oserror exit failure rollback

prompt Installing utplsql framework
@@types/ut_object.tps
@@types/ut_objects_list.tps
@@types/ut_composite_object.tps
Expand Down
31 changes: 31 additions & 0 deletions source/ut_assert.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,37 @@ create or replace package body ut_assert is
begin
build_assert_result(a_condition, 'this', 'boolean', 'boolean', ut_utils.to_string(true), ut_utils.to_string(a_condition), ut_utils.to_string(a_msg));
end;

-- Strings assertions
procedure is_like(a_msg in varchar2, a_checking_string in varchar2, a_mask in varchar, a_escape_char in varchar2) is
l_condition boolean;
begin
if a_escape_char is not null then
l_condition := a_checking_string like a_mask escape a_escape_char;
else
l_condition := a_checking_string like a_mask;
end if;
build_assert_result(l_condition, 'is_like', 'varchar2', 'varchar2', ut_utils.to_string('like ' || a_mask), ut_utils.to_string(l_condition), a_msg);
end;
procedure is_like(a_msg in varchar2, a_checking_string in varchar2, a_mask in varchar) is
begin
is_like(a_msg, a_checking_string, a_mask, null);
end;
procedure is_like(a_checking_string in varchar2, a_mask in varchar2) is
begin
is_like(a_msg => null, a_checking_string => a_checking_string, a_mask => a_mask);
end;

procedure is_matching(a_msg in varchar2, a_checking_string in varchar2, a_pattern in varchar2, a_modifier in varchar2 default null) is
l_condition boolean := sys.standard.regexp_like(a_checking_string, a_pattern, a_modifier);
begin
build_assert_result(l_condition, 'is_matching', 'varchar2', 'varchar2', ut_utils.to_string('pattern ' || a_pattern), ut_utils.to_string(l_condition), a_msg);
end;

procedure is_matching(a_checking_string in varchar2, a_pattern in varchar2, a_modifier in varchar2 default null) is
begin
is_matching(null, a_checking_string, a_pattern, a_modifier);
end;

procedure is_null(a_actual in number) is
begin
Expand Down
27 changes: 18 additions & 9 deletions source/ut_assert.pks
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,36 @@ create or replace package ut_assert authid current_user as
procedure report_error(a_message in varchar2);
function get_asserts_results return ut_objects_list;

/* Just need something to play with for now */
procedure are_equal(a_expected in number, a_actual in number);
-- General assertion
procedure this(a_msg in varchar2, a_condition in boolean);
procedure this(a_condition in boolean);

-- Equality assertions
procedure are_equal(a_msg in varchar2, a_expected in number, a_actual in number);
procedure are_equal(a_expected in number, a_actual in number);

procedure are_equal(a_expected in varchar2, a_actual in varchar2);
procedure are_equal(a_msg in varchar2, a_expected in varchar2, a_actual in varchar2);
procedure are_equal(a_expected in varchar2, a_actual in varchar2);

procedure are_equal(a_expected in date, a_actual in date);
procedure are_equal(a_msg in varchar2, a_expected in date, a_actual in date);
procedure are_equal(a_expected in date, a_actual in date);

procedure are_equal(a_expected in timestamp_unconstrained, a_actual in timestamp_unconstrained);
procedure are_equal(a_msg in varchar2, a_expected in timestamp_unconstrained, a_actual in timestamp_unconstrained);
procedure are_equal(a_expected in timestamp_unconstrained, a_actual in timestamp_unconstrained);

procedure are_equal(a_expected in anydata, a_actual in anydata);
procedure are_equal(a_msg in varchar2, a_expected in anydata, a_actual in anydata);
procedure are_equal(a_expected in anydata, a_actual in anydata);

procedure are_equal(a_expected in sys_refcursor, a_actual in sys_refcursor);
procedure are_equal(a_msg in varchar2, a_expected in sys_refcursor, a_actual in sys_refcursor);
procedure are_equal(a_expected in sys_refcursor, a_actual in sys_refcursor);

procedure this(a_condition in boolean);
procedure this(a_msg in varchar2, a_condition in boolean);
-- Pattern matching assertions
procedure is_like(a_msg in varchar2, a_checking_string in varchar2, a_mask in varchar, a_escape_char in varchar2);
procedure is_like(a_msg in varchar2, a_checking_string in varchar2, a_mask in varchar);
procedure is_like(a_checking_string in varchar2, a_mask in varchar2);

procedure is_matching(a_msg in varchar2, a_checking_string in varchar2,a_pattern in varchar2, a_modifier in varchar2 default null);
procedure is_matching(a_checking_string in varchar2,a_pattern in varchar2, a_modifier in varchar2 default null);

procedure is_null(a_actual in number);
procedure is_null(a_msg in varchar2, a_actual in number);
Expand Down
8 changes: 8 additions & 0 deletions tests/RunAll.sql
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,14 @@ set serveroutput on size unlimited format truncated
@@lib/RunTest.sql ut_assert/ut_assert.is_null.date.GivesFailureForNotNullValue.sql
@@lib/RunTest.sql ut_assert/ut_assert.is_null.date.GivesSuccessForNullValue.sql

@@lib/RunTest.sql ut_assert/ut_assert.is_like.GivesSuccessForLikeString.sql
@@lib/RunTest.sql ut_assert/ut_assert.is_like.GivesSuccessForLikeStringWithEscape.sql
@@lib/RunTest.sql ut_assert/ut_assert.is_like.GivesFailureForLikeString.sql
@@lib/RunTest.sql ut_assert/ut_assert.is_like.GivesFailureForLikeStringWithEscape.sql
@@lib/RunTest.sql ut_assert/ut_assert.is_matching.GivesSuccessForMatchingString.sql
@@lib/RunTest.sql ut_assert/ut_assert.is_matching.GivesSuccessForMatchingStringWithModifier.sql
@@lib/RunTest.sql ut_assert/ut_assert.is_matching.GivesFailureForMatchingString.sql

@@lib/RunTest.sql ut_utils/ut_utils.to_string.verySmallNumber.sql
@@lib/RunTest.sql ut_utils/ut_utils.to_string.veryBigNumber.sql
@@lib/RunTest.sql ut_utils/ut_utils.to_string.Date.sql
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ begin
dbms_output.put_line('expected an exception but nothing was raised' );
exception
when others then
if sqlerrm like '%PLS-00307: too many declarations of ''ARE_EQUAL'' match this call%' then
if sqlerrm like '%PLS-00307: % ''ARE_EQUAL'' %' then
:test_result := ut_utils.tr_success;
else
dbms_output.put_line( sqlerrm );
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
PROMPT Gives a failure when comparing different timestamp datatypes

@@ut_assert/common/ut_assert.are_equal.scalar.common.sql 'timestamp(9)' 'to_Timestamp(''2016-09-06 22:36:11.123456789'',''yyyy-mm-dd hh24:mi:ss.xff'')' 'to_Timestamp(''2016-09-06 22:36:11.123456788'',''yyyy-mm-dd hh24:mi:ss.xff'')' 'ut_utils.tr_failure'
@@ut_assert/common/ut_assert.are_equal.scalar.common.sql 'timestamp(9)' 'to_Timestamp(''2016-09-06 22:36:11.123456789'',''yyyy-mm-dd hh24:mi:ss.ff'')' 'to_Timestamp(''2016-09-06 22:36:11.123456788'',''yyyy-mm-dd hh24:mi:ss.ff'')' 'ut_utils.tr_failure'
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
PROMPT Gives a success when comparing equal timestamp datatypes

@@ut_assert/common/ut_assert.are_equal.scalar.common.sql 'timestamp(9)' 'to_Timestamp(''2016-09-06 22:36:11.123456789'',''yyyy-mm-dd hh24:mi:ss.xff'')' 'to_Timestamp(''2016-09-06 22:36:11.123456789'',''yyyy-mm-dd hh24:mi:ss.xff'')' 'ut_utils.tr_success'
@@ut_assert/common/ut_assert.are_equal.scalar.common.sql 'timestamp(9)' 'to_Timestamp(''2016-09-06 22:36:11.123456789'',''yyyy-mm-dd hh24:mi:ss.ff'')' 'to_Timestamp(''2016-09-06 22:36:11.123456789'',''yyyy-mm-dd hh24:mi:ss.ff'')' 'ut_utils.tr_success'
17 changes: 17 additions & 0 deletions tests/ut_assert/ut_assert.is_like.GivesFailureForLikeString.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--Arrange
declare
l_mask varchar2(10) := 'a%b';
l_string varchar2(50) := 'asdfsdfsdfc';
l_result integer;
begin
--Act
ut_assert.is_like(l_string, l_mask);
l_result := ut_assert.get_aggregate_asserts_result();
--Assert
if l_result = ut_utils.tr_failure then
:test_result := ut_utils.tr_success;
else
dbms_output.put_line('expected: string like'''||l_mask||''', got: '''||l_result||'''' );
end if;
end;
/
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--Arrange
declare
l_mask varchar2(10) := 'a%\_b';
l_string varchar2(50) := 'asdfsdfsdf_b';
l_result integer;
begin
--Act
ut_assert.is_like('', l_string, l_mask, '/');
l_result := ut_assert.get_aggregate_asserts_result();
--Assert
if l_result = ut_utils.tr_failure then
:test_result := ut_utils.tr_success;
else
dbms_output.put_line('expected: string like'''||l_mask||''' with escape ''/'', got: '''||l_result||'''' );
end if;
end;
/
17 changes: 17 additions & 0 deletions tests/ut_assert/ut_assert.is_like.GivesSuccessForLikeString.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--Arrange
declare
l_mask varchar2(10) := 'a%b';
l_string varchar2(50) := 'asdfsdfsdfb';
l_result integer;
begin
--Act
ut_assert.is_like(l_string, l_mask);
l_result := ut_assert.get_aggregate_asserts_result();
--Assert
if l_result = ut_utils.tr_success then
:test_result := ut_utils.tr_success;
else
dbms_output.put_line('expected: string like'''||l_mask||''', got: '''||l_result||'''' );
end if;
end;
/
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--Arrange
declare
l_mask varchar2(10) := 'a%/_b';
l_string varchar2(50) := 'asdfsdfsdf_b';
l_result integer;
begin
--Act
ut_assert.is_like('', l_string, l_mask, '/');
l_result := ut_assert.get_aggregate_asserts_result();
--Assert
if l_result = ut_utils.tr_success then
:test_result := ut_utils.tr_success;
else
dbms_output.put_line('expected: string like'''||l_mask||''' with escape ''/'', got: '''||l_result||'''' );
end if;
end;
/
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
PL/SQL Developer Test script 3.0
17
--Arrange
declare
l_mask varchar2(20) := '[a-z]+\d[a-z]+';
l_string varchar2(50) := 'asd123asd';
l_result integer;
begin
--Act
ut_assert.is_matching(l_string, l_mask);
l_result := ut_assert.get_aggregate_asserts_result();
--Assert
if l_result = ut_utils.tr_failure then
:test_result := ut_utils.tr_success;
else
dbms_output.put_line('expected: string like'''||l_mask||''', got: '''||l_result||'''' );
end if;
end;
--/
1
test_result
0
5
0
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--Arrange
declare
l_mask varchar2(20) := '[a-z]+\d+[a-z]+';
l_string varchar2(50) := 'asd123asd';
l_result integer;
begin
--Act
ut_assert.is_matching(l_string, l_mask);
l_result := ut_assert.get_aggregate_asserts_result();
--Assert
if l_result = ut_utils.tr_success then
:test_result := ut_utils.tr_success;
else
dbms_output.put_line('expected: string like'''||l_mask||''', got: '''||l_result||'''' );
end if;
end;
/
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--Arrange
declare
l_mask varchar2(20) := '[a-z]+\d+[a-z]+';
l_string varchar2(50) := 'asd123asd';
l_result integer;
begin
--Act
ut_assert.is_matching(l_string, l_mask);
l_result := ut_assert.get_aggregate_asserts_result();
--Assert
if l_result = ut_utils.tr_success then
:test_result := ut_utils.tr_success;
else
dbms_output.put_line('expected: string like'''||l_mask||''', got: '''||l_result||'''' );
end if;
end;
/
5 changes: 4 additions & 1 deletion tests/ut_utils/ut_utils.to_string.Timestamp.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@ PROMPT Returns a full string representation of a timestamp with maximum precissi
--Arrange
declare
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-31 23:59:59.123456789';
l_expected varchar2(100);
l_result varchar2(100);
l_delimiter varchar2(1);
begin
select substr(value, 1, 1) into l_delimiter from nls_session_parameters t where t.parameter = 'NLS_NUMERIC_CHARACTERS';
l_expected := '2016-12-31 23:59:59'||l_delimiter||'123456789';
--Act
l_result := ut_utils.to_String(l_value);
--Assert
Expand Down
5 changes: 5 additions & 0 deletions tests/ut_utils/ut_utils.to_string.verySmallNumber.sql
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@ declare
l_value number := 0.123456789012345678901234567890123456789;
l_expected varchar2(100) := '.123456789012345678901234567890123456789';
l_result varchar2(100);
l_delimiter varchar2(1);
begin
--Act
select substr(value, 1, 1) into l_delimiter from nls_session_parameters t where t.parameter = 'NLS_NUMERIC_CHARACTERS';
l_expected := l_delimiter||'123456789012345678901234567890123456789';

l_result := ut_utils.to_String(l_value);

--Assert
if l_result = l_expected then
:test_result := ut_utils.tr_success;
Expand Down