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

Skip to content

Commit 9b8d7f7

Browse files
committed
First commit of adding a new 21c json type.
1 parent e358037 commit 9b8d7f7

12 files changed

Lines changed: 232 additions & 4 deletions

File tree

source/api/ut.pkb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ create or replace package body ut is
9898
return ut_expectation_json(ut_data_value_json(a_actual), a_message);
9999
end;
100100

101+
function expect(a_actual in json , a_message varchar2 := null) return ut_expectation_json is
102+
begin
103+
return ut_expectation_json(ut_data_value_json(a_actual), a_message);
104+
end;
105+
101106
procedure fail(a_message in varchar2) is
102107
begin
103108
ut_expectation_processor.report_failure(a_message);

source/api/ut.pks

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ create or replace package ut authid current_user as
4747

4848
function expect(a_actual in json_element_t , a_message varchar2 := null) return ut_expectation_json;
4949

50+
function expect(a_actual in json , a_message varchar2 := null) return ut_expectation_json;
51+
5052
procedure fail(a_message in varchar2);
5153

5254
function run(

source/expectations/data_values/ut_data_value_json.tpb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ create or replace type body ut_data_value_json as
3232
return;
3333
end;
3434

35+
constructor function ut_data_value_json(self in out nocopy ut_data_value_json, a_value json) return self as result is
36+
l_value json_element_t := case when a_value is null then cast (null as json_element_t ) else json_element_t.parse(json_query(a_value, '$' returning clob)) end;
37+
begin
38+
init(l_value);
39+
return;
40+
end;
41+
3542
overriding member function is_null return boolean is
3643
begin
3744
return (ut_utils.int_to_boolean(self.is_data_null));

source/expectations/data_values/ut_data_value_json.tps

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ create or replace type ut_data_value_json under ut_compound_data_value(
1919
json_tree ut_json_tree_details,
2020
member procedure init (self in out nocopy ut_data_value_json, a_value json_element_t),
2121
constructor function ut_data_value_json(self in out nocopy ut_data_value_json, a_value json_element_t) return self as result,
22+
constructor function ut_data_value_json(self in out nocopy ut_data_value_json, a_value json) return self as result,
2223
overriding member function is_null return boolean,
2324
overriding member function is_empty return boolean,
2425
overriding member function to_string return varchar2,

source/expectations/json_objects_specs.sql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
BEGIN
22

3-
$if dbms_db_version.version = 12 and dbms_db_version.release >= 2 or dbms_db_version.version > 12 $then
3+
$if dbms_db_version.version >= 21 $then
44
dbms_output.put_line('Object exists , dont install');
5+
$elsif dbms_db_version.version = 12 and dbms_db_version.release >= 2 or ( dbms_db_version.version > 12 and dbms_db_version.version < 21 ) $then
6+
dbms_output.put_line('Installing json structures specs.');
7+
execute immediate q'[create or replace TYPE JSON FORCE AUTHID CURRENT_USER AS OBJECT(
8+
dummyobjt NUMBER
9+
) NOT FINAL NOT INSTANTIABLE;]';
510
$else
611
dbms_output.put_line('Installing json structures specs.');
712
execute immediate q'[create or replace TYPE JSON_Element_T FORCE AUTHID CURRENT_USER AS OBJECT(

source/expectations/matchers/ut_equal.tpb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,12 @@ create or replace type body ut_equal as
158158
return;
159159
end;
160160

161+
constructor function ut_equal(self in out nocopy ut_equal, a_expected json, a_nulls_are_equal boolean := null) return self as result is
162+
begin
163+
init(ut_data_value_json(a_expected), a_nulls_are_equal);
164+
return;
165+
end;
166+
161167
member function include(a_items varchar2) return ut_equal is
162168
l_result ut_equal := self;
163169
begin

source/expectations/matchers/ut_equal.tps

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ create or replace type ut_equal force under ut_comparison_matcher(
4242
constructor function ut_equal(self in out nocopy ut_equal, a_expected yminterval_unconstrained, a_nulls_are_equal boolean := null) return self as result,
4343
constructor function ut_equal(self in out nocopy ut_equal, a_expected dsinterval_unconstrained, a_nulls_are_equal boolean := null) return self as result,
4444
constructor function ut_equal(self in out nocopy ut_equal, a_expected json_element_t, a_nulls_are_equal boolean := null) return self as result,
45+
constructor function ut_equal(self in out nocopy ut_equal, a_expected json, a_nulls_are_equal boolean := null) return self as result,
4546
member function include(a_items varchar2) return ut_equal,
4647
member function include(a_items ut_varchar2_list) return ut_equal,
4748
member function exclude(a_items varchar2) return ut_equal,

source/expectations/ut_expectation.tpb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,11 @@ create or replace type body ut_expectation as
201201
self.to_( ut_equal(a_expected, a_nulls_are_equal) );
202202
end;
203203

204+
member procedure to_equal(self in ut_expectation, a_expected json, a_nulls_are_equal boolean := null) is
205+
begin
206+
self.to_( ut_equal(a_expected, a_nulls_are_equal) );
207+
end;
208+
204209
member procedure not_to_equal(self in ut_expectation, a_expected anydata, a_nulls_are_equal boolean := null) is
205210
begin
206211
self.not_to( ut_equal(a_expected, a_nulls_are_equal) );

source/expectations/ut_expectation.tps

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ create or replace type ut_expectation authid current_user as object(
5555
member procedure to_equal(self in ut_expectation, a_expected yminterval_unconstrained, a_nulls_are_equal boolean := null),
5656
member procedure to_equal(self in ut_expectation, a_expected dsinterval_unconstrained, a_nulls_are_equal boolean := null),
5757
member procedure to_equal(self in ut_expectation, a_expected json_element_t, a_nulls_are_equal boolean := null),
58+
member procedure to_equal(self in ut_expectation, a_expected json, a_nulls_are_equal boolean := null),
5859

5960
member procedure not_to_equal(self in ut_expectation, a_expected anydata, a_nulls_are_equal boolean := null),
6061
member procedure not_to_equal(self in ut_expectation, a_expected anydata, a_exclude varchar2, a_nulls_are_equal boolean := null),

source/expectations/ut_expectation_json.tps

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ create or replace type ut_expectation_json under ut_expectation(
2424
member procedure to_have_count(self in ut_expectation_json, a_expected integer),
2525
member procedure not_to_have_count(self in ut_expectation_json, a_expected integer)
2626
)
27-
/
27+
/

0 commit comments

Comments
 (0)