123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714 |
- unit tctestsql;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils, fpcunit, testregistry, tsutils, tsdb, tstypes, sqldb, pqconnection;
- type
- { TTestSQLCase }
- { TTestBaseSQLCase }
- TTestBaseSQLCase = class(TTestCase)
- Protected
- function CreateResultData(out aData: TTestRunData; out aResult: TTestResultData; DateOffset: Integer = 0): Int64;
- function PreparePlatform(var aData: TTestRunData): Integer;
- procedure CreateSource(const aFileName : String);
- procedure DeleteSource(const aFileName: String);
- procedure AssertTestRunData(aQry: TSQLQuery; aData: TTestRunData);
- function GetSQL: TTestSQL; virtual; abstract;
- property SQL : TTestSQL Read GetSQL;
- end;
- TTestSQLCase = class(TTestBaseSQLCase)
- const
- SQLTestResultFilter = '(TR_ID=%d) and (TR_TESTRUN_FK=%d) and (TR_TEST_FK=%d) and (TR_OK=''%s'') and (TR_SKIP=''%s'') and (TR_RESULT=%d) and (TR_LOG=''%s'')';
- private
- protected
- function GetSQL: TTestSQL; override;
- protected
- procedure SetUp; override;
- procedure TearDown; override;
- published
- procedure TestHookUp;
- procedure TestAddCPU;
- procedure TestAddOS;
- procedure TestAddVersion;
- procedure TestAddCategory;
- procedure TestAddTest;
- Procedure TestUpdateTest;
- procedure TestAddPlatform;
- Procedure TestAddRun;
- procedure TestUpdateRun;
- Procedure TestAddTestResult;
- Procedure TestAddTestResultTwice;
- Procedure TestUpdateTestResult;
- Procedure TestAddLastResult;
- Procedure TestAddLastResultTwice;
- Procedure TestGetLastTestResult;
- Procedure TestAddPreviousResult;
- Procedure TestAddPreviousResultTwice;
- procedure TestGetCPUID;
- procedure TestGetOSID;
- procedure TestGetCategoryID;
- procedure TestGetVersionID;
- procedure TestGetTestID;
- procedure TestGetRunID;
- procedure TestHistoryNoHistory;
- procedure TestHistoryWithHistory;
- Procedure TestGetPreviousTestRun;
- Procedure TestGetNextTestRun;
- procedure TestAddCheckAllRtl;
- end;
- implementation
- uses tsstring, tcsetup;
- { TTestBaseSQLCase }
- procedure TTestBaseSQLCase.DeleteSource(const aFileName: String);
- begin
- if FileExists(aFilename+'.pp') then
- if not DeleteFile(aFilename+'.pp') then
- Fail('Failed to delete '+aFileName+'.pp');
- end;
- procedure TTestBaseSQLCase.CreateSource(const aFileName: String);
- var
- Src : TStrings;
- begin
- Src:=TStringList.Create;
- try
- Src.Add('program '+aFileName+';');
- Src.Add('begin');
- Src.Add('end.');
- Src.SaveToFile(afileName+'.pp');
- finally
- Src.Free;
- end;
- end;
- function TTestBaseSQLCase.PreparePlatform(var aData : TTestRunData) : Integer;
- begin
- aData.CategoryID:=SQL.GetCategoryID('x');
- if aData.CategoryID=-1 then
- aData.CategoryID:=SQL.AddCategory('x');
- aData.OSID:=SQL.GetOSID('y');
- if aData.OSID=-1 then
- aData.OSID:=SQL.AddOS('y');
- aData.CPUID:=SQL.GetCPUID('z');
- if aData.CPUID=-1 then
- aData.CPUID:=SQL.AddCPU('z');
- aData.VersionID:=SQL.GetVersionID('w');
- if aData.VersionID=-1 then
- aData.VersionID:=SQL.AddVersion('w',Date);
- aData.config:='v';
- aData.machine:='w';
- Result:=SQL.GetPlatformID(aData,False);
- if Result=-1 then
- Result:=SQL.AddPlatform(aData);
- end;
- procedure TTestBaseSQLCase.AssertTestRunData(aQry : TSQLQuery; aData : TTestRunData);
- var
- St : TTestStatus;
- begin
- With aQry,aData do
- begin
- AssertEquals('Date',DATE,FieldByName('TU_DATE').AsDateTime);
- AssertEquals('Platform',PlatformID,FieldByName('TU_PLATFORM_FK').AsInteger);
- AssertEquals('Submitter',Submitter,FieldByName('TU_SUBMITTER').AsString);
- For St in TValidTestStatus do
- AssertEquals(StatusText[St],StatusCount[st],FieldByName(SQLField[ST]).AsInteger);
- AssertEquals('CompilerDate',CompilerDate,FieldByName('TU_COMPILERDATE').AsString);
- AssertEquals('CompilerFullVersion',CompilerFullVersion,FieldByName('TU_COMPILERFULLVERSION').AsString);
- AssertEquals('CompilerRevision',CompilerRevision,FieldByName('TU_COMPILERREVISION').AsString);
- AssertEquals('TestsRevision',TestsRevision,FieldByName('TU_TESTSREVISION').AsString);
- AssertEquals('RTLRevision',RTLRevision,FieldByName('TU_RTLREVISION').AsString);
- AssertEquals('PackagesRevision',PackagesRevision,FieldByName('TU_PACKAGESREVISION').AsString);
- end;
- end;
- function TTestBaseSQLCase.CreateResultData(out aData: TTestRunData; out aResult: TTestResultData; DateOffset: Integer): Int64;
- begin
- aData:=Default(TTestRunData);
- aData.PlatformID:=PreparePlatform(aData);
- aData.Date:=Date-DateOffset;
- aData.RunID:=SQL.AddRun(aData);
- aResult:=Default(TTestResultData);
- aResult.RunID:=aData.RunID;
- aResult.PlatformID:=aData.PlatformID;
- aResult.Date:=Date-DateOffset;
- CreateSource('x');
- if SQL.GetTestID('x.pp')=-1 then
- aResult.TestID:=SQL.AddTest('x.pp',False)
- else
- aResult.TestID:=SQL.GetTestID('x.pp');
- aResult.TestResult:=stSuccessCompilationFailed;
- aResult.Log:='xyz';
- With aData do
- begin
- Result:=SQL.AddTestResult(aResult);
- aResult.ID:=Result;
- end;
- end;
- { TTestSQLCase }
- procedure TTestSQLCase.TestHookUp;
- begin
- AssertEquals('Empty testos',0,TDBHelper.CountRecords('TESTOS'));
- AssertEquals('Empty TESTCPU',0,TDBHelper.CountRecords('TESTCPU'));
- AssertEquals('Empty TESTCATEGORY',0,TDBHelper.CountRecords('TESTCATEGORY'));
- AssertEquals('Empty TESTVERSION',0,TDBHelper.CountRecords('TESTVERSION'));
- AssertEquals('Empty TESTPLATFORM',0,TDBHelper.CountRecords('TESTPLATFORM'));
- AssertEquals('Empty TESTRUN',0,TDBHelper.CountRecords('TESTRUN'));
- AssertEquals('Empty TESTS',0,TDBHelper.CountRecords('TESTS'));
- AssertEquals('Empty TESTRESULTS',0,TDBHelper.CountRecords('TESTRESULTS'));
- AssertEquals('Empty TESTLASTRESULTS',0,TDBHelper.CountRecords('TESTLASTRESULTS'));
- AssertEquals('Empty TESTPREVIOUSRESULTS',0,TDBHelper.CountRecords('TESTPREVIOUSRESULTS'));
- end;
- procedure TTestSQLCase.TestAddCPU;
- var
- lID : Int64;
- begin
- lID:=SQL.AddCPU('x');
- AssertEquals('exists',1,TDBHelper.CountRecords('TESTCPU',Format('(TC_ID=%d) and (tc_name=''x'')',[lID])));
- end;
- procedure TTestSQLCase.TestAddOS;
- var
- lID : Int64;
- begin
- lID:=SQL.AddOS('x');
- AssertEquals('exists',1,TDBHelper.CountRecords('TESTOS',Format('(TO_ID=%d) and (to_name=''x'')',[lID])));
- end;
- procedure TTestSQLCase.TestAddVersion;
- var
- lID : Int64;
- begin
- lID:=SQL.AddVersion('x',date);
- AssertEquals('exists',1,TDBHelper.CountRecords('TESTVERSION',Format('(Tv_ID=%d) and (tv_version=''x'')',[lID])));
- end;
- procedure TTestSQLCase.TestAddCategory;
- var
- lID : Int64;
- begin
- lID:=SQL.AddCategory('x');
- AssertEquals('exists',1,TDBHelper.CountRecords('TESTCATEGORY',Format('(TA_ID=%d) and (ta_name=''x'')',[lID])));
- end;
- procedure TTestSQLCase.TestAddTest;
- var
- lID : Integer;
- begin
- CreateSource('x');
- lID:=SQL.AddTest('x.pp',False);
- AssertEquals('exists',1,TDBHelper.CountRecords('TESTS',Format('(T_ID=%d) and (t_name=''x.pp'')',[lID])));
- end;
- procedure TTestSQLCase.TestUpdateTest;
- var
- lInfo : TTestInfo;
- lID : Integer;
- lFilter : string;
- begin
- lID:=SQL.AddTest('x.pp',False);
- lInfo:=Default(TTestInfo);
- With lInfo do
- begin
- Name:='name'; // Will not be changed
- CPU:='cpu';
- OS:='os';
- Version:='version';
- AddDate:=Date-1; // Will not be changed
- Graph:=True;
- Interactive:=True;
- Result:=123;
- Fail:=True;
- ReCompile:=True;
- NoRun:=True;
- NeedLibrary:=True;
- KnownRunError:=456;
- Known:=True;
- Note:='note';
- Description:='description';
- Source:='source';
- Opts:='opts';
- DelOptions:='deloptions';
- SkipCPU:='skipcpu';
- SkipEmu:='skipemu';
- NeedTarget:='needtarget';
- SkipTarget:='skiptarget';
- MaxVersion:='maxversion';
- KnownRunNote:='knownrunnote';
- KnownCompileNote:='knowncompilenote';
- RecompileOpt:='recompileopt';
- KnownCompileError:=789;
- NeededAfter:=True;
- IsKnownRunError:=True;
- Timeout:=543;
- Category:='category';
- Files:='files';
- ConfigFileSrc:='configfilesrc';
- ConfigFileDst:='configfiledst';
- WpoParas:='wpoparas';
- WpoPasses:=321;
- DelFiles:='delfiles';
- ExpectMsgs:=[1,2,3];
- end;
- SQL.UpdateTest(lID,lInfo,'xyz');
- // Construct filter with the values we expect.
- lFilter := Format('(T_ID = %d) AND ',[lID])
- + '(T_Name = ''x.pp'') AND '
- + '(T_CPU = ''cpu'') AND '
- + '(T_OS = ''os'') AND '
- + '(T_Version = ''version'') AND '
- + '(T_AddDate = '''+TTestSQL.SQLDate(Date)+''') AND '
- + '(T_Graph = ''t'') AND '
- + '(T_Interactive = ''t'') AND '
- + '(T_Result = 123) AND '
- + '(T_Fail = ''t'') AND '
- + '(T_ReCompile = ''t'') AND '
- + '(T_NoRun = ''t'') AND '
- + '(T_NeedLibrary = ''t'') AND '
- + '(T_KnownRunError = 456) AND '
- + '(T_Known = ''t'') AND '
- + '(T_Note = ''note'') AND '
- + '(T_Description = ''description'') AND '
- + '(T_Source = ''source'') AND '
- + '(T_Opts = ''opts'') AND '
- + '(T_DELOPTS =''deloptions'') AND '
- + '(T_SKIPCPU = ''skipcpu'') AND '
- + '(T_NEEDTARGET = ''needtarget'') AND '
- + '(T_MAXVERSION = ''maxversion'') AND '
- + '(T_KNOWNRUNNOTE = ''knownrunnote'') AND '
- + '(T_KNOWNCOMPILENOTE = ''knowncompilenote'') AND '
- + '(T_RECOMPILEOPT = ''recompileopt'') AND '
- + '(T_KNOWNCOMPILEERROR = 789) AND '
- + '(T_NEEDEDAFTER = ''t'') AND '
- + '(T_ISKNOWNRUNERROR = ''t'') AND '
- + '(T_Timeout = 543) AND '
- + '(T_CATEGORY = ''category'') AND '
- + '(T_FILES = ''files'') AND '
- + '(T_CONFIGFILESRC = ''configfilesrc'') AND '
- + '(T_CONFIGFILEDST = ''configfiledst'') AND '
- + '(T_WPOPARAS = ''wpoparas'') AND '
- + '(T_WPOPASSES = 321) AND '
- + '(T_DELFILES = ''delfiles'') AND '
- + '(T_EXPECTMSGS = ''1,2,3'')' ;
- // We should have 1 record with this filter
- AssertEquals('Updated',1,TDBHelper.CountRecords('TESTS',lFilter));
- end;
- procedure TTestSQLCase.TestAddPlatform;
- const
- SQLFilter = '(TP_ID=%d) and (TP_OS_FK=%d) and (TP_CPU_FK=%d) '+
- 'and (TP_VERSION_FK=%d) and (TP_CONFIG=''%s'') and (TP_MACHINE=''%s'')';
- var
- lData : TTestRunData;
- lID : integer;
- Flt : String;
- begin
- lData:=Default(TTestRunData);
- lID:=PreparePlatform(lData);
- With lData do
- flt:=Format(SQLFilter,[lID,OSID,CPUID,VersionID,Config,Machine]);
- AssertEquals('Platform',1,TDBHelper.CountRecords('TESTPLATFORM',Flt));
- end;
- procedure TTestSQLCase.TestAddRun;
- var
- lData : TTestRunData;
- lID : Int64;
- Qry : TSQLQuery;
- begin
- lData:=Default(TTestRunData);
- lData.PlatformID:=PreparePlatform(lData);
- With lData do
- begin
- machine:='a';
- submitter:='b';
- description:='c';
- Date:=Sysutils.Date;
- CompilerDate:='ymd';
- CompilerFullVersion:='1.2';
- CompilerRevision:='1.3';
- TestsRevision:='1.4';
- RTLRevision:='1.5';
- PackagesRevision:='1.6';
- end;
- lID:=SQL.AddRun(lData);
- Qry:=TDBHelper.CreateQuery(Format('Select * from testrun where (tu_id=%d)',[lID]));
- try
- Qry.Open;
- AssertFalse('Have data',Qry.IsEmpty);
- AssertTestRunData(Qry,lData);
- finally
- Qry.Free;
- end;
- end;
- procedure TTestSQLCase.TestAddTestResult;
- var
- lData : TTestRunData;
- lResult : TTestResultData;
- lID : Int64;
- flt : String;
- OK,Skip : Boolean;
- begin
- lID:=CreateResultData(lData,lResult);
- OK:=TestOK[lResult.TestResult];
- Skip:=TestSkipped[lResult.TestResult];
- With lResult do
- flt:=Format(SQLTestResultFilter,[lID,RunID,TestID,Bools[OK],Bools[Skip],Ord(TestResult),Log]);
- AssertEquals('Platform',1,TDBHelper.CountRecords('TESTRESULTS',Flt));
- end;
- procedure TTestSQLCase.TestAddTestResultTwice;
- var
- lData : TTestRunData;
- lResult : TTestResultData;
- lID,lID2 : Int64;
- flt : String;
- OK,Skip : Boolean;
- begin
- CreateResultData(lData,lResult);
- OK:=TestOK[lResult.TestResult];
- Skip:=TestSkipped[lResult.TestResult];
- lID:=SQL.AddTestResult(lResult);
- // Change result
- lResult.TestResult:=stFailedToCompile;
- lResult.Log:='xyza';
- OK:=TestOK[lResult.TestResult];
- Skip:=TestSkipped[lResult.TestResult];
- // Insert again...
- lID2:=SQL.AddTestResult(lResult);
- AssertEquals('Same ID',lID,lID2);
- flt:=Format(SQLTestResultFilter,[lID,lResult.RunID,lResult.TestID,Bools[OK],Bools[Skip],Ord(lResult.TestResult),lResult.Log]);
- AssertEquals('Result',1,TDBHelper.CountRecords('TESTRESULTS',Flt));
- end;
- procedure TTestSQLCase.TestUpdateTestResult;
- var
- lData : TTestRunData;
- lResult : TTestResultData;
- lID2,lID : Int64;
- flt : String;
- OK,Skip : Boolean;
- begin
- lID:=CreateResultData(lData,lResult);
- // Change result
- lResult.ID:=lID;
- lResult.TestResult:=stFailedToCompile;
- lResult.Log:='xyza';
- OK:=TestOK[lResult.TestResult];
- Skip:=TestSkipped[lResult.TestResult];
- // Update
- lID2:=SQL.UpdateTestResult(lResult);
- AssertEquals('Same ID',lID,lID2);
- flt:=Format(SQLTestResultFilter,[lID,lResult.RunID,lResult.TestID,Bools[OK],Bools[Skip],Ord(lResult.TestResult),lResult.Log]);
- AssertEquals('Result',1,TDBHelper.CountRecords('TESTRESULTS',Flt));
- end;
- procedure TTestSQLCase.TestAddLastResult;
- var
- lData : TTestRunData;
- lResult : TTestResultData;
- lID : Int64;
- flt : String;
- begin
- lID:=CreateResultData(lData,lResult);
- AssertTrue('Add',SQL.AddLastResult(lResult.TestID,lData.PlatformID,lID));
- flt:=Format('(TL_TEST_FK=%d) and (TL_PLATFORM_FK=%d) and (TL_TESTRESULTS_FK=%d)',[lResult.TestID,lData.PlatformID,lID]);
- AssertEquals('Result',1,TDBHelper.CountRecords('TESTLASTRESULTS',Flt));
- end;
- procedure TTestSQLCase.TestAddLastResultTwice;
- var
- lData : TTestRunData;
- lResult : TTestResultData;
- lID,lID2 : Integer;
- flt : string;
- begin
- lID:=CreateResultData(lData,lResult,1);
- AssertTrue('Add',SQL.AddLastResult(lResult.TestID,lData.PlatformID,lID));
- lID2:=CreateResultData(lData,lResult,0);
- AssertTrue('Add',SQL.AddLastResult(lResult.TestID,lData.PlatformID,lID2));
- flt:=Format('(TL_TEST_FK=%d) and (TL_PLATFORM_FK=%d) and (TL_TESTRESULTS_FK=%d)',[lResult.TestID,lData.PlatformID,lID2]);
- AssertEquals('Result',1,TDBHelper.CountRecords('TESTLASTRESULTS',Flt));
- end;
- procedure TTestSQLCase.TestGetLastTestResult;
- var
- lData : TTestRunData;
- lResult2,lResult : TTestResultData;
- lID : Integer;
- begin
- lID:=CreateResultData(lData,lResult,1);
- AssertTrue('Add',SQL.AddLastResult(lResult.TestID,lData.PlatformID,lID));
- lResult2:=SQL.GetLastTestResult(lResult.TestID,lData.PlatformID);
- AssertEquals('ID',lID,lResult2.ID);
- AssertEquals('Run',lResult.RunID,lResult2.RunID);
- AssertTrue('Status',lResult.TestResult=lResult2.TestResult);
- AssertEquals('Log',lResult.Log,lResult2.Log);
- AssertEquals('Date',Date-1,lResult2.Date);
- end;
- procedure TTestSQLCase.TestAddPreviousResult;
- var
- lData : TTestRunData;
- lResult : TTestResultData;
- lID : Int64;
- flt : String;
- begin
- lID:=CreateResultData(lData,lResult);
- AssertTrue('Add',SQL.AddPreviousResult(lResult.TestID,lData.PlatformID,lID));
- flt:=Format('(TPR_TEST_FK=%d) and (TPR_PLATFORM_FK=%d) and (TPR_TESTRESULTS_FK=%d)',[lResult.TestID,lData.PlatformID,lID]);
- AssertEquals('Result',1,TDBHelper.CountRecords('TESTPREVIOUSRESULTS',Flt));
- end;
- procedure TTestSQLCase.TestAddPreviousResultTwice;
- var
- lData : TTestRunData;
- lResult : TTestResultData;
- lID,lID2 : Integer;
- flt : string;
- begin
- lID:=CreateResultData(lData,lResult,1);
- AssertTrue('Add',SQL.AddPreviousResult(lResult.TestID,lData.PlatformID,lID));
- lID2:=CreateResultData(lData,lResult,0);
- AssertTrue('Add',SQL.AddPreviousResult(lResult.TestID,lData.PlatformID,lID2));
- flt:=Format('(TPR_TEST_FK=%d) and (TPR_PLATFORM_FK=%d) and (TPR_TESTRESULTS_FK=%d)',[lResult.TestID,lData.PlatformID,lID2]);
- AssertEquals('Result',1,TDBHelper.CountRecords('TESTPREVIOUSRESULTS',Flt));
- end;
- procedure TTestSQLCase.TestUpdateRun;
- var
- lData : TTestRunData;
- St : TTestStatus;
- Qry : TSQLQuery;
- begin
- lData:=Default(TTestRunData);
- lData.PlatformID:=PreparePlatform(lData);
- lData.RunID:=SQL.AddRun(lData);
- for St in TValidTestStatus do
- lData.StatusCount[st]:=(Ord(st)+1)*100;
- AssertTrue('Update',SQL.UpdateTestRun(lData));
- Qry:=TDBHelper.CreateQuery(Format('Select * from testrun where (tu_id=%d)',[lData.RunID]));
- try
- Qry.Open;
- AssertFalse('Have data',Qry.IsEmpty);
- AssertTestRunData(Qry,lData);
- finally
- Qry.Free;
- end;
- end;
- procedure TTestSQLCase.TestGetCPUID;
- begin
- TDBHelper.ExecSQL('INSERT INTO TESTCPU VALUES (1,''x'')');
- TDBHelper.ExecSQL('INSERT INTO TESTCPU VALUES (2,''y'')');
- AssertEquals('Count',2,TDBHelper.CountRecords('TESTCPU'));
- AssertEquals('Get x',1,SQL.GetCPUID('x'));
- AssertEquals('Get y',2,SQL.GetCPUID('y'));
- AssertEquals('Get z',-1,SQL.GetCPUID('z'));
- end;
- procedure TTestSQLCase.TestGetOSID;
- begin
- TDBHelper.ExecSQL('INSERT INTO TESTOS VALUES (1,''x'')');
- TDBHelper.ExecSQL('INSERT INTO TESTOS VALUES (2,''y'')');
- AssertEquals('Count',2,TDBHelper.CountRecords('TESTOS'));
- AssertEquals('Get x',1,SQL.GetOSID('x'));
- AssertEquals('Get y',2,SQL.GetOSID('y'));
- AssertEquals('Get z',-1,SQL.GetOSID('z'));
- end;
- procedure TTestSQLCase.TestGetCategoryID;
- begin
- TDBHelper.ExecSQL('INSERT INTO TESTCategory VALUES (1,''x'')');
- TDBHelper.ExecSQL('INSERT INTO TESTCategory VALUES (2,''y'')');
- AssertEquals('Count',2,TDBHelper.CountRecords('TESTCategory'));
- AssertEquals('Get x',1,SQL.GetCategoryID('x'));
- AssertEquals('Get y',2,SQL.GetCategoryID('y'));
- AssertEquals('Get z',-1,SQL.GetCategoryID('z'));
- end;
- procedure TTestSQLCase.TestGetVersionID;
- begin
- TDBHelper.ExecSQL('INSERT INTO TESTVERSION (TV_ID,TV_VERSION) VALUES (1,''x'')');
- TDBHelper.ExecSQL('INSERT INTO TESTVERSION (TV_ID,TV_VERSION) VALUES (2,''y'')');
- AssertEquals('Count',2,TDBHelper.CountRecords('TESTVERSION'));
- AssertEquals('Get x',1,SQL.GetVersionID('x'));
- AssertEquals('Get y',2,SQL.GetVersionID('y'));
- AssertEquals('Get z',-1,SQL.GetVersionID('z'));
- end;
- procedure TTestSQLCase.TestGetTestID;
- begin
- TDBHelper.ExecSQL('INSERT INTO TESTS (T_ID,T_NAME,T_ADDDATE) VALUES (1,''x.pp'',CURRENT_TIMESTAMP)');
- TDBHelper.ExecSQL('INSERT INTO TESTS (T_ID,T_NAME,T_ADDDATE) VALUES (2,''y.pp'',CURRENT_TIMESTAMP)');
- AssertEquals('Count',2,TDBHelper.CountRecords('TESTS'));
- AssertEquals('Get x',1,SQL.GetTestID('x.pp'));
- AssertEquals('Get y',2,SQL.GetTestID('y.pp'));
- AssertEquals('Get z',-1,SQL.GetCategoryID('z.pp'));
- end;
- procedure TTestSQLCase.TestGetRunID;
- var
- lData : TTestRunData;
- lPlatformID : integer;
- lRunID : Int64;
- begin
- lData:=Default(TTestRunData);
- lPlatformID:=PreparePlatform(lData);
- lData.PlatformID:=lPlatFormID;
- lData.Date:=Date;
- lRunID:=SQL.AddRun(lData);
- AssertEquals('Get run id',lRunID,SQL.GetRunID(lData));
- end;
- function TTestSQLCase.GetSQL: TTestSQL;
- begin
- Result:=TDBHelper.SQL;
- end;
- procedure TTestSQLCase.SetUp;
- begin
- TDBHelper.ClearAllTables;
- SQL.TestSrcDir:='./';
- end;
- procedure TTestSQLCase.TearDown;
- begin
- TDBHelper.MaybeRollback;
- DeleteSource('x');
- end;
- procedure TTestSQLCase.TestHistoryNoHistory;
- Var
- lData : TTestRunData;
- lResultID : Int64;
- begin
- AssertEquals('count TESTRUNHISTORY before',0,TDBHelper.CountRecords('TESTRUNHISTORY'));
- lData:=Default(TTestRunData);
- lData.PlatformID:=PreparePlatform(lData);
- lData.Date:=Date;
- lResultID:=SQL.AddRun(lData);
- AssertEquals('count TESTRUN', 1, TDBHelper.CountRecords('TESTRUN',Format('(TU_ID=%d)',[lResultID])));
- AssertEquals('count TESTRUNHISTORY after',0,TDBHelper.CountRecords('TESTRUNHISTORY'));
- end;
- procedure TTestSQLCase.TestHistoryWithHistory;
- Var
- lData : TTestRunData;
- lResult1ID,lResult2ID : Int64;
- lFilter : String;
- begin
- AssertEquals('count TESTRUNHISTORY before',0,TDBHelper.CountRecords('TESTRUNHISTORY'));
- lData:=Default(TTestRunData);
- lData.PlatformID:=PreparePlatform(lData);
- lData.Date:=Date-1;
- lResult1ID:=SQL.AddRun(lData);
- AssertEquals('count TESTRUN', 1, TDBHelper.CountRecords('TESTRUN',Format('(TU_ID=%d)',[lResult1ID])));
- AssertEquals('count TESTRUNHISTORY after',0,TDBHelper.CountRecords('TESTRUNHISTORY'));
- lData.Date:=Date;
- lResult2ID:=SQL.AddRun(lData);
- AssertEquals('count TESTRUN', 1, TDBHelper.CountRecords('TESTRUN',Format('(TU_ID=%d)',[lResult2ID])));
- lFilter:=Format('(TH_ID_FK=%d) and (TH_PREVIOUS_FK=%d)',[lResult2ID,lResult1ID]);
- AssertEquals('count TESTRUNHISTORY after',1,TDBHelper.CountRecords('TESTRUNHISTORY',lFilter));
- end;
- procedure TTestSQLCase.TestGetPreviousTestRun;
- begin
- TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (2,1)');
- TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (3,2)');
- TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (4,3)');
- AssertEquals('First',-1,SQL.GetPreviousRunID(1));
- AssertEquals('Second',1,SQL.GetPreviousRunID(2));
- AssertEquals('third',2,SQL.GetPreviousRunID(3));
- AssertEquals('last',3,SQL.GetPreviousRunID(4));
- end;
- procedure TTestSQLCase.TestGetNextTestRun;
- begin
- TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (2,1)');
- TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (3,2)');
- TDBHelper.ExecSQL('INSERT INTO TESTRUNHISTORY VALUES (4,3)');
- AssertEquals('First',2,SQL.GetNextRunID(1));
- AssertEquals('Second',3,SQL.GetNextRunID(2));
- AssertEquals('third',4,SQL.GetNextRunID(3));
- AssertEquals('last',-1,SQL.GetNextRunID(4));
- end;
- procedure TTestSQLCase.TestAddCheckAllRtl;
- var
- lData : TCheckAllRTL;
- lTestRunData: TTestRunData;
- I : integer;
- begin
- lTestRunData:=Default(TTestRunData);
- lData:=Default(TCheckAllRTL);
- lData.Platform:=PreparePlatform(lTestRunData);
- lData.Date:=Date;
- for I:=Low(TCheckStage) to High(TCheckStage) do
- begin
- lData.Steps[i]:=(I mod 2)=0;
- lData.Logs[i]:='Step '+IntToStr(i)+' log';
- end;
- lData.ID:=SQL.AddCheckAllRtl(lData);
- AssertEquals('count CheckAllRTL', 1, TDBHelper.CountRecords('CHECKALLRTL',Format('(CA_ID=%d)',[lData.ID])));
- AssertEquals('count CheckAllRTLLog', 3, TDBHelper.CountRecords('CHECKALLRTLLOG',Format('CAL_CHECKALLRTL_FK=%d',[lData.ID])));
- end;
- initialization
- RegisterTestDecorator(TDBDecorator,TTestSQLCase);
- end.
|