Browse Source

+ restructured
+ added TTestFieldTypes.TestString and TestDate

git-svn-id: trunk@3571 -

joost 19 years ago
parent
commit
e23fd988d3

+ 1 - 0
.gitattributes

@@ -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

+ 32 - 25
fcl/dbtests/dbtestframework.pas

@@ -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 - 0
fcl/dbtests/settings.inc

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

+ 109 - 17
fcl/dbtests/testsqlfieldtypes.pas

@@ -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
+  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
+    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
-  i : byte;
+  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
-  TSQLDBConnector(DBConnector).Connection.ExecuteDirect('create table FPDEV2 (ID INT NOT NULL)');
+  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;

+ 8 - 9
fcl/dbtests/toolsunit.pas

@@ -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,