* test_s8_geometrie_ui.prg - verifica geometria formularului frm_facturare_articole2 * (COMUN\clase\ofacturare.vc2) dupa reparatia S8h-S8m: banda de sub grila (chk_alte_date, * chk_incasare, lb_antet_alte_date, lb_antet_incasare, ct_document, ct_contabilitate, * ct_livrare, ct_incasare, but_cursuri) si banda de totaluri. * Opt pasi: (0) ambele acordeoane inchise; (1-2) redimensionare cu acordeoanele inchise * (micsorare, apoi marire peste maximizat initial); (3) doar Alte date deschis; (4) doar * Incasare deschis; (5) ambele deschise; (6-7) redimensionare cu acordeoanele deschise * (micsorare, apoi marire). * Doua serii de asertiuni pe fiecare pas, pentru cele 10 controale de mai sus (mai putin * lb_total_baza): control.Top >= grd_factura.Top+grd_factura.Height (banda de sub grila) si, * pentru containerele vizibile, control.Top+control.Height <= lb_total_baza.Top (banda de * totaluri). Log-ul mai contine si o verificare a latimii calculate din cod pentru * lb_antet_alte_date. * Rulare: powershell -ExecutionPolicy Bypass -File test_s8_geometrie_ui.ps1 (timeout >= 400s) SET SAFETY OFF SET TALK OFF SET NOTIFY OFF PUBLIC gcUILog, gcSyncDir, gnFail, gnPass, gnAssertFail, gnAssertPass, gnAssertPass2, gnAssertFail2, ; gnAssertPassR, gnAssertFailR, gnAssertPass2R, gnAssertFail2R gcUILog = "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\test_s8_geometrie_ui_log.txt" gcSyncDir = "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\uisync_s8_geometrie\" STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog) gnFail = 0 gnPass = 0 gnAssertFail = 0 gnAssertPass = 0 gnAssertPass2 = 0 gnAssertFail2 = 0 gnAssertPassR = 0 gnAssertFailR = 0 gnAssertPass2R = 0 gnAssertFail2R = 0 ON ERROR DO AfErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() ON SHUTDOWN QUIT DO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto_roafacturare.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT' IF TYPE('gnHandle') <> 'N' OR gnHandle <= 0 DO AfLog WITH "FAIL: conexiune Oracle esuata" DO Final ENDIF SET PROCEDURE TO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\mock_amessagebox.prg", "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\ui_harness.prg" ADDITIVE PUBLIC gcMockUltimMesaj, gnMockUltimTip gcMockUltimMesaj = "" gnMockUltimTip = 0 DO AfLog WITH "ENV OK, gnAn=" + TRANSFORM(gnAn) + " gnLuna=" + TRANSFORM(gnLuna) IF !actualizeaza_optiuni_program() DO AfLog WITH "FAIL: actualizeaza_optiuni_program()" DO Final ENDIF gnScadereStoc = 0 * seriile de facturi (tipdoc 5) sunt pe utilizator in MARIUSM_AUTO gnIdUtil = 8 goExecutor.oExecuta([begin pack_sesiune.set_Id_Util(?gnIdUtil); end;]) * gridextras.vcx e referit din ofacturare.vcx cu cale relativa SET CLASSLIB TO "D:\ROA\ROAFACTURARE\COMUN\utile\gridextras\gridextras.vcx" ADDITIVE SET PATH TO "D:\ROA\ROAFACTURARE\COMUN\utile\gridextras" ADDITIVE SET CLASSLIB TO "D:\ROA\ROAFACTURARE\COMUN\clase\_cb_base.vcx" ADDITIVE IF USED('crscursuri') USE IN crscursuri ENDIF CREATE CURSOR crscursuri (curs N(12,4), nume_val C(10), multiplicator N(6)) DO creeaza_facturacrs WITH 'crsfactura' SELECT *, CAST(NULL AS C(100)) AS gestiune FROM crsfactura INTO CURSOR crsfact_tmp READWRITE USE IN crsfactura SELECT * FROM crsfact_tmp INTO CURSOR crsfactura READWRITE USE IN crsfact_tmp IF !USED('saft_tip_facturi') update_saft_tip_facturi() ENDIF PRIVATE poDate, poGeneratorNumere, loForm poDate = CREATEOBJECT("oDateFactura", 25000, 1) poDate.nIdTipDoc = 5 poDate.totalctva = 1000 DO AfLog WITH "poDate.tip=" + TRANSFORM(poDate.tip) + " poDate.eProforma=" + TRANSFORM(poDate.eProforma) poGeneratorNumere = CREATEOBJECT("oGeneratorNumere") poGeneratorNumere.ResetNumere() poDate.rezultat_serii = poGeneratorNumere.creeaza_cursor_serii(poDate.nIdTipDoc) loForm = CREATEOBJECT('frm_facturare_articole2') DO Assert WITH VARTYPE(loForm) = 'O', "Createobject frm_facturare_articole2" IF VARTYPE(loForm) <> 'O' DO Final ENDIF loForm.WindowType = 0 loForm.Show() loForm.WindowState = 2 DOEVENTS FORCE DO AfLog WITH "formular afisat si maximizat" * --- pas 0: (a) ambele acordeoane inchise --- DO AfLog WITH "=== PAS 0: ambele inchise ===" DO VerificaGeometrie WITH loForm, "pas0_ambele_inchise" DO HarnessStep WITH 0, 'ambele_inchise', 25 * --- pasii 1-2: redimensionare CU ACORDEOANELE INCHISE --- DO AfLog WITH "=== PAS 1-2: redimensionare CU ACORDEOANELE INCHISE ===" loForm.WindowState = 0 DOEVENTS FORCE loForm.Height = loForm.Height - 80 DOEVENTS FORCE DO AfLog WITH "dupa WindowState=0 + Height-=80 (MICSORARE, acordeoane inchise): This.Height=" + TRANSFORM(loForm.Height) + " This.Width=" + TRANSFORM(loForm.Width) DO VerificaGeometrie WITH loForm, "pas1_resize_inchis_micsorare", .T. DO HarnessStep WITH 1, 'resize_inchis_micsorare', 25 loForm.Height = loForm.Height + 380 DOEVENTS FORCE DO AfLog WITH "dupa Height+=380 (MARIRE peste maximizat initial, acordeoane inchise): This.Height=" + TRANSFORM(loForm.Height) + " This.Width=" + TRANSFORM(loForm.Width) DO VerificaGeometrie WITH loForm, "pas2_resize_inchis_marire", .T. DO HarnessStep WITH 2, 'resize_inchis_marire', 25 * revin la maximizat pentru restul secventei (starea "normala" de lucru) loForm.WindowState = 2 DOEVENTS FORCE DOEVENTS FORCE * --- pas 3: (b) doar Alte date deschis --- loForm.chk_alte_date.Value = 1 loForm.do_comuta_alte_date() DOEVENTS FORCE DO AfLog WITH "=== PAS 3: doar Alte date deschis ===" DO VerificaGeometrie WITH loForm, "pas3_alte_date_deschis" DO HarnessStep WITH 3, 'alte_date_deschis', 25 * inchid Alte date la loc, ca pasul 4 sa fie curat "doar incasare" loForm.chk_alte_date.Value = 0 loForm.do_comuta_alte_date() DOEVENTS FORCE * --- pas 4: (c) doar Incasare deschis (aloca o chitanta reala - dezalocata la final) --- loForm.chk_incasare.Value = 1 loForm.do_comuta_incasare() DOEVENTS FORCE DO AfLog WITH "=== PAS 4: doar Incasare deschis ===" DO VerificaGeometrie WITH loForm, "pas4_incasare_deschis" DO HarnessStep WITH 4, 'incasare_deschis', 25 * --- pas 5: (d) AMBELE deschise simultan (incasare ramane deschisa, deschid si alte date) --- loForm.chk_alte_date.Value = 1 loForm.do_comuta_alte_date() DOEVENTS FORCE DO AfLog WITH "=== PAS 5: AMBELE deschise ===" DO VerificaGeometrie WITH loForm, "pas5_ambele_deschise" DO HarnessStep WITH 5, 'ambele_deschise', 25 * --- pasii 6-7: redimensionare CU ACORDEOANELE DESCHISE --- DO AfLog WITH "=== PAS 6-7: redimensionare CU ACORDEOANELE DESCHISE ===" loForm.WindowState = 0 DOEVENTS FORCE loForm.Height = loForm.Height - 80 DOEVENTS FORCE DO AfLog WITH "dupa WindowState=0 + Height-=80 (MICSORARE, acordeoane deschise): This.Height=" + TRANSFORM(loForm.Height) + " This.Width=" + TRANSFORM(loForm.Width) DO VerificaGeometrie WITH loForm, "pas6_resize_deschis_micsorare", .T. DO HarnessStep WITH 6, 'dupa_micsorare', 25 loForm.Height = loForm.Height + 380 DOEVENTS FORCE DO AfLog WITH "dupa Height+=380 (MARIRE peste maximizat initial, acordeoane deschise): This.Height=" + TRANSFORM(loForm.Height) + " This.Width=" + TRANSFORM(loForm.Width) DO VerificaGeometrie WITH loForm, "pas7_resize_deschis_marire", .T. DO HarnessStep WITH 7, 'dupa_marire', 25 * revin la maximizat pentru consistenta la Release() loForm.WindowState = 2 DOEVENTS FORCE * curatenie obligatorie: inchid ambele, dezaloc chitanta alocata la pasul 4, inainte de Release() loForm.chk_alte_date.Value = 0 loForm.do_comuta_alte_date() loForm.chk_incasare.Value = 0 loForm.do_comuta_incasare() loForm.Release() RELEASE loForm DO AfLog WITH "TOTAL asertiuni grid (pas0+3-5): pass=" + TRANSFORM(gnAssertPass) + " fail=" + TRANSFORM(gnAssertFail) DO AfLog WITH "TOTAL asertiuni totaluri (pas0+3-5): pass=" + TRANSFORM(gnAssertPass2) + " fail=" + TRANSFORM(gnAssertFail2) DO AfLog WITH "TOTAL asertiuni grid (resize, toate): pass=" + TRANSFORM(gnAssertPassR) + " fail=" + TRANSFORM(gnAssertFailR) DO AfLog WITH "TOTAL asertiuni totaluri (resize, toate): pass=" + TRANSFORM(gnAssertPass2R) + " fail=" + TRANSFORM(gnAssertFail2R) DO Final *---------------------------------------------------------------------------------------- PROCEDURE VerificaGeometrie * Logheaza Top/Height/Bottom pentru grid + cele 10 controale cerute si verifica * control.Top >= grd_factura.Top + grd_factura.Height pentru fiecare (control.Height logat, * dar asertiunea NU cere Bottom-ul controlului, doar Top-ul lui, ca in cerinta primita). LPARAMETERS toForm, tcEticheta, tlResize LOCAL lnGTop, lnGHeight, lnGBottom IF PCOUNT() < 3 tlResize = .F. ENDIF lnGTop = toForm.grd_factura.Top lnGHeight = toForm.grd_factura.Height lnGBottom = lnGTop + lnGHeight DO AfLog WITH "GRID [" + tcEticheta + "] Top=" + TRANSFORM(lnGTop) + " Height=" + TRANSFORM(lnGHeight) + " Bottom=" + TRANSFORM(lnGBottom) + " Width=" + TRANSFORM(toForm.grd_factura.Width) + " This.Width=" + TRANSFORM(toForm.Width) DO VerificaControl WITH toForm.chk_incasare, "chk_incasare", tcEticheta, lnGBottom, tlResize DO VerificaControl WITH toForm.chk_alte_date, "chk_alte_date", tcEticheta, lnGBottom, tlResize DO VerificaControl WITH toForm.lb_antet_incasare, "lb_antet_incasare", tcEticheta, lnGBottom, tlResize DO VerificaControl WITH toForm.lb_antet_alte_date, "lb_antet_alte_date", tcEticheta, lnGBottom, tlResize DO VerificaControl WITH toForm.ct_document, "ct_document", tcEticheta, lnGBottom, tlResize DO VerificaControl WITH toForm.ct_contabilitate, "ct_contabilitate", tcEticheta, lnGBottom, tlResize DO VerificaControl WITH toForm.ct_livrare, "ct_livrare", tcEticheta, lnGBottom, tlResize DO VerificaControl WITH toForm.ct_incasare, "ct_incasare", tcEticheta, lnGBottom, tlResize DO VerificaControl WITH toForm.but_cursuri, "but_cursuri", tcEticheta, lnGBottom, tlResize DO AfLog WITH "RISC3 [" + tcEticheta + "] ct_document.Objects.Count=" + TRANSFORM(toForm.ct_document.Objects.Count) + " ct_document.Visible=" + TRANSFORM(toForm.ct_document.Visible) + " ct_contabilitate.Top=" + TRANSFORM(toForm.ct_contabilitate.Top) + " ct_livrare.Top=" + TRANSFORM(toForm.ct_livrare.Top) * lb_antet_alte_date.Width e calculat in cod din This.Width (aseaza_alte_date: * This.lb_antet_alte_date.Width = This.Width - 24 - This.lb_antet_alte_date.Left) - verific ca * latirea orizontala nu s-a pierdut. LOCAL lnLatAsteptata, lnLatReala lnLatReala = toForm.lb_antet_alte_date.Width lnLatAsteptata = toForm.Width - 24 - toForm.lb_antet_alte_date.Left DO AfLog WITH "LATIME [" + tcEticheta + "] lb_antet_alte_date.Left=" + TRANSFORM(toForm.lb_antet_alte_date.Left) + " Width=" + TRANSFORM(lnLatReala) + " asteptata(This.Width-24-Left)=" + TRANSFORM(lnLatAsteptata) + " " + IIF(lnLatReala = lnLatAsteptata, "OK", "MISMATCH") LOCAL lnFormHeight, lnBanda, lnTotalTop lnFormHeight = toForm.Height lnBanda = lnFormHeight - 103 lnTotalTop = toForm.lb_total_baza.Top DO AfLog WITH "S8I [" + tcEticheta + "] This.Height=" + TRANSFORM(lnFormHeight) + " lnBanda(Height-103)=" + TRANSFORM(lnBanda) + " lb_total_baza.Top=" + TRANSFORM(lnTotalTop) DO VerificaTotaluri WITH toForm.ct_document, "ct_document", tcEticheta, lnTotalTop, tlResize DO VerificaTotaluri WITH toForm.ct_contabilitate, "ct_contabilitate", tcEticheta, lnTotalTop, tlResize DO VerificaTotaluri WITH toForm.ct_livrare, "ct_livrare", tcEticheta, lnTotalTop, tlResize DO VerificaTotaluri WITH toForm.ct_incasare, "ct_incasare", tcEticheta, lnTotalTop, tlResize ENDPROC PROCEDURE VerificaTotaluri * Asertiune control.Top+control.Height <= lb_total_baza.Top, DOAR pentru controale vizibile * (un container inchis/invizibil nu conteaza pentru suprapunerea cu banda de totaluri). * tlResize=.T. -> contorizeaza separat (pasii de resize), ca sa nu se amestece cu totalul. LPARAMETERS toCtrl, tcNume, tcEticheta, tnTotalTop, tlResize LOCAL lnTop, lnHeight, lnBottom, llVis, llOk lnTop = toCtrl.Top lnHeight = toCtrl.Height lnBottom = lnTop + lnHeight llVis = IIF(TYPE('toCtrl.Visible') = 'L', toCtrl.Visible, .T.) IF !llVis DO AfLog WITH "TOTALURI-SKIP [" + tcEticheta + "] " + tcNume + " invizibil, Bottom=" + TRANSFORM(lnBottom) + " (neasertat)" RETURN ENDIF llOk = (lnBottom <= tnTotalTop) IF tlResize IF llOk gnAssertPass2R = gnAssertPass2R + 1 ELSE gnAssertFail2R = gnAssertFail2R + 1 ENDIF ELSE IF llOk gnAssertPass2 = gnAssertPass2 + 1 ELSE gnAssertFail2 = gnAssertFail2 + 1 ENDIF ENDIF DO AfLog WITH IIF(llOk, "TOTALURI-PASS", "TOTALURI-FAIL") + " [" + tcEticheta + "] " + tcNume + ".Bottom=" + TRANSFORM(lnBottom) + " (Top=" + TRANSFORM(lnTop) + " Height=" + TRANSFORM(lnHeight) + ") lb_total_baza.Top=" + TRANSFORM(tnTotalTop) + " marja=" + TRANSFORM(tnTotalTop - lnBottom) ENDPROC PROCEDURE VerificaControl * tlResize=.T. -> contorizeaza separat (pasii de resize), ca sa nu se amestece cu totalul. LPARAMETERS toCtrl, tcNume, tcEticheta, tnGBottom, tlResize LOCAL lnTop, lnHeight, llVis, llOk lnTop = toCtrl.Top lnHeight = toCtrl.Height llVis = IIF(TYPE('toCtrl.Visible') = 'L', toCtrl.Visible, .T.) llOk = (lnTop >= tnGBottom) IF tlResize IF llOk gnAssertPassR = gnAssertPassR + 1 ELSE gnAssertFailR = gnAssertFailR + 1 ENDIF ELSE IF llOk gnAssertPass = gnAssertPass + 1 ELSE gnAssertFail = gnAssertFail + 1 ENDIF ENDIF DO AfLog WITH IIF(llOk, "ASSERT-PASS", "ASSERT-FAIL") + " [" + tcEticheta + "] " + tcNume + ".Top=" + TRANSFORM(lnTop) + " Height=" + TRANSFORM(lnHeight) + " Visible=" + TRANSFORM(llVis) + " (grid.Bottom=" + TRANSFORM(tnGBottom) + ", delta=" + TRANSFORM(lnTop - tnGBottom) + ")" ENDPROC PROCEDURE Assert LPARAMETERS tlCond, tcMsg IF tlCond gnPass = gnPass + 1 DO AfLog WITH "PASS: " + tcMsg ELSE gnFail = gnFail + 1 DO AfLog WITH "FAIL: " + tcMsg ENDIF ENDPROC PROCEDURE AfLog LPARAMETERS tcMsg STRTOFILE(tcMsg + CHR(13) + CHR(10), gcUILog, 1) ENDPROC PROCEDURE AfErr LPARAMETERS tnErr, tcMsg, tcProg, tnLine gnFail = gnFail + 1 DO AfLog WITH "ERROR " + TRANSFORM(tnErr) + " [" + tcProg + ":" + TRANSFORM(tnLine) + "] " + tcMsg ENDPROC PROCEDURE Final DO AfLog WITH "TOTAL pass=" + TRANSFORM(gnPass) + " fail=" + TRANSFORM(gnFail) DO AfLog WITH "END " + TTOC(DATETIME()) DO HarnessDone WITH 'done' QUIT ENDPROC