ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/testsuite/Test4.pas
(Generate patch)

Comparing ibx/trunk/fbintf/testsuite/Test4.pas (file contents):
Revision 45 by tony, Tue Dec 6 10:33:46 2016 UTC vs.
Revision 402 by tony, Mon Aug 1 10:07:24 2022 UTC

# Line 1 | Line 1
1 + (*
2 + *  Firebird Interface (fbintf) Test suite. This program is used to
3 + *  test the Firebird Pascal Interface and provide a semi-automated
4 + *  pass/fail check for each test.
5 + *
6 + *  The contents of this file are subject to the Initial Developer's
7 + *  Public License Version 1.0 (the "License"); you may not use this
8 + *  file except in compliance with the License. You may obtain a copy
9 + *  of the License here:
10 + *
11 + *    http://www.firebirdsql.org/index.php?op=doc&id=idpl
12 + *
13 + *  Software distributed under the License is distributed on an "AS
14 + *  IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
15 + *  implied. See the License for the specific language governing rights
16 + *  and limitations under the License.
17 + *
18 + *  The Initial Developer of the Original Code is Tony Whyman.
19 + *
20 + *  The Original Code is (C) 2016 Tony Whyman, MWA Software
21 + *  (http://www.mwasoftware.co.uk).
22 + *
23 + *  All Rights Reserved.
24 + *
25 + *  Contributor(s): ______________________________________.
26 + *
27 + *)
28 +
29   unit Test4;
30 + {$IFDEF MSWINDOWS}
31 + {$DEFINE WINDOWS}
32 + {$ENDIF}
33  
34 < {$mode objfpc}{$H+}
34 > {$IFDEF FPC}
35 > {$mode delphi}
36   {$codepage utf8}
37 + {$ENDIF}
38  
39   {Test 4: Update, Insert and Delete Queries}
40  
# Line 34 | Line 67 | unit Test4;
67   interface
68  
69   uses
70 <  Classes, SysUtils, TestManager, IB;
70 >  Classes, SysUtils, TestApplication, FBTestApp, IB;
71  
72   type
73  
74    { TTest4 }
75  
76 <  TTest4 = class(TTestBase)
76 >  TTest4 = class(TFBTestBase)
77    private
78      procedure DoQuery(Attachment: IAttachment);
79    public
80 <    function TestTitle: string; override;
81 <    procedure RunTest(CharSet: string; SQLDialect: integer); override;
80 >    function TestTitle: AnsiString; override;
81 >    procedure RunTest(CharSet: AnsiString; SQLDialect: integer); override;
82    end;
83  
84  
# Line 55 | Line 88 | implementation
88  
89   procedure TTest4.DoQuery(Attachment: IAttachment);
90   var Transaction, Transaction2, Transaction3: ITransaction;
91 <    Statement: IStatement;
91 >    Statement, Statement2: IStatement;
92      Rows: IResultSet;
93 +    stats: TPerfCounters;
94   begin
95    Transaction := Attachment.StartTransaction([isc_tpb_write,isc_tpb_nowait,isc_tpb_concurrency],taRollback);
96    Statement := Attachment.Prepare(Transaction,'Update Employee Set Hire_Date = ? Where EMP_NO = ?',3);
# Line 67 | Line 101 | begin
101    Transaction.Rollback;
102    Transaction.Start(TARollback);
103  
104 <  Statement := Attachment.PrepareWithNamedParameters(Transaction,'Select * from EMPLOYEE Where EMP_NO = :EMP_NO',3);
105 <  Statement.GetSQLParams.ByName('EMP_NO').AsInteger := 8;
104 >  Statement := Attachment.PrepareWithNamedParameters(Transaction,'Select * from EMPLOYEE Where EMP_NO = :F1',3);
105 >  Statement.EnableStatistics(true);
106 >  Statement.GetSQLParams.ByName('F1').AsInteger := 8;
107    ReportResults(Statement);
108 +  if Statement.GetPerfStatistics(stats) then
109 +    WritePerfStats(stats);
110  
111    Statement := Attachment.PrepareWithNamedParameters(Transaction,'INSERT INTO EMPLOYEE (EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE,' +
112        'DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY) '+
# Line 81 | Line 118 | begin
118      ByName('FIRST_NAME').AsString := 'John';
119      ByName('LAST_NAME').AsString := 'Doe';
120      ByName('PHONE_EXT').AsString := '';
121 <    ByName('HIRE_DATE').AsDateTime := EncodeDate(2015,4,1);;
121 >    ByName('HIRE_DATE').AsDateTime := EncodeDate(2015,4,1);
122      ByName('DEPT_NO').AsString := '600';
123      ByName('JOB_CODE').AsString := 'Eng';
124      ByName('JOB_GRADE').AsInteger := 4;
# Line 107 | Line 144 | begin
144      ByName('EMP_NO').AsInteger := 151;
145      ByName('FIRST_NAME').AsString := 'Major';
146      ByName('PHONE_EXT').AsString := '';
147 <    ByName('HIRE_DATE').AsDateTime := EncodeDate(2015,4,1);;
147 >    ByName('HIRE_DATE').AsString :=  '2015-4-1';
148      ByName('DEPT_NO').AsString := '600';
149      ByName('JOB_CODE').AsString := 'Eng';
150      ByName('JOB_GRADE').AsInteger := 4;
151      ByName('JOB_COUNTRY').AsString := 'England';
152 <    ByName('SALARY').AsFloat := 40000.59;
152 >    ByName('SALARY').AsString := '40000.59';
153    end;
154    Statement.Execute;
155    WriteAffectedRows(Statement);
# Line 159 | Line 196 | begin
196    writeln(OutFile,'Employee Count = ', Attachment.OpenCursorAtStart(Transaction,
197           'Select count(*) from EMPLOYEE',3)[0].AsInteger);
198  
199 +  Statement2 := Attachment.PrepareWithNamedParameters(Transaction,'Update EMPLOYEE Set FIRST_NAME = ''Jayne''''s'' Where EMP_NO = :EMP_NO',3);
200 +  Statement2.GetSQLParams.ByName('EMP_NO').AsInteger := 150;
201 +  writeln(OutFile,'Updating');
202 +  Statement2.Execute;
203 +  WriteAffectedRows(Statement);
204 +
205    writeln(OutFile,'Prepare Query again');
206    writeln(OutFile);
207    Statement.Prepare;
# Line 185 | Line 228 | begin
228    writeln(OutFile,'Same Statement - updated params');
229    Statement.GetSQLParams.ByName('EMP_NO').AsInteger := 9;
230    ReportResults(Statement);
231 +
232 +  writeln(outfile,'Test using Execute Block');
233 +
234 +  Transaction := Attachment.StartTransaction([isc_tpb_write,isc_tpb_nowait,isc_tpb_concurrency],taRollback);
235 +  Statement := Attachment.PrepareWithNamedParameters(Transaction,
236 +    'Execute Block (Hired Timestamp = :Hire_Date, empno integer = :EMP_NO) '+
237 +    'As Begin ' +
238 +    '  Update Employee Set Hire_Date = :Hired Where EMP_NO = :empno; '+
239 +    'End'
240 +    ,3);
241 +  Statement.GetSQLParams.ByName('Hire_Date').AsDateTime := EncodeDate(2015,1,31);;
242 +  Statement.GetSQLParams.ByName('EMP_NO').AsInteger := 8;
243 +  Statement.Execute;
244 +  WriteAffectedRows(Statement);
245 +  Statement := Attachment.PrepareWithNamedParameters(Transaction,'Select * from EMPLOYEE Where EMP_NO = :EMP_NO',3);
246 +  Statement.GetSQLParams.ByName('emp_no').AsInteger := 8;
247 +  ReportResults(Statement);
248 +
249   end;
250  
251 < function TTest4.TestTitle: string;
251 > function TTest4.TestTitle: AnsiString;
252   begin
253    Result := 'Test 4: Update, Insert and Delete Queries';
254   end;
255  
256 < procedure TTest4.RunTest(CharSet: string; SQLDialect: integer);
256 > procedure TTest4.RunTest(CharSet: AnsiString; SQLDialect: integer);
257   var Attachment: IAttachment;
258      DPB: IDPB;
259 +    S: TStrings;
260 +    i: integer;
261   begin
262    DPB := FirebirdAPI.AllocateDPB;
263    DPB.Add(isc_dpb_user_name).setAsString(Owner.GetUserName);
264    DPB.Add(isc_dpb_password).setAsString(Owner.GetPassword);
265    DPB.Add(isc_dpb_lc_ctype).setAsString(CharSet);
266 <  DPB.Add(isc_dpb_set_db_SQL_dialect).setAsByte(SQLDialect);
266 >  DPB.Add(isc_dpb_config).SetAsString('WireCompression=true');
267  
268    writeln(OutFile,'Opening ',Owner.GetEmployeeDatabaseName);
269    Attachment := FirebirdAPI.OpenDatabase(Owner.GetEmployeeDatabaseName,DPB);
270    writeln(OutFile,'Database Open');
271 +  S := TStringList.Create;
272 +  try
273 +    Attachment.getFBVersion(S);
274 +    for i := 0 to S.Count -1 do
275 +      writeln(OutFile,S[i]);
276 +  finally
277 +    S.Free;
278 +  end;
279    DoQuery(Attachment);
280   end;
281  

Comparing ibx/trunk/fbintf/testsuite/Test4.pas (property svn:eol-style):
Revision 45 by tony, Tue Dec 6 10:33:46 2016 UTC vs.
Revision 402 by tony, Mon Aug 1 10:07:24 2022 UTC

# Line 0 | Line 1
1 + native

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines