|
From: <car...@us...> - 2018-08-31 06:59:52
|
Revision: 983
http://sourceforge.net/p/instantobjects/code/983
Author: carlobar
Date: 2018-08-31 06:59:50 +0000 (Fri, 31 Aug 2018)
Log Message:
-----------
Added failure test for date 1974-09-30
Modified Paths:
--------------
trunk/Tests/TestInstantExposer.pas
trunk/Tests/ubmock/src/fpcunit.pas
Modified: trunk/Tests/TestInstantExposer.pas
===================================================================
--- trunk/Tests/TestInstantExposer.pas 2017-04-04 15:28:27 UTC (rev 982)
+++ trunk/Tests/TestInstantExposer.pas 2018-08-31 06:59:50 UTC (rev 983)
@@ -33,11 +33,12 @@
interface
uses
- fpcunit, testregistry, InstantXML, InstantPresentation;
+ fpcunit, testregistry, InstantXML, InstantPresentation, DB;
type
TTestExposer = class(TTestCase)
private
+ procedure AssignNameField(const Exp: TDataSet);
protected
FConn: TInstantXMLConnector;
FAcc: TXMLFilesAccessor;
@@ -46,6 +47,7 @@
procedure TearDown; override;
published
procedure TestStoreAndRetrieveContact;
+ procedure TestStoreAndRetrievePerson;
procedure TestStoreAndRetrievePicture;
procedure TestStoreAndRetrieveContactPhones;
// procedure TestOrderBy;
@@ -55,8 +57,19 @@
implementation
uses
- SysUtils, Classes, ShellAPI, InstantPersistence, TestModel, DB, Graphics;
+ SysUtils, Classes, ShellAPI, InstantPersistence, TestModel, Graphics;
+const
+ DEF_NAME = 'AName';
+ DEF_NAME_UNICODE = '网站导航';
+ DEF_CITY = 'Milan (€)';
+ ADDRESS_STREET = 'Street';
+ ADDRESS_STREET_UNICODE = '链接';
+ DEF_HOME = 'Home';
+ DEF_OFFICE = 'Office';
+ DEF_NUM_HOME = '012 12345678';
+ DEF_NUM_OFFICE = '012-234-56781';
+
{ TTestXMLBroker }
procedure TTestExposer.SetUp;
@@ -107,17 +120,9 @@
end;
procedure TTestExposer.TestStoreAndRetrieveContact;
-const
- DEF_NAME = 'AName';
- DEF_NAME_UNICODE = '网站导航';
- DEF_CITY = 'Milan (€)';
- ADDRESS_STREET = 'Street';
- ADDRESS_STREET_UNICODE = '链接';
var
c: TContact;
old_id: string;
- t: TPhone;
- DataSetField: TDataSetField;
Field: TField;
begin
FExp.ObjectClass := TContact;
@@ -125,20 +130,13 @@
try
FExp.Subject := c;
FExp.Edit;
- Field := FExp.FieldByName('Name');
- if not FConn.UseUnicode then
- begin
- Field.Value := DEF_NAME;
- AssertEquals(DEF_NAME, c.Name);
- end
- else
- begin
- Field.Value := DEF_NAME_UNICODE;
- AssertEquals(DEF_NAME_UNICODE, c.Name);
- end;
+ //Test Name (Unicode)
+ AssignNameField(FExp);
+ //Test Address.City (Unicode)
Field := FExp.FieldByName('Address.City');
Field.Value := DEF_CITY;
AssertEquals(DEF_CITY, c.Address.City);
+ //Test Address.Street (Unicode)
Field := FExp.FieldByName('Address.Street');
if not FConn.UseUnicode then
begin
@@ -150,6 +148,7 @@
Field.Value := ADDRESS_STREET_UNICODE;
AssertEquals(ADDRESS_STREET_UNICODE, c.Address.Street);
end;
+
FExp.Post;
if not FConn.UseUnicode then
begin
@@ -190,12 +189,25 @@
end;
end;
+procedure TTestExposer.AssignNameField(const Exp: TDataSet);
+var
+ Field: TField;
+begin
+ Field := FExp.FieldByName('Name');
+ if not FConn.UseUnicode then
+ begin
+ Field.Value := DEF_NAME;
+ AssertEquals(DEF_NAME, Field.Value);
+ end
+ else
+ begin
+ Field.Value := DEF_NAME_UNICODE;
+ AssertEquals(DEF_NAME_UNICODE, Field.Value);
+ end;
+end;
+
procedure TTestExposer.FieldSetValue;
-const
- DEF_NAME = 'AName';
- DEF_NAME_UNICODE = '链接';
var
- Field: TField;
c: TContact;
begin
FExp.ObjectClass := TContact;
@@ -203,17 +215,8 @@
try
FExp.Subject := c;
FExp.Edit;
- Field := FExp.FieldByName('Name');
- if not FConn.UseUnicode then
- begin
- Field.Value := DEF_NAME;
- AssertEquals(DEF_NAME, Field.Value);
- end
- else
- begin
- Field.Value := DEF_NAME_UNICODE;
- AssertEquals(DEF_NAME_UNICODE, Field.Value);
- end;
+ //Test Name (Unicode)
+ AssignNameField(FExp);
finally
FreeAndNil(c);
end;
@@ -220,19 +223,10 @@
end;
procedure TTestExposer.TestStoreAndRetrieveContactPhones;
-const
- DEF_NAME = 'AName';
- DEF_NAME_UNICODE = '链接';
- DEF_HOME = 'Home';
- DEF_OFFICE = 'Office';
- DEF_NUM_HOME = '012 12345678';
- DEF_NUM_OFFICE = '012-234-56781';
var
c: TContact;
old_id: string;
- t: TPhone;
DataSetField: TDataSetField;
- Field: TField;
begin
FExp.ObjectClass := TContact;
c := TContact.Create;
@@ -239,18 +233,8 @@
try
FExp.Subject := c;
FExp.Edit;
- Field := FExp.FieldByName('Name');
- if not FConn.UseUnicode then
- begin
- Field.Value := DEF_NAME;
- AssertEquals(DEF_NAME, c.Name);
- end
- else
- begin
- Field.Value := DEF_NAME_UNICODE;
- AssertEquals(DEF_NAME_UNICODE, c.Name);
- end;
- Field := FExp.FieldByName('Address.City');
+ //Test Name (Unicode)
+ AssignNameField(FExp);
DataSetField := FExp.FieldByName('Phones') as TDataSetField;
DataSetField.NestedDataSet.Append;
DataSetField.NestedDataSet.FieldByName('Name').Value := DEF_HOME;
@@ -292,14 +276,52 @@
end;
end;
+procedure TTestExposer.TestStoreAndRetrievePerson;
+var
+ p: TPerson;
+ old_id: string;
+ Field: TField;
+ LBirthDate: TDateTime;
+begin
+ FExp.ObjectClass := TPerson;
+ p := TPerson.Create;
+ try
+ FExp.Subject := p;
+ FExp.Edit;
+ //Test Name (Unicode)
+ AssignNameField(FExp);
+ LBirthDate := EncodeDate(1974, 09, 30);
+ //Test BirthDate from 01/01/1900 to Today
+ //LBirthDate := EncodeDate(1900, 01, 01);
+ //while True do
+ begin
+ Field := FExp.FieldByName('BirthDate');
+ Field.Value := LBirthDate;
+ AssertEqualsDateTime(LBirthDate, p.BirthDate);
+ LBirthDate := LBirthDate + 1;
+ //if LBirthDate >= Date then
+ //Break;
+ end;
+ FExp.Post;
+ old_id := p.id;
+ finally
+ FreeAndNil(p);
+ end;
+ AssertNull(p);
+ p := TPerson.Retrieve(old_id);
+ try
+ AssertNotNull('Object not retrieved', p);
+ AssertEquals(old_id, p.Id);
+ AssertEquals(LBirthDate, p.BirthDate);
+ finally
+ FreeAndNil(p);
+ end;
+end;
+
procedure TTestExposer.TestStoreAndRetrievePicture;
-const
- DEF_NAME = 'AName';
- DEF_NAME_UNICODE = '链接';
var
c: TPerson;
Field: TField;
- old_id: string;
BlobContentBefore, BlobContentAfter: string;
begin
FExp.ObjectClass := TPerson;
Modified: trunk/Tests/ubmock/src/fpcunit.pas
===================================================================
--- trunk/Tests/ubmock/src/fpcunit.pas 2017-04-04 15:28:27 UTC (rev 982)
+++ trunk/Tests/ubmock/src/fpcunit.pas 2018-08-31 06:59:50 UTC (rev 983)
@@ -73,6 +73,7 @@
class procedure AssertEquals(Expected, Actual: int64); overload;
class procedure AssertEquals(const AMessage: string; Expected, Actual: currency); overload;
class procedure AssertEquals(Expected, Actual: currency); overload;
+ class procedure AssertEqualsDateTime(Expected, Actual: TDateTime); overload;
class procedure AssertEquals(const AMessage: string; Expected, Actual, Delta: double); overload;
class procedure AssertEquals(Expected, Actual, Delta: double); overload;
class procedure AssertEquals(const AMessage: string; Expected, Actual: boolean); overload;
@@ -425,6 +426,12 @@
AssertEquals('', Expected, Actual);
end;
+class procedure TAssert.AssertEqualsDateTime(Expected, Actual: TDateTime);
+begin
+ if Expected <> Actual then
+ AssertEquals('', DateToStr(Expected), DateToStr(Actual));
+end;
+
class procedure TAssert.AssertEquals(const AMessage: string; Expected, Actual, Delta: double);
begin
AssertTrue(AMessage + ComparisonMsg(FloatToStr(Expected),FloatToStr(Actual)),
|