mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 17:48:01 +02:00
+ restructured
+ added TTestFieldTypes.TestString and TestDate git-svn-id: trunk@3571 -
This commit is contained in:
parent
3824604e8a
commit
e23fd988d3
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -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
|
||||
|
@ -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
6
fcl/dbtests/settings.inc
Normal file
@ -0,0 +1,6 @@
|
||||
{$IFDEF fpc}
|
||||
{$define SQLDB_AVAILABLE}
|
||||
{$define DBF_AVAILABLE}
|
||||
{$ELSE}
|
||||
{$DEFINE DBF_AVAILABLE}
|
||||
{$ENDIF}
|
@ -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;
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user