6
0
mirror of https://github.com/FirebirdSQL/firebird-qa.git synced 2025-01-23 05:53:06 +01:00
firebird-qa/tests/functional/gtcs/test_computed_fields_17.py

130 lines
4.0 KiB
Python

#coding:utf-8
"""
ID: computed-fields-17
FBTEST: functional.gtcs.computed_fields_17
TITLE: Computed fields
DESCRIPTION:
Original test see in:
https://github.com/FirebirdSQL/fbtcs/blob/master/GTCS/tests/CF_ISQL_17.script
SQL script for creating test database ('gtcs_sp1.fbk') and fill it with some data:
https://github.com/FirebirdSQL/fbtcs/blob/master/GTCS/tests/PROCS_QA_INIT_ISQL.script
"""
import pytest
from firebird.qa import *
db = db_factory()
test_script = """
create generator gen1;
set generator gen1 to 999;
create generator gen2;
set generator gen2 to 199;
create generator gen3;
set generator gen3 to 29;
create table t0 (
a integer,
genid_field1 computed by (gen_id(gen1, 1)),
genid_field2 computed by (gen_id(gen2, genid_field1)),
genid_field3 computed by (gen_id(gen3, genid_field2))
);
commit;
insert into t0(a) values(4);
insert into t0(a) values(1);
/*************************************************
first row:
a: 4
genid_field3:=genid3+(genid2+(genid1+1))
:=29+(199+(999+1)
:=29+(199+1000)
:=29+1199
:=1228
second row:
a: 1
genid_field3:=genid3+(genid2+(genid1+1))
:=1228+(1199+(1000+1)
:=1228+(1199+1001)
:=1228+(2200)
:=3428
so expected result is:
A GENID_FIELD3
============ =====================
4 1228
1 3428
*************************************************/
select 'point-1' msg, p.a, p.genid_field3 from t0 p;
/*************************************************
first row:
a: 4
genid_field3:=genid3+(genid2+(genid1+1))
:=3428+(2200+(1001+1)
:=3428+(2200+1002)
:=3429+3202
:=6630
genid_field2:=genid2+(genid1+1)
:=3202+(1002+1)
:=3202+1003
:=4205
genid_field1:=genid1+1
:=1003+1
:=1004
second row:
a: 1
genid_field3:=genid3+(genid2+(genid1+1))
:=6630+(4205+(1004+1))
:=6630+(4205+1005)
:=6630+5210
:=11840
genid_field2:=genid2+(genid1+1)
:=5210+(1005+1)
:=5210+1006
:=6216
genid_field1:=genid1+1
:=1006+1
:=1007
so expected result is:
A GENID_FIELD1 GENID_FIELD2 GENID_FIELD3
============ ===================== ===================== =====================
4 1004 4205 6630
1 1007 6216 11840
**************************************************/
select 'point-2' msg, p.* from t0 p;
"""
act = isql_act('db', test_script, substitutions=[('=', ''), ('[ \t]+', ' ')])
expected_stdout = """
MSG A GENID_FIELD3
point-1 4 1228
point-1 1 3428
MSG A GENID_FIELD1 GENID_FIELD2 GENID_FIELD3
point-2 4 1004 4205 6630
point-2 1 1007 6216 11840
"""
@pytest.mark.version('>=3')
def test_1(act: Action):
act.expected_stdout = expected_stdout
act.execute()
assert act.clean_stdout == act.clean_expected_stdout