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

Skip to content

Commit 6f93e77

Browse files
committed
Added prompt to the first line of the installer so PL/SQL Developer treats the installer file as command window.
Added two new assertions: str_like and regexp_like Reordered declaration of the assertion procedures to enforce users to use implementation with assert description provided Added tests for the new asserts
1 parent a80f675 commit 6f93e77

6 files changed

Lines changed: 87 additions & 10 deletions

source/install.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
prompt Installing utplsql framework
2+
13
whenever sqlerror exit failure rollback
24
whenever oserror exit failure rollback
35

4-
prompt Installing utplsql framework
56
@@types/ut_object.tps
67
@@types/ut_objects_list.tps
78
@@types/ut_composite_object.tps

source/ut_assert.pkb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,37 @@ create or replace package body ut_assert is
145145
begin
146146
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));
147147
end;
148+
149+
-- Strings assertions
150+
procedure str_like(a_msg in varchar2, a_checking_string in varchar2, a_mask in varchar, a_escape_char in varchar2) is
151+
l_condition boolean;
152+
begin
153+
if a_escape_char is not null then
154+
l_condition := a_checking_string like a_mask escape a_escape_char;
155+
else
156+
l_condition := a_checking_string like a_mask;
157+
end if;
158+
build_assert_result(l_condition, 'str_like', 'varchar2', 'varchar2', ut_utils.to_string('like ' || a_mask), ut_utils.to_string(l_condition), a_msg);
159+
end;
160+
procedure str_like(a_msg in varchar2, a_checking_string in varchar2, a_mask in varchar) is
161+
begin
162+
str_like(a_msg, a_checking_string, a_mask, null);
163+
end;
164+
procedure str_like(a_checking_string in varchar2, a_mask in varchar2) is
165+
begin
166+
str_like(a_msg => null, a_checking_string => a_checking_string, a_mask => a_mask);
167+
end;
168+
169+
procedure regexp_like(a_msg in varchar2, a_srcstr in varchar2, a_pattern in varchar2, a_modifier in varchar2 default null) is
170+
l_condition boolean := sys.standard.regexp_like(a_srcstr, a_pattern, a_pattern);
171+
begin
172+
build_assert_result(l_condition, 'regexp_like', 'varchar2', 'varchar2', ut_utils.to_string('pattern ' || a_pattern), ut_utils.to_string(l_condition), a_msg);
173+
end;
174+
175+
procedure regexp_like(a_srcstr in varchar2, a_pattern in varchar2, a_modifier in varchar2 default null) is
176+
begin
177+
regexp_like(null, a_srcstr, a_pattern, a_modifier);
178+
end;
148179

149180
procedure is_null(a_actual in number) is
150181
begin

source/ut_assert.pks

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,36 @@ create or replace package ut_assert authid current_user as
55
procedure report_error(a_message in varchar2);
66
function get_asserts_results return ut_objects_list;
77

8-
/* Just need something to play with for now */
9-
procedure are_equal(a_expected in number, a_actual in number);
8+
-- General assertion
9+
procedure this(a_msg in varchar2, a_condition in boolean);
10+
procedure this(a_condition in boolean);
11+
12+
-- Equality assertions
1013
procedure are_equal(a_msg in varchar2, a_expected in number, a_actual in number);
14+
procedure are_equal(a_expected in number, a_actual in number);
1115

12-
procedure are_equal(a_expected in varchar2, a_actual in varchar2);
1316
procedure are_equal(a_msg in varchar2, a_expected in varchar2, a_actual in varchar2);
17+
procedure are_equal(a_expected in varchar2, a_actual in varchar2);
1418

15-
procedure are_equal(a_expected in date, a_actual in date);
1619
procedure are_equal(a_msg in varchar2, a_expected in date, a_actual in date);
20+
procedure are_equal(a_expected in date, a_actual in date);
1721

18-
procedure are_equal(a_expected in timestamp_unconstrained, a_actual in timestamp_unconstrained);
1922
procedure are_equal(a_msg in varchar2, a_expected in timestamp_unconstrained, a_actual in timestamp_unconstrained);
23+
procedure are_equal(a_expected in timestamp_unconstrained, a_actual in timestamp_unconstrained);
2024

21-
procedure are_equal(a_expected in anydata, a_actual in anydata);
2225
procedure are_equal(a_msg in varchar2, a_expected in anydata, a_actual in anydata);
26+
procedure are_equal(a_expected in anydata, a_actual in anydata);
2327

24-
procedure are_equal(a_expected in sys_refcursor, a_actual in sys_refcursor);
2528
procedure are_equal(a_msg in varchar2, a_expected in sys_refcursor, a_actual in sys_refcursor);
29+
procedure are_equal(a_expected in sys_refcursor, a_actual in sys_refcursor);
2630

27-
procedure this(a_condition in boolean);
28-
procedure this(a_msg in varchar2, a_condition in boolean);
31+
-- Strings assertions
32+
procedure str_like(a_msg in varchar2, a_checking_string in varchar2, a_mask in varchar, a_escape_char in varchar2);
33+
procedure str_like(a_msg in varchar2, a_checking_string in varchar2, a_mask in varchar);
34+
procedure str_like(a_checking_string in varchar2, a_mask in varchar2);
35+
36+
procedure regexp_like(a_msg in varchar2, a_srcstr in varchar2,a_pattern in varchar2, a_modifier in varchar2 default null);
37+
procedure regexp_like(a_srcstr in varchar2,a_pattern in varchar2, a_modifier in varchar2 default null);
2938

3039
procedure is_null(a_actual in number);
3140
procedure is_null(a_msg in varchar2, a_actual in number);

tests/RunAll.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ set serveroutput on size unlimited format truncated
5353
@@lib/RunTest.sql ut_assert/ut_assert.are_equal.varchar2.GivesFailureWhenBothAreNull.sql
5454
@@lib/RunTest.sql ut_assert/ut_assert.are_equal.varchar2.GivesFailureWhenExpectedIsNull.sql
5555
@@lib/RunTest.sql ut_assert/ut_assert.are_equal.varchar2.GivesSuccessForEqualValues.sql
56+
@@lib/RunTest.sql ut_assert/ut_assert.are_equal.varchar2.GivesSuccessForLikeString.sql
57+
@@lib/RunTest.sql ut_assert/ut_assert.are_equal.varchar2.GivesSuccessForLikeStringWithEscape.sql
5658
@@lib/RunTest.sql ut_assert/ut_assert.are_equal.varchar2.with_text.GivesTheProvidedTextAsMessage.sql
5759

5860
@@lib/RunTest.sql ut_assert/ut_assert.are_equal.date.GivesFailureForDifferentValues.sql
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--Arrange
2+
declare
3+
l_mask varchar2(10) := 'a%b';
4+
l_string varchar2(50) := 'asdfsdfsdfb';
5+
l_result integer;
6+
begin
7+
--Act
8+
ut_assert.str_like(l_string, l_mask);
9+
l_result := ut_assert.get_aggregate_asserts_result();
10+
--Assert
11+
if l_result = ut_utils.tr_success then
12+
:test_result := ut_utils.tr_success;
13+
else
14+
dbms_output.put_line('expected: string like'''||l_mask||''', got: '''||l_result||'''' );
15+
end if;
16+
end;
17+
/
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--Arrange
2+
declare
3+
l_mask varchar2(10) := 'a%/_b';
4+
l_string varchar2(50) := 'asdfsdfsdf_b';
5+
l_result integer;
6+
begin
7+
--Act
8+
ut_assert.str_like('', l_string, l_mask, '/');
9+
l_result := ut_assert.get_aggregate_asserts_result();
10+
--Assert
11+
if l_result = ut_utils.tr_success then
12+
:test_result := ut_utils.tr_success;
13+
else
14+
dbms_output.put_line('expected: string like'''||l_mask||''' with escape ''/'', got: '''||l_result||'''' );
15+
end if;
16+
end;
17+
/

0 commit comments

Comments
 (0)