mirror of
https://github.com/FirebirdSQL/firebird-qa.git
synced 2025-02-02 02:40:42 +01:00
Added/Updated tests\functional\procedure\create\test_02.py: Added all supported data types that did appear since FB 4.x. Expected output differ in FB 3.x vs 4.x/5.x vs 6.x. Added splitting.
This commit is contained in:
parent
4f0d7d88b5
commit
0e345c8698
@ -5,49 +5,194 @@ ID: procedure.create-02
|
||||
TITLE: CREATE PROCEDURE - Input parameters
|
||||
DESCRIPTION:
|
||||
FBTEST: functional.procedure.create.02
|
||||
NOTES:
|
||||
[30.09.2023] pzotov
|
||||
Added all supported data types that did appear since FB 4.x.
|
||||
Expected output differ in FB 3.x vs 4.x/5.x vs 6.x. Added splitting.
|
||||
"""
|
||||
|
||||
import pytest
|
||||
from firebird.qa import *
|
||||
|
||||
db = db_factory()
|
||||
|
||||
test_script = """SET TERM ^;
|
||||
CREATE PROCEDURE test(
|
||||
p1 SMALLINT, p2 INTEGER, p3 FLOAT, p4 DOUBLE PRECISION, p5 DECIMAL(9,3), p6 NUMERIC(10,4),
|
||||
p7 DATE, p8 TIME, p9 TIMESTAMP, p10 CHAR(40), p11 VARCHAR(60), p12 NCHAR(70))
|
||||
AS
|
||||
BEGIN
|
||||
POST_EVENT 'Test';
|
||||
END ^
|
||||
SET TERM ;^
|
||||
commit;
|
||||
SHOW PROCEDURE test;"""
|
||||
|
||||
act = isql_act('db', test_script)
|
||||
|
||||
expected_stdout = """Procedure text:
|
||||
=============================================================================
|
||||
BEGIN
|
||||
POST_EVENT 'Test';
|
||||
END
|
||||
=============================================================================
|
||||
Parameters:
|
||||
P1 INPUT SMALLINT
|
||||
P2 INPUT INTEGER
|
||||
P3 INPUT FLOAT
|
||||
P4 INPUT DOUBLE PRECISION
|
||||
P5 INPUT DECIMAL(9, 3)
|
||||
P6 INPUT NUMERIC(10, 4)
|
||||
P7 INPUT DATE
|
||||
P8 INPUT TIME
|
||||
P9 INPUT TIMESTAMP
|
||||
P10 INPUT CHAR(40)
|
||||
P11 INPUT VARCHAR(60)
|
||||
P12 INPUT CHAR(70) CHARACTER SET ISO8859_1"""
|
||||
db = db_factory(charset = 'win1250')
|
||||
act = python_act('db') #, substitutions = [ ('=', ''), ('[ \t]+', ' ') ])
|
||||
|
||||
@pytest.mark.version('>=3')
|
||||
def test_1(act: Action):
|
||||
expected_stdout = ""
|
||||
if act.is_version('<4'):
|
||||
test_sql = """
|
||||
set term ^;
|
||||
create procedure test(
|
||||
p01 smallint
|
||||
, p02 integer
|
||||
, p03 float
|
||||
, p04 double precision
|
||||
, p05 decimal(9,3)
|
||||
, p06 numeric(10,4)
|
||||
, p07 date
|
||||
, p08 time
|
||||
, p09 timestamp
|
||||
, p10 char(40)
|
||||
, p11 varchar(60)
|
||||
, p12 nchar(70)
|
||||
)
|
||||
as
|
||||
begin
|
||||
post_event 'test';
|
||||
end ^
|
||||
set term ;^
|
||||
commit;
|
||||
show procedure test;
|
||||
"""
|
||||
else:
|
||||
test_sql = """
|
||||
set term ^;
|
||||
create procedure test(
|
||||
p_smallint smallint
|
||||
, p_int int
|
||||
, p_bigint int
|
||||
, p_int128 int
|
||||
, p_float float
|
||||
, p_double double precision
|
||||
, p_dec decimal(9,3)
|
||||
, p_num numeric(10,4)
|
||||
, p_decfloat_16 decfloat(16)
|
||||
, p_decfloat_34 decfloat(34)
|
||||
, p_bool boolean
|
||||
, p_date date
|
||||
, p_just_time time
|
||||
, p_just_timestamp timestamp
|
||||
, p_time_wo_tz time without time zone
|
||||
, p_time_wi_tz time with time zone
|
||||
, p_timestamp_wo_tz timestamp without time zone
|
||||
, p_timestamp_wi_tz timestamp with time zone
|
||||
, p_char char(1)
|
||||
, p_vchr_wo_cset_and_coll varchar(1)
|
||||
, p_vchr_wi_cset_and_coll varchar(1) character set win1251 collate win1251_ua
|
||||
, p_vchr_wi_cset_only varchar(1) character set win1251
|
||||
, p_vchr_wi_coll_only varchar(1) collate pxw_hundc
|
||||
, p_nchr nchar(1)
|
||||
, p_binary binary(16)
|
||||
, p_varbin varbinary(16)
|
||||
, p_blob0 blob sub_type 0
|
||||
, p_blob1 blob sub_type 1
|
||||
, p_blob2 blob sub_type 1 character set win1251
|
||||
, p_blob3 blob sub_type 1 character set win1251 collate win1251_ua
|
||||
)
|
||||
as
|
||||
begin
|
||||
post_event 'test';
|
||||
end ^
|
||||
set term ;^
|
||||
commit;
|
||||
show procedure test;
|
||||
"""
|
||||
|
||||
if act.is_version('<4'):
|
||||
expected_stdout = """
|
||||
Procedure text:
|
||||
=============================================================================
|
||||
begin
|
||||
post_event 'test';
|
||||
end
|
||||
=============================================================================
|
||||
Parameters:
|
||||
P01 INPUT SMALLINT
|
||||
P02 INPUT INTEGER
|
||||
P03 INPUT FLOAT
|
||||
P04 INPUT DOUBLE PRECISION
|
||||
P05 INPUT DECIMAL(9, 3)
|
||||
P06 INPUT NUMERIC(10, 4)
|
||||
P07 INPUT DATE
|
||||
P08 INPUT TIME
|
||||
P09 INPUT TIMESTAMP
|
||||
P10 INPUT CHAR(40)
|
||||
P11 INPUT VARCHAR(60)
|
||||
P12 INPUT CHAR(70) CHARACTER SET ISO8859_1
|
||||
"""
|
||||
elif act.is_version('<6'):
|
||||
expected_stdout = """
|
||||
Procedure text:
|
||||
=============================================================================
|
||||
begin
|
||||
post_event 'test';
|
||||
end
|
||||
=============================================================================
|
||||
Parameters:
|
||||
P_SMALLINT INPUT SMALLINT
|
||||
P_INT INPUT INTEGER
|
||||
P_BIGINT INPUT INTEGER
|
||||
P_INT128 INPUT INTEGER
|
||||
P_FLOAT INPUT FLOAT
|
||||
P_DOUBLE INPUT DOUBLE PRECISION
|
||||
P_DEC INPUT DECIMAL(9, 3)
|
||||
P_NUM INPUT NUMERIC(10, 4)
|
||||
P_DECFLOAT_16 INPUT DECFLOAT(16)
|
||||
P_DECFLOAT_34 INPUT DECFLOAT(34)
|
||||
P_BOOL INPUT BOOLEAN
|
||||
P_DATE INPUT DATE
|
||||
P_JUST_TIME INPUT TIME
|
||||
P_JUST_TIMESTAMP INPUT TIMESTAMP
|
||||
P_TIME_WO_TZ INPUT TIME
|
||||
P_TIME_WI_TZ INPUT TIME WITH TIME ZONE
|
||||
P_TIMESTAMP_WO_TZ INPUT TIMESTAMP
|
||||
P_TIMESTAMP_WI_TZ INPUT TIMESTAMP WITH TIME ZONE
|
||||
P_CHAR INPUT CHAR(1)
|
||||
P_VCHR_WO_CSET_AND_COLL INPUT VARCHAR(1)
|
||||
P_VCHR_WI_CSET_AND_COLL INPUT VARCHAR(1) CHARACTER SET WIN1251 COLLATE WIN1251_UA
|
||||
P_VCHR_WI_CSET_ONLY INPUT VARCHAR(1) CHARACTER SET WIN1251
|
||||
P_VCHR_WI_COLL_ONLY INPUT VARCHAR(1) CHARACTER SET WIN1250 COLLATE PXW_HUNDC
|
||||
P_NCHR INPUT CHAR(1) CHARACTER SET ISO8859_1
|
||||
P_BINARY INPUT BINARY(16)
|
||||
P_VARBIN INPUT VARBINARY(16)
|
||||
P_BLOB0 INPUT BLOB CHARACTER SET NONE
|
||||
P_BLOB1 INPUT BLOB
|
||||
P_BLOB2 INPUT BLOB CHARACTER SET WIN1251
|
||||
P_BLOB3 INPUT BLOB CHARACTER SET WIN1251 COLLATE WIN1251_UA
|
||||
"""
|
||||
else:
|
||||
expected_stdout = """
|
||||
Procedure text:
|
||||
=============================================================================
|
||||
begin
|
||||
post_event 'test';
|
||||
end
|
||||
=============================================================================
|
||||
Parameters:
|
||||
P_SMALLINT INPUT SMALLINT
|
||||
P_INT INPUT INTEGER
|
||||
P_BIGINT INPUT INTEGER
|
||||
P_INT128 INPUT INTEGER
|
||||
P_FLOAT INPUT FLOAT
|
||||
P_DOUBLE INPUT DOUBLE PRECISION
|
||||
P_DEC INPUT DECIMAL(9, 3)
|
||||
P_NUM INPUT NUMERIC(10, 4)
|
||||
P_DECFLOAT_16 INPUT DECFLOAT(16)
|
||||
P_DECFLOAT_34 INPUT DECFLOAT(34)
|
||||
P_BOOL INPUT BOOLEAN
|
||||
P_DATE INPUT DATE
|
||||
P_JUST_TIME INPUT TIME
|
||||
P_JUST_TIMESTAMP INPUT TIMESTAMP
|
||||
P_TIME_WO_TZ INPUT TIME
|
||||
P_TIME_WI_TZ INPUT TIME WITH TIME ZONE
|
||||
P_TIMESTAMP_WO_TZ INPUT TIMESTAMP
|
||||
P_TIMESTAMP_WI_TZ INPUT TIMESTAMP WITH TIME ZONE
|
||||
P_CHAR INPUT CHAR(1)
|
||||
P_VCHR_WO_CSET_AND_COLL INPUT VARCHAR(1)
|
||||
P_VCHR_WI_CSET_AND_COLL INPUT VARCHAR(1) CHARACTER SET WIN1251 COLLATE WIN1251_UA
|
||||
P_VCHR_WI_CSET_ONLY INPUT VARCHAR(1) CHARACTER SET WIN1251 COLLATE WIN1251
|
||||
P_VCHR_WI_COLL_ONLY INPUT VARCHAR(1) COLLATE PXW_HUNDC
|
||||
P_NCHR INPUT CHAR(1) CHARACTER SET ISO8859_1 COLLATE ISO8859_1
|
||||
P_BINARY INPUT BINARY(16)
|
||||
P_VARBIN INPUT VARBINARY(16)
|
||||
P_BLOB0 INPUT BLOB CHARACTER SET NONE COLLATE NONE
|
||||
P_BLOB1 INPUT BLOB
|
||||
P_BLOB2 INPUT BLOB CHARACTER SET WIN1251 COLLATE WIN1251
|
||||
P_BLOB3 INPUT BLOB CHARACTER SET WIN1251 COLLATE WIN1251_UA
|
||||
"""
|
||||
|
||||
act.expected_stdout = expected_stdout
|
||||
act.execute()
|
||||
act.isql(input = test_sql, combine_output = True)
|
||||
assert act.clean_stdout == act.clean_expected_stdout
|
||||
act.reset()
|
||||
|
Loading…
Reference in New Issue
Block a user