Explorar o código

fcl-db: tests: unify test with others

git-svn-id: trunk@29182 -
lacak %!s(int64=10) %!d(string=hai) anos
pai
achega
2bf0abcdfa
Modificáronse 1 ficheiros con 28 adicións e 35 borrados
  1. 28 35
      packages/fcl-db/tests/testfieldtypes.pas

+ 28 - 35
packages/fcl-db/tests/testfieldtypes.pas

@@ -24,7 +24,10 @@ type
     procedure TestSQLFieldType(ADatatype: TFieldType; ASQLTypeDecl: string;
       ADataSize: integer; AGetSQLTextProc: TGetSQLTextProc;
       ACheckFieldValueProc: TCheckFieldValueProc);
-    procedure TestXXParamQuery(ADatatype : TFieldType; ASQLTypeDecl : string; testValuesCount : integer; Cross : boolean = false);
+    procedure TestXXParamQuery(ADataType : TFieldType; ASQLTypeDecl : string;
+      ParamValuesCount : integer); overload;
+    procedure TestXXParamQuery(ADataType : TFieldType; ASQLTypeDecl : string;
+      ParamValuesCount : integer; const ParamValues: array of string; Cross : boolean = False); overload;
     procedure TestSetBlobAsParam(asWhat : integer);
   protected
     procedure SetUp; override;
@@ -83,6 +86,7 @@ type
     procedure TestTimeParamQuery;
     procedure TestDateTimeParamQuery;
     procedure TestFmtBCDParamQuery;
+    Procedure TestFmtBCDParamQuery2; // Bug 27077
     procedure TestFloatParamQuery;
     procedure TestCurrencyParamQuery;
     procedure TestBCDParamQuery;
@@ -90,7 +94,6 @@ type
     procedure TestVarBytesParamQuery;
     procedure TestBooleanParamQuery;
     procedure TestBlobParamQuery;
-    Procedure TestFmtBCDParamQuery2; // Bug 27077
 
     procedure TestSetBlobAsMemoParam;
     procedure TestSetBlobAsBlobParam;
@@ -1489,7 +1492,14 @@ end;
 
 procedure TTestFieldTypes.TestFmtBCDParamQuery;
 begin
-  TestXXParamQuery(ftFMTBcd,FieldtypeDefinitions[ftFMTBcd],testValuesCount);
+  TestXXParamQuery(ftFMTBcd, FieldtypeDefinitions[ftFMTBcd], testValuesCount, testFmtBCDValues);
+end;
+
+Procedure TTestFieldTypes.TestFmtBCDParamQuery2;
+begin
+  // This test tests FmtBCD params with smaller precision, which fits into INT32
+  // TestFmtBCDParamQuery tests FmtBCD params with bigger precision, which fits into INT64
+  TestXXParamQuery(ftFMTBcd, 'NUMERIC(9,5)', 2, ['1234','1234.56781']);
 end;
 
 procedure TTestFieldTypes.TestDateParamQuery;
@@ -1499,7 +1509,7 @@ end;
 
 procedure TTestFieldTypes.TestCrossStringDateParam;
 begin
-  TestXXParamQuery(ftDate,FieldtypeDefinitions[ftDate],testDateValuesCount,True);
+  TestXXParamQuery(ftDate,FieldtypeDefinitions[ftDate],testDateValuesCount,[],True);
 end;
 
 procedure TTestFieldTypes.TestTimeParamQuery;
@@ -1530,12 +1540,12 @@ end;
 
 procedure TTestFieldTypes.TestBytesParamQuery;
 begin
-  TestXXParamQuery(ftBytes, FieldtypeDefinitions[ftBytes], testBytesValuesCount, true);
+  TestXXParamQuery(ftBytes, FieldtypeDefinitions[ftBytes], testBytesValuesCount, [], True);
 end;
 
 procedure TTestFieldTypes.TestVarBytesParamQuery;
 begin
-  TestXXParamQuery(ftVarBytes, FieldtypeDefinitions[ftVarBytes], testVarBytesValuesCount, not(SQLServerType in [ssMSSQL, ssSybase]));
+  TestXXParamQuery(ftVarBytes, FieldtypeDefinitions[ftVarBytes], testVarBytesValuesCount, [], not(SQLServerType in [ssMSSQL, ssSybase]));
 end;
 
 procedure TTestFieldTypes.TestBooleanParamQuery;
@@ -1548,30 +1558,7 @@ begin
   TestXXParamQuery(ftBlob, FieldtypeDefinitions[ftBlob], testBlobValuesCount);
 end;
 
-Procedure TTestFieldTypes.TestFmtBCDParamQuery2;
-begin
-  // This test tests FmtBCD params with smaller precision, which fits into INT32
-  // TestFmtBCDParamQuery tests FmtBCD params with bigger precision, which fits into INT64
-  with TSQLDBConnector(DBConnector) do
-    begin
-    Connection.ExecuteDirect('create table FPDEV2 (ID INT, FIELD1 NUMERIC (9,5))');
-    CommitDDL;
-    with Query do
-      begin
-      SQL.Text:='insert into FPDEV2 (ID,FIELD1) values (:id,:field1)';
-      ParamByName('id').AsInteger := 1;
-      ParamByName('field1').AsFMTBCD := DoubleToBCD(1234.56781);
-      ExecSQL;
-      SQL.Text:='select * from FPDEV2 where (id=1) and (field1=1234.56781)';
-      Open;
-      AssertEquals(1234.56781, Fields[1].AsFloat);
-      Close;
-      end;
-    end;
-end;
-
 procedure TTestFieldTypes.TestStringParamQuery;
-
 begin
   TestXXParamQuery(ftString,'VARCHAR(10)',testValuesCount);
 end;
@@ -1581,8 +1568,14 @@ begin
   TestXXParamQuery(ftFixedChar,'CHAR(10)',testValuesCount);
 end;
 
+procedure TTestFieldTypes.TestXXParamQuery(ADataType : TFieldType; ASQLTypeDecl : string;
+  ParamValuesCount : integer);
+begin
+  TestXXParamQuery(ADataType, ASQLTypeDecl, ParamValuesCount, [], False);
+end;
 
-procedure TTestFieldTypes.TestXXParamQuery(ADatatype : TFieldType; ASQLTypeDecl : string; testValuesCount : integer; Cross : boolean = false);
+procedure TTestFieldTypes.TestXXParamQuery(ADataType : TFieldType; ASQLTypeDecl : string;
+  ParamValuesCount : integer; const ParamValues: array of string; Cross : boolean = False);
 
 var i : integer;
 
@@ -1604,7 +1597,7 @@ begin
     if ADataType=ftFixedChar then
       Params.ParamByName('field1').DataType := ftFixedChar;
 
-    for i := 0 to testValuesCount -1 do
+    for i := 0 to ParamValuesCount-1 do
       begin
       Params.ParamByName('id').AsInteger := i;
       case ADataType of
@@ -1623,7 +1616,7 @@ begin
                    else
                       Params.ParamByName('field1').AsDate := StrToDate(testDateValues[i],'yyyy/mm/dd','-');
         ftDateTime: Params.ParamByName('field1').AsDateTime := StrToDateTime(testValues[ADataType,i], DBConnector.FormatSettings);
-        ftFMTBcd  : Params.ParamByName('field1').AsFMTBCD := StrToBCD(testFmtBCDValues[i], DBConnector.FormatSettings);
+        ftFMTBcd  : Params.ParamByName('field1').AsFMTBCD := StrToBCD(ParamValues[i], DBConnector.FormatSettings);
         ftBlob    : Params.ParamByName('field1').AsBlob := testBlobValues[i];
         ftBytes   : if cross then
                       Params.ParamByName('field1').Value := StringToByteArray(testBytesValues[i])
@@ -1639,7 +1632,7 @@ begin
       ExecSQL;
       end;
     // test NULL parameter value
-    Params.ParamByName('id').AsInteger := testValuesCount;
+    Params.ParamByName('id').AsInteger := ParamValuesCount;
     Params.ParamByName('field1').Clear;
     ExecSQL;
 
@@ -1649,7 +1642,7 @@ begin
     sql.append('select * from FPDEV2 order by ID');
     open;
 
-    for i := 0 to testValuesCount -1 do
+    for i := 0 to ParamValuesCount-1 do
       begin
       AssertEquals(i,FieldByName('ID').AsInteger);
       case ADataType of
@@ -1665,7 +1658,7 @@ begin
         ftTime     : AssertEquals(testTimeValues[i],DateTimeToTimeString(FieldByName('FIELD1').AsDateTime));
         ftDate     : AssertEquals(testDateValues[i],DateTimeToStr(FieldByName('FIELD1').AsDateTime, DBConnector.FormatSettings));
         ftDateTime : AssertEquals(testValues[ADataType,i], DateTimeToStr(FieldByName('FIELD1').AsDateTime, DBConnector.FormatSettings));
-        ftFMTBcd   : AssertEquals(testFmtBCDValues[i], BCDToStr(FieldByName('FIELD1').AsBCD, DBConnector.FormatSettings));
+        ftFMTBcd   : AssertEquals(ParamValues[i], BCDToStr(FieldByName('FIELD1').AsBCD, DBConnector.FormatSettings));
         ftBlob     : AssertEquals(testBlobValues[i], FieldByName('FIELD1').AsString);
         ftVarBytes,
         ftBytes    : AssertEquals(testBytesValues[i], shortstring(FieldByName('FIELD1').AsString));