* test_ruta_gestiune.prg * Import eFactura lansat din gestiune (lDoarGestiune): * T1 - proprietatea lDoarGestiune exista in binarul frm_import_efactura * T2 - do_executa forteaza ruta 2 si atentioneaza cand nu sunt articole gestionabile * T3 - CoadaContabilizareEF.NrRanduriGestiune numara doar randurile care ajung in rulaje * Nu are nevoie de Oracle. * * Rulare: vfp9.exe -A -T test_ruta_gestiune.prg SET SAFETY OFF SET TALK OFF SET EXACT ON PUBLIC lcLog, lnPass, lnFail LOCAL lcDirTest, lcDirComun, lcProps, lcCod, lnRanduri, lcErrCompil, lcErrRau, lcVcxRau, lcVcxTest lcDirTest = ADDBS(JUSTPATH(SYS(16))) lcDirComun = ADDBS(JUSTPATH(JUSTPATH(JUSTPATH(JUSTPATH(SYS(16)))))) lcLog = m.lcDirTest + 'test_ruta_gestiune_log.txt' lnPass = 0 lnFail = 0 STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13) + CHR(10), m.lcLog) ON ERROR DO TErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() * T1/T2: citesc direct clasa din binar, ca sa prind si lipsa proprietatii din lista de membri USE (m.lcDirComun + 'clase\anaf_efactura.vcx') IN 0 SHARED ALIAS cls SELECT cls LOCATE FOR UPPER(ALLTRIM(NVL(objname, ''))) == 'FRM_IMPORT_EFACTURA' AND EMPTY(NVL(parent, '')) lcProps = IIF(FOUND(), LOWER(NVL(properties, '')), '') lcCod = IIF(FOUND(), LOWER(NVL(methods, '')), '') USE IN cls DO TVerdict WITH 'ldoargestiune' $ m.lcProps, 'T1 proprietate in binar', LEFT(m.lcProps, 0) DO TVerdict WITH 'thisform.ldoargestiune' $ m.lcCod AND 'nrrandurigestiune' $ m.lcCod, ; 'T2 do_executa foloseste ruta de gestiune', '' * T3: numaratoarea, pe cursor sintetic SET PROCEDURE TO (m.lcDirComun + 'programe\coada_contabilizare_ef.prg') ADDITIVE CREATE CURSOR crsTest (in_stoc N(1), id_articol N(10), id_gestiune N(10), cont C(4)) INSERT INTO crsTest VALUES (1, 100, 5, '371') INSERT INTO crsTest VALUES (1, 101, 0, '371') INSERT INTO crsTest VALUES (1, 102, 5, '') INSERT INTO crsTest VALUES (1, 0, 5, '371') INSERT INTO crsTest VALUES (0, 103, 5, '371') loCoada = CREATEOBJECT('CoadaContabilizareEF') lnRanduri = loCoada.NrRanduriGestiune('crsTest', 0) DO TVerdict WITH m.lnRanduri = 1, 'T3a fara gestiune implicita', TRANSFORM(m.lnRanduri) lnRanduri = loCoada.NrRanduriGestiune('crsTest', 7) DO TVerdict WITH m.lnRanduri = 2, 'T3b cu gestiune implicita', TRANSFORM(m.lnRanduri) CREATE CURSOR crsFaraGest (in_stoc N(1), id_articol N(10), id_gestiune N(10), cont C(4)) INSERT INTO crsFaraGest VALUES (0, 103, 5, '371') INSERT INTO crsFaraGest VALUES (1, 0, 5, '371') lnRanduri = loCoada.NrRanduriGestiune('crsFaraGest', 7) DO TVerdict WITH m.lnRanduri = 0, 'T3c factura fara articole gestionabile', TRANSFORM(m.lnRanduri) * T4: compilarea clasei, ca sa prinda erorile de sintaxa din metodele scrise in text lcVcxTest = m.lcDirTest + 'anaf_efactura_compil.vcx' IF FILE(m.lcVcxTest) ERASE (m.lcVcxTest) ERASE (m.lcDirTest + 'anaf_efactura_compil.vct') ENDIF IF FILE(m.lcDirTest + 'anaf_efactura_compil.err') ERASE (m.lcDirTest + 'anaf_efactura_compil.err') ENDIF COPY FILE (m.lcDirComun + 'clase\anaf_efactura.vcx') TO (m.lcVcxTest) COPY FILE (m.lcDirComun + 'clase\anaf_efactura.vct') TO (m.lcDirTest + 'anaf_efactura_compil.vct') COMPILE CLASSLIB (m.lcVcxTest) lcErrCompil = IIF(FILE(m.lcDirTest + 'anaf_efactura_compil.err'), FILETOSTR(m.lcDirTest + 'anaf_efactura_compil.err'), '') DO TVerdict WITH EMPTY(ALLTRIM(m.lcErrCompil)), 'T4 clasa compileaza fara erori', LEFT(STRTRAN(STRTRAN(m.lcErrCompil, CHR(13), ' '), CHR(10), ' '), 150) ERASE (m.lcVcxTest) ERASE (m.lcDirTest + 'anaf_efactura_compil.vct') IF FILE(m.lcDirTest + 'anaf_efactura_compil.err') ERASE (m.lcDirTest + 'anaf_efactura_compil.err') ENDIF * T5: proba ca T4 chiar prinde o eroare - aceeasi compilare pe o copie stricata intentionat lcVcxRau = m.lcDirTest + 'anaf_efactura_rau.vcx' IF FILE(m.lcVcxRau) ERASE (m.lcVcxRau) ERASE (m.lcDirTest + 'anaf_efactura_rau.vct') ENDIF IF FILE(m.lcDirTest + 'anaf_efactura_rau.err') ERASE (m.lcDirTest + 'anaf_efactura_rau.err') ENDIF COPY FILE (m.lcDirComun + 'clase\anaf_efactura.vcx') TO (m.lcVcxRau) COPY FILE (m.lcDirComun + 'clase\anaf_efactura.vct') TO (m.lcDirTest + 'anaf_efactura_rau.vct') USE (m.lcVcxRau) IN 0 EXCLUSIVE ALIAS clsRau SELECT clsRau LOCATE FOR UPPER(ALLTRIM(NVL(objname, ''))) == 'FRM_IMPORT_EFACTURA' AND EMPTY(NVL(parent, '')) REPLACE methods WITH ALLTRIM(NVL(methods, '')) + CHR(13) + CHR(10) + 'PROCEDURE proba_rea' + CHR(13) + CHR(10) + 'IF Createobject("Custom").NuExista() = 0' + CHR(13) + CHR(10) + 'ENDIF' + CHR(13) + CHR(10) + 'ENDPROC' + CHR(13) + CHR(10) USE IN clsRau COMPILE CLASSLIB (m.lcVcxRau) lcErrRau = IIF(FILE(m.lcDirTest + 'anaf_efactura_rau.err'), FILETOSTR(m.lcDirTest + 'anaf_efactura_rau.err'), '') DO TVerdict WITH !EMPTY(ALLTRIM(m.lcErrRau)), 'T5 compilarea semnaleaza sintaxa gresita', LEFT(STRTRAN(STRTRAN(m.lcErrRau, CHR(13), ' '), CHR(10), ' '), 100) ERASE (m.lcVcxRau) ERASE (m.lcDirTest + 'anaf_efactura_rau.vct') IF FILE(m.lcDirTest + 'anaf_efactura_rau.err') ERASE (m.lcDirTest + 'anaf_efactura_rau.err') ENDIF STRTOFILE('REZULTAT pass=' + TRANSFORM(m.lnPass) + ' fail=' + TRANSFORM(m.lnFail) + CHR(13) + CHR(10), m.lcLog, 1) QUIT PROCEDURE TVerdict LPARAMETERS tlOk, tcNume, tcDetaliu IF m.tlOk lnPass = m.lnPass + 1 ELSE lnFail = m.lnFail + 1 ENDIF STRTOFILE(IIF(m.tlOk, 'PASS ', 'FAIL ') + m.tcNume + IIF(EMPTY(m.tcDetaliu), '', ' [' + m.tcDetaliu + ']') + CHR(13) + CHR(10), m.lcLog, 1) ENDPROC PROCEDURE TErr LPARAMETERS tnErr, tcMsg, tcProg, tnLine STRTOFILE('EROARE ' + TRANSFORM(m.tnErr) + ' ' + m.tcMsg + ' in ' + m.tcProg + ' linia ' + TRANSFORM(m.tnLine) + CHR(13) + CHR(10), lcLog, 1) QUIT ENDPROC