+ restructured

+ added TTestFieldTypes.TestString and TestDate

git-svn-id: trunk@3571 -
This commit is contained in:
joost 2006-05-18 21:29:15 +00:00
parent 3824604e8a
commit e23fd988d3
5 changed files with 156 additions and 51 deletions

1
.gitattributes vendored
View File

@ -758,6 +758,7 @@ fcl/dbtests/Makefile.fpc -text
fcl/dbtests/database.ini -text
fcl/dbtests/dbftoolsunit.pas -text
fcl/dbtests/dbtestframework.pas -text
fcl/dbtests/settings.inc -text
fcl/dbtests/sqldbtoolsunit.pas -text
fcl/dbtests/testdbbasics.pas -text
fcl/dbtests/testsqlfieldtypes.pas -text

View File

@ -1,30 +1,37 @@
program dbtestframework_console;
program dbtestframework;
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
SysUtils,
fpcunit,testregistry,testreport,
testdbbasics;
var
FXMLResultsWriter: TXMLResultsWriter;
testResult: TTestResult;
begin
testResult := TTestResult.Create;
FXMLResultsWriter := TXMLResultsWriter.Create;
try
testResult.AddListener(FXMLResultsWriter);
FXMLResultsWriter.WriteHeader;
GetTestRegistry.Run(testResult);
FXMLResultsWriter.WriteResult(testResult);
finally
testResult.Free;
FXMLResultsWriter.Free;
end;
end.
{$include settings.inc}
{$APPTYPE CONSOLE}
uses
SysUtils,
fpcunit,testregistry,
{$ifdef SQLDB_AVAILABLE}
testsqlfieldtypes,
{$ENDIF}
{$IFDEF DBF_AVAILABLE}
testdbbasics,
{$ENDIF}
testreport;
var
FXMLResultsWriter: TXMLResultsWriter;
testResult: TTestResult;
begin
testResult := TTestResult.Create;
FXMLResultsWriter := TXMLResultsWriter.Create;
try
testResult.AddListener(FXMLResultsWriter);
FXMLResultsWriter.WriteHeader;
GetTestRegistry.Run(testResult);
FXMLResultsWriter.WriteResult(testResult);
finally
testResult.Free;
FXMLResultsWriter.Free;
end;
end.

6
fcl/dbtests/settings.inc Normal file
View File

@ -0,0 +1,6 @@
{$IFDEF fpc}
{$define SQLDB_AVAILABLE}
{$define DBF_AVAILABLE}
{$ELSE}
{$DEFINE DBF_AVAILABLE}
{$ENDIF}

View File

@ -5,36 +5,131 @@ unit TestSQLFieldTypes;
interface
uses
Classes, SysUtils, fpcunit, testutils, testregistry;
Classes, SysUtils, fpcunit, testutils, testregistry,
db;
type
{ TTestFieldTypes }
TTestFieldTypes= class(TTestCase)
private
procedure TestFldType(ADatatype: TFieldType; ADataSize: integer; ASQLTypeDecl: string; ATestValuesStr: array of string; ATestValues: array of variant);
protected
procedure SetUp; override;
procedure TearDown; override;
procedure RunTest; override;
published
procedure TestInt;
end;
procedure TestString;
procedure TestDate;
end;
implementation
uses db,sqldbtoolsunit,toolsunit;
uses sqldbtoolsunit,toolsunit, variants;
procedure TTestFieldTypes.TestInt;
const
testValuesCount = 17;
testValues : Array[0..testValuesCount-1] of integer = (-maxInt,-maxSmallint-1,-maxSmallint,-256,-255,-128,-127,-1,0,1,127,128,255,256,maxSmallint,maxSmallint+1,MaxInt);
testValuesInt : Array[0..testValuesCount-1] of integer = (-maxInt,-maxSmallint-1,-maxSmallint,-256,-255,-128,-127,-1,0,1,127,128,255,256,maxSmallint,maxSmallint+1,MaxInt);
var
i : byte;
TestValues : array[0..testValuesCount-1] of variant;
TestValuesStr : array[0..testValuesCount-1] of string;
i : byte;
begin
TSQLDBConnector(DBConnector).Connection.ExecuteDirect('create table FPDEV2 (ID INT NOT NULL)');
for i := 0 to testValuesCount-1 do
begin
TestValues[i] := testValuesInt[i];
TestValuesStr[i] := inttostr(testValuesInt[i]);
end;
TestFldType(ftInteger,4,'INT',TestValuesStr,TestValues);
end;
procedure TTestFieldTypes.TestString;
const
testValuesCount = 15;
testValuesS : Array[0..testValuesCount-1] of string = (
'a',
'ab',
'abc',
'abcd',
'abcde',
'abcdef',
'abcdefg',
'abcdefgh',
'abcdefghi',
'abcdefghij',
'lMnOpQrStU',
'1234567890',
'_!@#$%^&*(',
')-;:/?.<>',
'~`|{}-='
);
var
TestValues : array[0..testValuesCount-1] of variant;
TestValuesStr : array[0..testValuesCount-1] of string;
i : byte;
begin
for i := 0 to testValuesCount-1 do
begin
TestValuesStr[i] := '''' + testValuesS[i] + '''';
TestValues[i] := testValuesS[i];
end;
TestFldType(ftString,11,'VARCHAR(10)',TestValuesStr,TestValues);
end;
procedure TTestFieldTypes.TestDate;
const
testValuesCount = 14;
var
TestValues : array[0..testValuesCount-1] of variant;
TestValuesStr : array[0..testValuesCount-1] of string;
i : byte;
s : tdatetime;
begin
TestValues[0] := EncodeDate(2000,1,1);
TestValues[1] := EncodeDate(1999,12,31);
TestValues[2] := EncodeDate(2004,2,29);
TestValues[3] := EncodeDate(2004,3,1);
TestValues[4] := EncodeDate(1991,2,28);
TestValues[5] := EncodeDate(1991,3,1);
TestValues[6] := EncodeDate(2040,10,16);
TestValues[7] := EncodeDate(1977,9,29);
TestValues[8] := EncodeDate(1800,3,30);
TestValues[9] := EncodeDate(1650,5,1);
TestValues[10] := EncodeDate(1754,6,4);
TestValues[11] := EncodeDate(904,4,12);
TestValues[12] := EncodeDate(199,7,9);
TestValues[13] := EncodeDate(1,1,1);
for i := 0 to testValuesCount-1 do
TestValuesStr[i] := '''' + FormatDateTime('yyyy/mm/dd',testValues[i]) + '''';
TestFldType(ftDate,8,'DATE',TestValuesStr,TestValues);
end;
procedure TTestFieldTypes.TestFldType(ADatatype: TFieldType; ADataSize: integer;
ASQLTypeDecl: string; ATestValuesStr: array of string; ATestValues: array of variant);
var
i : byte;
testValuesCount : integer;
s : string;
begin
testValuesCount := length(ATestValues);
TSQLDBConnector(DBConnector).Connection.ExecuteDirect('create table FPDEV2 (FT ' +ASQLTypeDecl+ ')');
// Firebird/Interbase need a commit after a DDL statement. Not necessary for the other connections
TSQLDBConnector(DBConnector).Transaction.CommitRetaining;
@ -45,25 +140,22 @@ begin
SQL.Add('select * from FPDEV2');
Open;
AssertEquals(1,FieldCount);
AssertEquals('ID',fields[0].FieldName);
AssertEquals('ID',fields[0].DisplayName);
AssertEquals(4,fields[0].DataSize);
AssertTrue(ftInteger=fields[0].DataType);
AssertEquals('FT',fields[0].FieldName);
AssertEquals(ADataSize,fields[0].DataSize);
AssertTrue(ADatatype=fields[0].DataType);
Close;
for i := 0 to testValuesCount-1 do
TSQLDBConnector(DBConnector).Connection.ExecuteDirect('insert into FPDEV2 (id) values (' + inttostr(testValues[i]) + ')');
TSQLDBConnector(DBConnector).Connection.ExecuteDirect('insert into FPDEV2 (FT) values (' + AtestValuesStr[i] + ')');
// TSQLDBConnector(DBConnector).Transaction.CommitRetaining; // For debug-purposes
Open;
for i := 0 to testValuesCount-1 do
begin
AssertEquals(testValues[i],fields[0].Value);
AssertEquals(string(AtestValues[i]),fields[0].Value);
Next;
end;
close;
end;
TSQLDBConnector(DBConnector).Transaction.Rollback;
end;

View File

@ -2,12 +2,10 @@ unit ToolsUnit;
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$DEFINE SQLDB_AVAILABLE}
{$DEFINE DBF_AVAILABLE}
{$ELSE}
{$DEFINE DBF_AVAILABLE}
{$ENDIF}
{$I settings.inc}
interface
uses
@ -36,7 +34,7 @@ type
TTestDataLink = class(TDataLink)
protected
{$IFDEF FPC}
{$IFDEF fpc}
procedure DataEvent(Event: TDataEvent; Info: Ptrint); override;
{$ELSE}
procedure DataEvent(Event: TDataEvent; Info: longint); override;
@ -46,10 +44,11 @@ type
const
DataEventnames : Array [TDataEvent] of String[19] =
('deFieldChange', 'deRecordChange', 'deDataSetChange',
'deDataSetScroll', 'deLayoutChange', 'deUpdateRecord', 'deUpdateState',
'deCheckBrowseMode', 'dePropertyChange', 'deFieldListChange', 'deFocusControl',
'deParentScroll','deConnectChange','deReconcileError','deDisabledStateChange');
('deFieldChange', 'deRecordChange', 'deDataSetChange', 'deDataSetScroll',
'deLayoutChange', 'deUpdateRecord', 'deUpdateState', 'deCheckBrowseMode',
'dePropertyChange', 'deFieldListChange', 'deFocusControl' ,'deParentScroll'
{$IFNDEF VER2_0_2}, 'deConnectChange','deReconcileError','deDisabledStateChange'{$ENDIF}
);
var dbtype,
dbname,