Browse Source

fcl-db: tests: test that RowsAffected is specific per query not per connection (if more queries are executed over same connection)

git-svn-id: trunk@25377 -
lacak 12 years ago
parent
commit
c42890ed75
1 changed files with 24 additions and 15 deletions
  1. 24 15
      packages/fcl-db/tests/testfieldtypes.pas

+ 24 - 15
packages/fcl-db/tests/testfieldtypes.pas

@@ -1975,41 +1975,50 @@ begin
 end;
 
 procedure TTestFieldTypes.TestRowsAffected;
+var Query2: TSQLQuery;
 begin
   with TSQLDBConnector(DBConnector) do
     begin
-    AssertEquals(-1,query.RowsAffected);
+    Query2 := GetNDataset(0) as TSQLQuery;
+
+    AssertEquals(-1, Query.RowsAffected);
     Connection.ExecuteDirect('create table FPDEV2 (' +
                               '  ID INT NOT NULL,  ' +
                               '  NAME VARCHAR(250),' +
-                              '  PRIMARY KEY (ID)  ' +
-                              ')                   ');
+                              '  PRIMARY KEY (ID) )');
     // Firebird/Interbase need a commit after a DDL statement. Not necessary for the other connections
     TSQLDBConnector(DBConnector).CommitDDL;
 
     Query.SQL.Text := 'insert into FPDEV2(ID,NAME) values (1,''test1'')';
     Query.ExecSQL;
-    AssertEquals(1,query.RowsAffected);
+    AssertEquals(1, Query.RowsAffected);
     Query.SQL.Text := 'insert into FPDEV2(ID,NAME) values (2,''test2'')';
     Query.ExecSQL;
-    AssertEquals(1,query.RowsAffected);
+    AssertEquals(1, Query.RowsAffected);
+
     Query.SQL.Text := 'update FPDEV2 set NAME=''NewTest''';
     Query.ExecSQL;
-    AssertEquals(2,query.RowsAffected);
+
+    AssertEquals(-1, Query2.RowsAffected);
+    Query2.SQL.Text := 'insert into FPDEV2 values(3,''test3'')';
+    Query2.ExecSQL;
+    AssertEquals(1, Query2.RowsAffected);
+    // tests, that RowsAffected is specific per query, not per connection
+    //  i.e. that it doesn't return only RowsAffected of last query executed over connection
+    AssertEquals(2, Query.RowsAffected);
+
     Query.SQL.Text := 'select * from FPDEV2';
     Query.Open;
-    AssertTrue(query.RowsAffected<>0); // It should return -1 or the number of selected rows.
-    query.Close;
-    AssertTrue(query.RowsAffected<>0); // It should return -1 or the same as the last time it was called.
-    if (SQLConnType = sqlite3) then  // sqlite doesn't count the rowsaffected if there is no where-clause
-      Query.SQL.Text := 'delete from FPDEV2 where 1'
-    else
-      Query.SQL.Text := 'delete from FPDEV2';
+    AssertTrue(Query.RowsAffected<>0); // It should return -1 or the number of selected rows.
+    Query.Close;
+    AssertTrue(Query.RowsAffected<>0); // It should return -1 or the same as the last time it was called.
+
+    Query.SQL.Text := 'delete from FPDEV2 where ID>0'; // sqlite doesn't count the RowsAffected if there is no where-clause
     Query.ExecSQL;
-    AssertEquals(2,query.RowsAffected);
+    AssertEquals(3, Query.RowsAffected);
     Query.SQL.Text := 'delete from FPDEV2';
     Query.ExecSQL;
-    AssertEquals(0,query.RowsAffected);
+    AssertEquals(0, Query.RowsAffected);
     end;
 end;