Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2415 Modified Files: TestMinimalModel.pas TestIO.dpr TestInstantPart.pas TestInstantElement.pas TestInstantComplex.pas TestInstantTableMetadata.pas TestInstantString.pas TestInstantScheme.pas TestModel.pas TestMockConnector.pas TestMockBroker.pas TestIO.dof TestIO.cfg TestIO.mdr TestInstantMetadata.pas TestInstantDateTime.pas TestInstantBoolean.pas TestInstantNumeric.pas TestInstantAttribute.pas TestInstantFloat.pas TestInstantCurrency.pas TestInstantBlob.pas TestInstantInteger.pas TestInstantAttributeMap.pas TestInstantAttributeMetadata.pas TestInstantClasses.pas TestInstantClassMetadata.pas Log Message: Tidied up memory leakage in tests. Index: TestInstantAttributeMap.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantAttributeMap.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantAttributeMap.pas 4 May 2005 05:02:43 -0000 1.1 --- TestInstantAttributeMap.pas 10 Jun 2005 01:25:34 -0000 1.2 *************** *** 84,87 **** --- 84,88 ---- FreeAndNil(FInstantAttributeMap); FreeAndNil(FClassMetadata); + InstantModel.ClassMetadatas.Clear; end; *************** *** 105,113 **** // Add non-unique named item vItem := TInstantAttributeMetadata.Create(nil); ! vItem.Name := 'Item1'; // Existing name ! vReturnValue := FInstantAttributeMap.AddUnique(vItem); ! AssertEquals('AddUnique return value is incorrect!', -1, vReturnValue); ! AssertEquals('AttributeMap count is incorrect!', 3, ! FInstantAttributeMap.Count); // Add unique named item --- 106,117 ---- // Add non-unique named item vItem := TInstantAttributeMetadata.Create(nil); ! try ! vItem.Name := 'Item1'; // Existing name ! vReturnValue := FInstantAttributeMap.AddUnique(vItem); ! AssertEquals('AddUnique', -1, vReturnValue); ! AssertEquals('AttributeMap count', 3, FInstantAttributeMap.Count); ! finally ! vItem.Free; ! end; // Add unique named item *************** *** 115,121 **** vItem.Name := 'NewItem'; // New name vReturnValue := FInstantAttributeMap.AddUnique(vItem); ! AssertEquals('AddUnique return value is incorrect!', 3, vReturnValue); ! AssertEquals('AttributeMap count is incorrect!', 4, ! FInstantAttributeMap.Count); end; --- 119,124 ---- vItem.Name := 'NewItem'; // New name vReturnValue := FInstantAttributeMap.AddUnique(vItem); ! AssertEquals('AddUnique', 3, vReturnValue); ! AssertEquals('AttributeMap count', 4, FInstantAttributeMap.Count); end; *************** *** 242,246 **** --- 245,255 ---- procedure TestTInstantAttributeMaps.TearDown; + var + i: Integer; + j: Integer; begin + for i := 0 to Pred(FInstantAttributeMaps.Count) do + for j := 0 to Pred(FInstantAttributeMaps[i].Count) do + FInstantAttributeMaps[i][j].Free; FreeAndNil(FInstantAttributeMaps); FreeAndNil(FClassMetadata); *************** *** 330,334 **** FInstantAttributeMaps[j].Add(vItem); end; ! AssertEquals(Format('AttributeMap[%d] count is incorrect!', [j]), 3, FInstantAttributeMaps[j].Count); end; --- 339,343 ---- FInstantAttributeMaps[j].Add(vItem); end; ! AssertEquals(Format('AttributeMap[%d] count', [j]), 3, FInstantAttributeMaps[j].Count); end; *************** *** 337,341 **** vReturnValue := FInstantAttributeMaps.FindMap(vAttributeName); AssertNotNull('Map not found!', vReturnValue); ! AssertEquals('Returned name is incorrect!', 'Item2', vReturnValue.Name); end; --- 346,350 ---- vReturnValue := FInstantAttributeMaps.FindMap(vAttributeName); AssertNotNull('Map not found!', vReturnValue); ! AssertEquals('Returned name', 'Item2', vReturnValue.Name); end; Index: TestInstantFloat.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantFloat.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TestInstantFloat.pas 10 May 2005 05:31:08 -0000 1.3 --- TestInstantFloat.pas 10 Jun 2005 01:25:34 -0000 1.4 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence, InstantMock; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence, InstantMock, TestModel; type *************** *** 10,17 **** TestTInstantFloat = class(TTestCase) private - FAttrMetadata: TInstantAttributeMetadata; FConn: TInstantMockConnector; FInstantFloat: TInstantFloat; ! FOwner: TInstantObject; public procedure SetUp; override; --- 10,16 ---- TestTInstantFloat = class(TTestCase) private FConn: TInstantMockConnector; FInstantFloat: TInstantFloat; ! FOwner: TPerson; public procedure SetUp; override; *************** *** 36,44 **** FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! FOwner := TInstantObject.Create(FConn); ! FAttrMetadata := TInstantAttributeMetadata.Create(nil); ! FAttrMetadata.AttributeClass := TInstantFloat; ! FAttrMetadata.Name := 'AttrMetadataName'; ! FInstantFloat := TInstantFloat.Create(FOwner, FAttrMetadata); FInstantFloat.Value := 1.3; end; --- 35,45 ---- FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FOwner := TPerson.Create(FConn); ! FInstantFloat := FOwner._AL_hours; FInstantFloat.Value := 1.3; end; *************** *** 46,52 **** procedure TestTInstantFloat.TearDown; begin ! FreeAndNil(FInstantFloat); ! FreeAndNil(FAttrMetadata); FreeAndNil(FOwner); FreeAndNil(FConn); end; --- 47,53 ---- procedure TestTInstantFloat.TearDown; begin ! FInstantFloat := nil; FreeAndNil(FOwner); + InstantModel.ClassMetadatas.Clear; FreeAndNil(FConn); end; Index: TestInstantAttribute.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantAttribute.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantAttribute.pas 10 May 2005 05:31:08 -0000 1.2 --- TestInstantAttribute.pas 10 Jun 2005 01:25:34 -0000 1.3 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence, TestModel, InstantMock; type *************** *** 10,15 **** TestTInstantAttribute = class(TTestCase) private ! FAttrMetadata: TInstantAttributeMetadata; ! FInstantAttribute: TInstantAttribute; public procedure SetUp; override; --- 10,16 ---- TestTInstantAttribute = class(TTestCase) private ! FConn: TInstantMockConnector; ! FInstantAttribute: TInstantString; ! FOwner: TContact; public procedure SetUp; override; *************** *** 32,46 **** procedure TestTInstantAttribute.SetUp; begin ! FAttrMetadata := TInstantAttributeMetadata.Create(nil); ! FAttrMetadata.AttributeClass := TInstantString; ! FAttrMetadata.Name := 'AttrMetadataName'; ! // TInstantAttribute is abstract so use TInstantString ! FInstantAttribute := TInstantString.Create(nil, FAttrMetadata); end; procedure TestTInstantAttribute.TearDown; begin ! FreeAndNil(FInstantAttribute); ! FreeAndNil(FAttrMetadata); end; --- 33,53 ---- procedure TestTInstantAttribute.SetUp; begin ! FConn := TInstantMockConnector.Create(nil); ! FConn.BrokerClass := TInstantMockBroker; ! ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FOwner := TContact.Create(FConn); ! FInstantAttribute := FOwner._Name; end; procedure TestTInstantAttribute.TearDown; begin ! FInstantAttribute := nil; ! FreeAndNil(FOwner); ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FConn); end; *************** *** 91,110 **** procedure TestTInstantAttribute.TestIsIndexed; begin - AssertFalse(FInstantAttribute.IsIndexed); - - FInstantAttribute.Metadata.IsIndexed := True; AssertTrue(FInstantAttribute.IsIndexed); end; procedure TestTInstantAttribute.TestIsMandatory; begin ! AssertFalse(FInstantAttribute.IsMandatory); - FInstantAttribute.Metadata.IsIndexed := True; - AssertTrue(FInstantAttribute.IsMandatory); FInstantAttribute.Metadata.IsRequired := True; ! AssertTrue(FInstantAttribute.IsMandatory); ! FInstantAttribute.Metadata.IsIndexed := False; ! AssertTrue(FInstantAttribute.IsMandatory); end; --- 98,117 ---- procedure TestTInstantAttribute.TestIsIndexed; begin AssertTrue(FInstantAttribute.IsIndexed); + + FInstantAttribute.Metadata.IsIndexed := False; + AssertFalse(FInstantAttribute.IsIndexed); end; procedure TestTInstantAttribute.TestIsMandatory; begin ! AssertTrue('1', FInstantAttribute.IsMandatory); ! FInstantAttribute.Metadata.IsIndexed := False; ! AssertFalse('2', FInstantAttribute.IsMandatory); FInstantAttribute.Metadata.IsRequired := True; ! AssertTrue('3', FInstantAttribute.IsMandatory); ! FInstantAttribute.Metadata.IsRequired := False; ! AssertFalse('4', FInstantAttribute.IsMandatory); end; *************** *** 118,132 **** procedure TestTInstantAttribute.TestMetadata; begin AssertNotNull(FInstantAttribute.Metadata); ! AssertEquals('AttrMetadataName', FInstantAttribute.Metadata.Name); FInstantAttribute.Metadata := nil; AssertNull(FInstantAttribute.Metadata); FInstantAttribute.Reset; ! FInstantAttribute.Metadata := FAttrMetadata; AssertNotNull(FInstantAttribute.Metadata); ! AssertEquals('AttrMetadataName', FInstantAttribute.Metadata.Name); end; --- 125,142 ---- procedure TestTInstantAttribute.TestMetadata; + var + vAttrMetadata: TInstantAttributeMetadata; begin AssertNotNull(FInstantAttribute.Metadata); ! AssertEquals('Name', FInstantAttribute.Metadata.Name); + vAttrMetadata := FInstantAttribute.Metadata; FInstantAttribute.Metadata := nil; AssertNull(FInstantAttribute.Metadata); FInstantAttribute.Reset; ! FInstantAttribute.Metadata := vAttrMetadata; AssertNotNull(FInstantAttribute.Metadata); ! AssertEquals('Name', FInstantAttribute.Metadata.Name); end; Index: TestMockBroker.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestMockBroker.pas,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** TestMockBroker.pas 3 May 2005 04:52:37 -0000 1.7 --- TestMockBroker.pas 10 Jun 2005 01:25:34 -0000 1.8 *************** *** 10,14 **** TTestMockBroker = class(TTestCase) private - FClassCount: Integer; protected FConn: TInstantMockConnector; --- 10,13 ---- *************** *** 26,30 **** TTestMockRelationalBroker = class(TTestCase) private - FClassCount: Integer; protected FConn: TInstantMockConnector; --- 25,28 ---- *************** *** 43,59 **** vReturnValue: TInstantClassMetadata; begin ! if FClassCount > 0 then ! begin ! // This ensures that the exported file is synchronised ! // with the current model resource file. ! InstantModel.SaveToFile(ChangeFileExt(ParamStr(0), '.mdx')); ! InstantModel.ClassMetadatas.Clear; ! end; InstantModel.LoadFromFile(ChangeFileExt(ParamStr(0), '.mdx')); vReturnValue := InstantModel.ClassMetadatas.Find('TCategory'); AssertNotNull(vReturnValue); - if FClassCount = 0 then - FClassCount := InstantModel.ClassMetadatas.Count; InstantModel.ClassMetadatas.Remove(vReturnValue); --- 41,54 ---- vReturnValue: TInstantClassMetadata; begin ! AssertTrue('ClassMetadatas.Count', InstantModel.ClassMetadatas.Count > 0); ! ! // This ensures that the exported file is synchronised ! // with the current model resource file. ! InstantModel.SaveToFile(ChangeFileExt(ParamStr(0), '.mdx')); ! InstantModel.ClassMetadatas.Clear; InstantModel.LoadFromFile(ChangeFileExt(ParamStr(0), '.mdx')); vReturnValue := InstantModel.ClassMetadatas.Find('TCategory'); AssertNotNull(vReturnValue); InstantModel.ClassMetadatas.Remove(vReturnValue); *************** *** 72,79 **** vReturnValue: TInstantClassMetadata; begin - if FClassCount > 0 then - InstantModel.ClassMetadatas.Clear; - - InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); vReturnValue := InstantModel.ClassMetadatas.Find('TCategory'); AssertNotNull(vReturnValue); --- 67,70 ---- *************** *** 94,103 **** brok: TInstantMockBroker; begin ! brok := (Fconn.Broker as TInstantMockBroker); AssertNotNull(brok); AssertEquals(brok.ClassType, TInstantMockBroker); brok.MockManager.StartSetUp; brok.MockManager.EndSetUp; ! Fconn.BuildDatabase(InstantModel); brok.MockManager.Verify; end; --- 85,94 ---- brok: TInstantMockBroker; begin ! brok := (FConn.Broker as TInstantMockBroker); AssertNotNull(brok); AssertEquals(brok.ClassType, TInstantMockBroker); brok.MockManager.StartSetUp; brok.MockManager.EndSetUp; ! FConn.BuildDatabase(InstantModel); brok.MockManager.Verify; end; *************** *** 107,114 **** brok: TInstantMockBroker; begin ! brok := Fconn.Broker as TInstantMockBroker; brok.MockManager.StartSetUp; brok.MockManager.EndSetUp; ! Fconn.BuildDatabase(InstantModel); brok.MockManager.Verify; end; --- 98,105 ---- brok: TInstantMockBroker; begin ! brok := FConn.Broker as TInstantMockBroker; brok.MockManager.StartSetUp; brok.MockManager.EndSetUp; ! FConn.BuildDatabase(InstantModel); brok.MockManager.Verify; end; *************** *** 120,128 **** brok: TInstantMockBroker; begin ! AssertTrue(FClassCount > 0); ! ! Fconn.IsDefault := True; ! Fconn.StartTransaction; ! brok := Fconn.Broker as TInstantMockBroker; brok.MockManager.StartSetUp; a := TAddress.Create; --- 111,117 ---- brok: TInstantMockBroker; begin ! FConn.IsDefault := True; ! FConn.StartTransaction; ! brok := FConn.Broker as TInstantMockBroker; brok.MockManager.StartSetUp; a := TAddress.Create; *************** *** 138,142 **** brok.MockManager.AddExpectation('InternalStoreObject ' + old_id); brok.MockManager.Verify; ! Fconn.CommitTransaction; brok.MockManager.StartSetUp; a := TAddress.Retrieve(old_id); --- 127,131 ---- brok.MockManager.AddExpectation('InternalStoreObject ' + old_id); brok.MockManager.Verify; ! FConn.CommitTransaction; brok.MockManager.StartSetUp; a := TAddress.Retrieve(old_id); *************** *** 153,170 **** procedure TTestMockBroker.SetUp; begin - inherited; FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! if FClassCount > 0 then InstantModel.ClassMetadatas.Clear; InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); - FClassCount := InstantModel.ClassMetadatas.Count; end; procedure TTestMockBroker.TearDown; begin ! FConn.Free; ! inherited; end; --- 142,157 ---- procedure TTestMockBroker.SetUp; begin FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! if InstantModel.ClassMetadatas.Count > 0 then InstantModel.ClassMetadatas.Clear; InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); end; procedure TTestMockBroker.TearDown; begin ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FConn); end; *************** *** 173,190 **** procedure TTestMockRelationalBroker.SetUp; begin - inherited; FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockCRBroker; ! if FClassCount > 0 then InstantModel.ClassMetadatas.Clear; InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); - FClassCount := InstantModel.ClassMetadatas.Count; end; procedure TTestMockRelationalBroker.TearDown; begin ! inherited; ! FConn.Free; end; --- 160,175 ---- procedure TTestMockRelationalBroker.SetUp; begin FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockCRBroker; ! if InstantModel.ClassMetadatas.Count > 0 then InstantModel.ClassMetadatas.Clear; InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); end; procedure TTestMockRelationalBroker.TearDown; begin ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FConn); end; *************** *** 193,197 **** brok: TInstantMockCRBroker; begin ! brok := (Fconn.Broker as TInstantMockCRBroker); AssertNotNull(brok); AssertEquals(brok.ClassType, TInstantMockCRBroker); --- 178,182 ---- brok: TInstantMockCRBroker; begin ! brok := (FConn.Broker as TInstantMockCRBroker); AssertNotNull(brok); AssertEquals(brok.ClassType, TInstantMockCRBroker); *************** *** 207,213 **** t: TPhone; begin ! AssertTrue(FClassCount > 0); ! ! Fconn.IsDefault := True; c := TContact.Create; try --- 192,196 ---- t: TPhone; begin ! FConn.IsDefault := True; c := TContact.Create; try *************** *** 231,238 **** t: TPhone; begin ! AssertTrue(FClassCount > 0); ! ! Fconn.IsDefault := True; ! brok := Fconn.Broker as TInstantMockCRBroker; brok.MockManager.StartSetUp; c := TContact.Create; --- 214,219 ---- t: TPhone; begin ! FConn.IsDefault := True; ! brok := FConn.Broker as TInstantMockCRBroker; brok.MockManager.StartSetUp; c := TContact.Create; Index: TestInstantTableMetadata.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantTableMetadata.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantTableMetadata.pas 10 May 2005 05:31:08 -0000 1.2 --- TestInstantTableMetadata.pas 10 Jun 2005 01:25:33 -0000 1.3 *************** *** 10,14 **** TestTInstantTableMetadata = class(TTestCase) private - FCollection: TInstantTableMetadatas; FInstantTableMetadata: TInstantTableMetadata; FOwner: TInstantScheme; --- 10,13 ---- *************** *** 37,52 **** uses SysUtils, testregistry; procedure TestTInstantTableMetadata.SetUp; begin ! FOwner := TInstantScheme.Create(nil); ! FCollection := TInstantTableMetadatas.Create(FOwner); ! FInstantTableMetadata := TInstantTableMetadata.Create(FCollection); end; procedure TestTInstantTableMetadata.TearDown; begin ! FInstantTableMetadata.Free; ! FInstantTableMetadata := nil; ! FreeAndNil(FCollection); FreeAndNil(FOwner); end; --- 36,54 ---- uses SysUtils, testregistry; + { TestTInstantTableMetadata } + procedure TestTInstantTableMetadata.SetUp; begin ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FOwner := TInstantRelationalScheme.Create(InstantModel); ! FInstantTableMetadata := FOwner.FindTableMetadata('Address'); end; procedure TestTInstantTableMetadata.TearDown; begin ! InstantModel.ClassMetadatas.Clear; FreeAndNil(FOwner); end; *************** *** 68,71 **** --- 70,75 ---- end; + { TestTInstantTableMetadatas } + procedure TestTInstantTableMetadatas.SetUp; begin *************** *** 75,80 **** procedure TestTInstantTableMetadatas.TearDown; begin ! FInstantTableMetadatas.Free; ! FInstantTableMetadatas := nil; end; --- 79,83 ---- procedure TestTInstantTableMetadatas.TearDown; begin ! FreeAndNil(FInstantTableMetadatas); end; *************** *** 83,86 **** --- 86,90 ---- vReturnValue: TInstantTableMetadata; begin + AssertEquals(0, FInstantTableMetadatas.Count); vReturnValue := FInstantTableMetadatas.Add; AssertNotNull(vReturnValue); Index: TestInstantDateTime.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantDateTime.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TestInstantDateTime.pas 10 May 2005 05:31:08 -0000 1.3 --- TestInstantDateTime.pas 10 Jun 2005 01:25:34 -0000 1.4 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence, InstantMock; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence, InstantMock, TestModel; type *************** *** 10,17 **** TestTInstantDateTime = class(TTestCase) private - FAttrMetadata: TInstantAttributeMetadata; FConn: TInstantMockConnector; FInstantDateTime: TInstantDateTime; ! FOwner: TInstantObject; public procedure SetUp; override; --- 10,16 ---- TestTInstantDateTime = class(TTestCase) private FConn: TInstantMockConnector; FInstantDateTime: TInstantDateTime; ! FOwner: TPerson; public procedure SetUp; override; *************** *** 41,49 **** FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! FOwner := TInstantObject.Create(FConn); ! FAttrMetadata := TInstantAttributeMetadata.Create(nil); ! FAttrMetadata.AttributeClass := TInstantDateTime; ! FAttrMetadata.Name := 'AttrMetadataName'; ! FInstantDateTime := TInstantDateTime.Create(FOwner, FAttrMetadata); FInstantDateTime.Value := 100.5; end; --- 40,50 ---- FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FOwner := TPerson.Create(FConn); ! FInstantDateTime := FOwner._BirthDate; FInstantDateTime.Value := 100.5; end; *************** *** 51,57 **** procedure TestTInstantDateTime.TearDown; begin ! FreeAndNil(FInstantDateTime); ! FreeAndNil(FAttrMetadata); FreeAndNil(FOwner); FreeAndNil(FConn); end; --- 52,58 ---- procedure TestTInstantDateTime.TearDown; begin ! FInstantDateTime := nil; FreeAndNil(FOwner); + InstantModel.ClassMetadatas.Clear; FreeAndNil(FConn); end; *************** *** 145,157 **** procedure TestTInstantDateTime.TestAsObject; begin try ! FInstantDateTime.AsObject := TInstantObject.Create(FConn); ! Fail('Exception was not thrown for Set AsObject!'); // should never get here ! except ! on E: EInstantAccessError do ; // do nothing as this is expected ! else ! raise; end; try FInstantDateTime.AsObject; --- 146,166 ---- procedure TestTInstantDateTime.TestAsObject; + var + vObj: TInstantObject; begin + vObj := TInstantObject.Create(FConn); try ! try ! FInstantDateTime.AsObject := vObj; ! Fail('Exception was not thrown for Set AsObject!'); // should never get here ! except ! on E: EInstantAccessError do ; // do nothing as this is expected ! else ! raise; ! end; ! finally ! vObj.Free; end; + try FInstantDateTime.AsObject; Index: TestInstantCurrency.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantCurrency.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TestInstantCurrency.pas 10 May 2005 05:31:08 -0000 1.3 --- TestInstantCurrency.pas 10 Jun 2005 01:25:34 -0000 1.4 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence, InstantMock, TestModel; type *************** *** 10,15 **** TestTInstantCurrency = class(TTestCase) private ! FAttrMetadata: TInstantAttributeMetadata; FInstantCurrency: TInstantCurrency; public procedure SetUp; override; --- 10,16 ---- TestTInstantCurrency = class(TTestCase) private ! FConn: TInstantMockConnector; FInstantCurrency: TInstantCurrency; + FOwner: TPerson; public procedure SetUp; override; *************** *** 34,41 **** vCurr: Currency; begin ! FAttrMetadata := TInstantAttributeMetadata.Create(nil); ! FAttrMetadata.AttributeClass := TInstantCurrency; ! FAttrMetadata.Name := 'AttrMetadataName'; ! FInstantCurrency := TInstantCurrency.Create(nil, FAttrMetadata); vCurr := 1.3; FInstantCurrency.Value := vCurr; --- 35,47 ---- vCurr: Currency; begin ! FConn := TInstantMockConnector.Create(nil); ! FConn.BrokerClass := TInstantMockBroker; ! ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FOwner := TPerson.Create(FConn); ! FInstantCurrency := FOwner._Salary; vCurr := 1.3; FInstantCurrency.Value := vCurr; *************** *** 44,49 **** procedure TestTInstantCurrency.TearDown; begin ! FreeAndNil(FInstantCurrency); ! FreeAndNil(FAttrMetadata); end; --- 50,57 ---- procedure TestTInstantCurrency.TearDown; begin ! FInstantCurrency := nil; ! FreeAndNil(FOwner); ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FConn); end; Index: TestInstantNumeric.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantNumeric.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TestInstantNumeric.pas 10 May 2005 05:31:08 -0000 1.3 --- TestInstantNumeric.pas 10 Jun 2005 01:25:34 -0000 1.4 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence, InstantMock; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence, InstantMock, TestModel; type *************** *** 10,17 **** TestTInstantNumeric = class(TTestCase) private - FAttrMetadata: TInstantAttributeMetadata; FConn: TInstantMockConnector; ! FInstantNumeric: TInstantNumeric; ! FOwner: TInstantObject; public procedure SetUp; override; --- 10,16 ---- TestTInstantNumeric = class(TTestCase) private FConn: TInstantMockConnector; ! FInstantNumeric: TInstantInteger; ! FOwner: TCompany; public procedure SetUp; override; *************** *** 33,49 **** FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! FOwner := TInstantObject.Create(FConn); ! FAttrMetadata := TInstantAttributeMetadata.Create(nil); ! FAttrMetadata.AttributeClass := TInstantInteger; ! FAttrMetadata.Name := 'AttrMetadataName'; ! // TInstantNumeric is abstract so use TInstantInteger ! FInstantNumeric := TInstantInteger.Create(FOwner, FAttrMetadata); end; procedure TestTInstantNumeric.TearDown; begin ! FreeAndNil(FInstantNumeric); ! FreeAndNil(FAttrMetadata); FreeAndNil(FOwner); FreeAndNil(FConn); end; --- 32,49 ---- FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FOwner := TCompany.Create(FConn); ! FInstantNumeric := FOwner._NoOfBranches; end; procedure TestTInstantNumeric.TearDown; begin ! FInstantNumeric := nil; FreeAndNil(FOwner); + InstantModel.ClassMetadatas.Clear; FreeAndNil(FConn); end; *************** *** 68,80 **** procedure TestTInstantNumeric.TestAsObject; begin try ! FInstantNumeric.AsObject := TInstantObject.Create(FConn); ! Fail('Exception was not thrown for Set AsObject!'); // should never get here ! except ! on E: EInstantAccessError do ; // do nothing as this is expected ! else ! raise; end; try FInstantNumeric.AsObject; --- 68,88 ---- procedure TestTInstantNumeric.TestAsObject; + var + vObj: TInstantObject; begin + vObj := TInstantObject.Create(FConn); try ! try ! FInstantNumeric.AsObject := vObj; ! Fail('Exception was not thrown for Set AsObject!'); // should never get here ! except ! on E: EInstantAccessError do ; // do nothing as this is expected ! else ! raise; ! end; ! finally ! vObj.Free; end; + try FInstantNumeric.AsObject; Index: TestInstantScheme.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantScheme.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantScheme.pas 10 May 2005 05:31:08 -0000 1.2 --- TestInstantScheme.pas 10 Jun 2005 01:25:34 -0000 1.3 *************** *** 38,43 **** procedure TestTInstantRelationalScheme.TearDown; begin ! FInstantRelationalScheme.Free; ! FInstantRelationalScheme := nil; end; --- 38,43 ---- procedure TestTInstantRelationalScheme.TearDown; begin ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FInstantRelationalScheme); end; Index: TestIO.cfg =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestIO.cfg,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestIO.cfg 3 May 2005 04:52:37 -0000 1.2 --- TestIO.cfg 10 Jun 2005 01:25:34 -0000 1.3 *************** *** 39,43 **** -I"D:\L\ubmock\src" -R"D:\L\ubmock\src" - -DCURR_TESTS -w-UNSAFE_TYPE -w-UNSAFE_CODE --- 39,42 ---- Index: TestIO.mdr =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestIO.mdr,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 Binary files /tmp/cvsvYdgJO and /tmp/cvstQH1kw differ Index: TestInstantAttributeMetadata.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantAttributeMetadata.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantAttributeMetadata.pas 3 May 2005 04:52:37 -0000 1.1 --- TestInstantAttributeMetadata.pas 10 Jun 2005 01:25:35 -0000 1.2 *************** *** 210,217 **** procedure TestTInstantAttributeMetadata.TearDown; begin ! FInstantAttributeMetadata.Free; ! FInstantAttributeMetadata := nil; ! ! FConn.Free; end; --- 210,216 ---- procedure TestTInstantAttributeMetadata.TearDown; begin ! FreeAndNil(FInstantAttributeMetadata); ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FConn); end; *************** *** 291,301 **** begin vObject := TInstantObject.Create(FConn); ! vReturnValue := FInstantAttributeMetadata.CreateAttribute(vObject); ! AssertNotNull('InstantAttribute is nil!', vReturnValue); ! AssertEquals('InstantAttribute value incorrect!', 'Default', ! vReturnValue.AsString); ! AssertNotNull('InstantAttribute metadata is nil!', vReturnValue.Metadata); ! AssertEquals('InstantAttribute classname incorrect!', 'TInstantString', ! vReturnValue.ClassName); end; --- 290,303 ---- begin vObject := TInstantObject.Create(FConn); ! try ! vReturnValue := FInstantAttributeMetadata.CreateAttribute(vObject); ! AssertNotNull('vReturnValue', vReturnValue); ! AssertEquals('AsString', 'Default', vReturnValue.AsString); ! AssertNotNull('Metadata ', vReturnValue.Metadata); ! AssertEquals('Classname', 'TInstantString', vReturnValue.ClassName); ! vReturnValue.Free; ! finally ! vObject.Free; ! end; end; *************** *** 310,313 **** --- 312,317 ---- end; + { TestTInstantAttributeMetadatas } + procedure TestTInstantAttributeMetadatas.SetUp; begin *************** *** 319,325 **** procedure TestTInstantAttributeMetadatas.TearDown; begin ! FInstantAttributeMetadatas.Free; ! FInstantAttributeMetadatas := nil; ! FOwner.Free; end; --- 323,328 ---- procedure TestTInstantAttributeMetadatas.TearDown; begin ! FreeAndNil(FInstantAttributeMetadatas); ! FreeAndNil(FOwner); end; Index: TestMinimalModel.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestMinimalModel.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestMinimalModel.pas 3 May 2005 04:52:37 -0000 1.2 --- TestMinimalModel.pas 10 Jun 2005 01:25:32 -0000 1.3 *************** *** 37,48 **** procedure TTestMinimalModel.SetUp; begin - inherited; FConn := TInstantMockConnector.Create(nil); end; procedure TTestMinimalModel.TearDown; begin FConn.Free; - inherited; end; --- 37,51 ---- procedure TTestMinimalModel.SetUp; begin FConn := TInstantMockConnector.Create(nil); + FConn.BrokerClass := TInstantMockBroker; + + if InstantModel.ClassMetadatas.Count > 0 then + InstantModel.ClassMetadatas.Clear; end; procedure TTestMinimalModel.TearDown; begin + InstantModel.ClassMetadatas.Clear; FConn.Free; end; *************** *** 135,147 **** procedure TTestMinimalModel.TestStoreSimpleClass; var - conn: TInstantMockConnector; i: integer; SimpleClass : TSimpleClass; begin CreateMinimalModel; ! conn := TInstantMockConnector.Create(nil); ! conn.IsDefault := True; ! conn.BrokerClass := TInstantMockBroker; ! conn.Connect; for i := 0 to 100 do begin --- 138,147 ---- procedure TTestMinimalModel.TestStoreSimpleClass; var i: integer; SimpleClass : TSimpleClass; begin CreateMinimalModel; ! FConn.IsDefault := True; ! FConn.Connect; for i := 0 to 100 do begin *************** *** 159,163 **** procedure TTestMinimalModel.TestRetrieveSimpleClass; var - conn: TInstantMockConnector; i: integer; SimpleClass : TSimpleClass; --- 159,162 ---- *************** *** 165,172 **** begin CreateMinimalModel; ! conn := TInstantMockConnector.Create(nil); ! conn.IsDefault := True; ! conn.BrokerClass := TInstantMockBroker; ! conn.Connect; Id := ''; for i := 0 to 100 do --- 164,169 ---- begin CreateMinimalModel; ! FConn.IsDefault := True; ! FConn.Connect; Id := ''; for i := 0 to 100 do Index: TestMockConnector.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestMockConnector.pas,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TestMockConnector.pas 3 May 2005 04:52:37 -0000 1.5 --- TestMockConnector.pas 10 Jun 2005 01:25:34 -0000 1.6 *************** *** 12,15 **** --- 12,20 ---- type TTestMockConnector = class(TTestCase) + private + FConn: TInstantMockConnector; + public + procedure SetUp; override; + procedure TearDown; override; published procedure TestBuildDatabase; *************** *** 21,110 **** implementation ! { TTestMockConnector } ! ! procedure TTestMockConnector.TestBuildDatabase; ! var ! conn: TInstantMockConnector; begin if InstantModel.ClassMetadatas.Count > 0 then InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0),'.mdr')); ! conn := TInstantMockConnector.Create(nil); ! try ! AssertNotNull(conn); ! conn.MockManager.AddExpectation('InternalConnect'); ! conn.MockManager.AddExpectation('InternalCreateScheme'); ! conn.MockManager.AddExpectation('CreateBroker TInstantMockBroker'); ! conn.MockManager.AddExpectation('InternalDisconnect'); ! conn.MockManager.EndSetUp; ! AssertEquals(4, conn.MockManager.UncoveredExpectations); ! conn.BrokerClass := TInstantMockBroker; ! conn.BuildDatabase(InstantModel); ! conn.MockManager.Verify; ! finally ! conn.Free; ! end; end; procedure TTestMockConnector.TestConnectDisconnect; - var - conn: TInstantMockConnector; begin ! conn := TInstantMockConnector.Create(nil); ! try ! conn.BrokerClass := TInstantMockBroker; ! conn.BuildDatabase(InstantModel); ! conn.MockManager.StartSetUp; ! conn.MockManager.AddExpectation('InternalConnect'); ! conn.MockManager.AddExpectation('InternalDisconnect'); ! conn.MockManager.EndSetUp; ! conn.Connect; ! conn.Disconnect; ! conn.MockManager.Verify; ! finally ! conn.Free; ! end; end; procedure TTestMockConnector.TestTransaction; - var - conn: TInstantMockConnector; begin ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0),'.mdr')); ! conn := TInstantMockConnector.Create(nil); ! try ! conn.BrokerClass := TInstantMockBroker; ! conn.BuildDatabase(InstantModel); ! conn.Connect; ! conn.MockManager.StartSetUp; //reset expectations ! conn.MockManager.AddExpectation('InternalStartTransaction'); ! conn.MockManager.AddExpectation('InternalCommitTransaction'); ! conn.MockManager.EndSetUp; ! conn.StartTransaction; ! AssertTrue(conn.InTransaction); ! conn.CommitTransaction; ! AssertFalse(conn.InTransaction); ! conn.MockManager.Verify; ! conn.Disconnect; ! finally ! conn.Free; ! end; end; procedure TTestMockConnector.TestDefault; - var - conn: TInstantMockConnector; begin ! conn := TInstantMockConnector.Create(nil); ! try ! conn.IsDefault := True; ! AssertSame(InstantDefaultConnector, conn); ! finally ! conn.Free; ! end; end; --- 26,94 ---- implementation ! procedure TTestMockConnector.SetUp; begin + FConn := TInstantMockConnector.Create(nil); + FConn.BrokerClass := TInstantMockBroker; + if InstantModel.ClassMetadatas.Count > 0 then InstantModel.ClassMetadatas.Clear; + InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); + end; ! procedure TTestMockConnector.TearDown; ! begin ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FConn); ! end; ! ! { TTestMockConnector } ! ! procedure TTestMockConnector.TestBuildDatabase; ! begin ! AssertNotNull(FConn); ! FConn.MockManager.AddExpectation('InternalConnect'); ! FConn.MockManager.AddExpectation('InternalCreateScheme'); ! FConn.MockManager.AddExpectation('CreateBroker TInstantMockBroker'); ! FConn.MockManager.AddExpectation('InternalDisconnect'); ! FConn.MockManager.EndSetUp; ! AssertEquals(4, FConn.MockManager.UncoveredExpectations); ! FConn.BrokerClass := TInstantMockBroker; ! FConn.BuildDatabase(InstantModel); ! FConn.MockManager.Verify; end; procedure TTestMockConnector.TestConnectDisconnect; begin ! FConn.BuildDatabase(InstantModel); ! FConn.MockManager.StartSetUp; ! FConn.MockManager.AddExpectation('InternalConnect'); ! FConn.MockManager.AddExpectation('InternalDisconnect'); ! FConn.MockManager.EndSetUp; ! FConn.Connect; ! FConn.Disconnect; ! FConn.MockManager.Verify; end; procedure TTestMockConnector.TestTransaction; begin ! FConn.BrokerClass := TInstantMockBroker; ! FConn.BuildDatabase(InstantModel); ! FConn.Connect; ! FConn.MockManager.StartSetUp; //reset expectations ! FConn.MockManager.AddExpectation('InternalStartTransaction'); ! FConn.MockManager.AddExpectation('InternalCommitTransaction'); ! FConn.MockManager.EndSetUp; ! FConn.StartTransaction; ! AssertTrue(FConn.InTransaction); ! FConn.CommitTransaction; ! AssertFalse(FConn.InTransaction); ! FConn.MockManager.Verify; ! FConn.Disconnect; end; procedure TTestMockConnector.TestDefault; begin ! FConn.IsDefault := True; ! AssertSame(InstantDefaultConnector, FConn); end; Index: TestInstantBlob.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantBlob.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantBlob.pas 14 May 2005 07:38:36 -0000 1.2 --- TestInstantBlob.pas 10 Jun 2005 01:25:34 -0000 1.3 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence, InstantMock, TestModel; type *************** *** 10,15 **** TestTInstantBlob = class(TTestCase) private ! FAttrMetadata: TInstantAttributeMetadata; FInstantBlob: TInstantBlob; public procedure SetUp; override; --- 10,16 ---- TestTInstantBlob = class(TTestCase) private ! FConn: TInstantMockConnector; FInstantBlob: TInstantBlob; + FOwner: TPerson; public procedure SetUp; override; *************** *** 33,46 **** procedure TestTInstantBlob.SetUp; begin ! FAttrMetadata := TInstantAttributeMetadata.Create(nil); ! FAttrMetadata.AttributeClass := TInstantBlob; ! FAttrMetadata.Name := 'AttrMetadataName'; ! FInstantBlob := TInstantBlob.Create(nil, FAttrMetadata); end; procedure TestTInstantBlob.TearDown; begin ! FreeAndNil(FInstantBlob); ! FreeAndNil(FAttrMetadata); end; --- 34,54 ---- procedure TestTInstantBlob.SetUp; begin ! FConn := TInstantMockConnector.Create(nil); ! FConn.BrokerClass := TInstantMockBroker; ! ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FOwner := TPerson.Create(FConn); ! FInstantBlob := FOwner._Picture; end; procedure TestTInstantBlob.TearDown; begin ! FInstantBlob := nil; ! FreeAndNil(FOwner); ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FConn); end; Index: TestInstantElement.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantElement.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantElement.pas 23 May 2005 00:29:45 -0000 1.2 --- TestInstantElement.pas 10 Jun 2005 01:25:33 -0000 1.3 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence, InstantMock; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence, InstantMock, TestModel; type *************** *** 10,17 **** TestTInstantElement = class(TTestCase) private - FAttrMetadata: TInstantAttributeMetadata; FConn: TInstantMockConnector; FInstantElement: TInstantElement; ! FOwner: TInstantObject; public procedure SetUp; override; --- 10,16 ---- TestTInstantElement = class(TTestCase) private FConn: TInstantMockConnector; FInstantElement: TInstantElement; ! FOwner: TContact; public procedure SetUp; override; *************** *** 31,45 **** FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! FOwner := TInstantObject.Create(FConn); ! FAttrMetadata := TInstantAttributeMetadata.Create(nil); ! FAttrMetadata.AttributeClass := TInstantPart; ! FInstantElement := TInstantPart.Create(FOwner, FAttrMetadata); end; procedure TestTInstantElement.TearDown; begin - FreeAndNil(FInstantElement); - FreeAndNil(FAttrMetadata); FreeAndNil(FOwner); FreeAndNil(FConn); end; --- 30,46 ---- FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FOwner := TContact.Create(FConn); ! FInstantElement := FOwner._Address; end; procedure TestTInstantElement.TearDown; begin FreeAndNil(FOwner); + InstantModel.ClassMetadatas.Clear; FreeAndNil(FConn); end; *************** *** 48,54 **** var vReturnValue: Boolean; ! vObject: TInstantObject; begin ! vObject := TInstantObject.Create(FConn); vObject.Id := 'Object.Id'; AssertEquals('Object RefCount 1', 1, vObject.RefCount); --- 49,55 ---- var vReturnValue: Boolean; ! vObject: TAddress; begin ! vObject := TAddress.Create(FConn); vObject.Id := 'Object.Id'; AssertEquals('Object RefCount 1', 1, vObject.RefCount); *************** *** 60,67 **** AssertEquals('Value RefCount 1', 1, FInstantElement.Value.RefCount); AssertEquals('Object RefCount 2', 1, vObject.RefCount); vReturnValue := FInstantElement.DetachObject(vObject); ! AssertTrue('DetachObject', vReturnValue); ! AssertEquals('Object RefCount 3', 0, vObject.RefCount); end; --- 61,70 ---- AssertEquals('Value RefCount 1', 1, FInstantElement.Value.RefCount); AssertEquals('Object RefCount 2', 1, vObject.RefCount); + AssertEquals('Value.Id 1', 'Object.Id', FInstantElement.Value.Id); vReturnValue := FInstantElement.DetachObject(vObject); ! AssertFalse('DetachObject', vReturnValue); ! AssertEquals('Object RefCount 3', 1, vObject.RefCount); ! AssertEquals('Value.Id 2', '', FInstantElement.Value.Id); end; *************** *** 73,81 **** procedure TestTInstantElement.TestSaveObjectTo_FromStream; var ! vObject: TInstantObject; vReturnValue: Boolean; vStream: TStream; begin ! vObject := TInstantObject.Create(FConn); AssertNotNull('Create object', vObject); AssertEquals('Object RefCount 1', 1, vObject.RefCount); --- 76,84 ---- procedure TestTInstantElement.TestSaveObjectTo_FromStream; var ! vObject: TAddress; vReturnValue: Boolean; vStream: TStream; begin ! vObject := TAddress.Create(FConn); AssertNotNull('Create object', vObject); AssertEquals('Object RefCount 1', 1, vObject.RefCount); *************** *** 92,102 **** FInstantElement.Value := nil; AssertFalse(FInstantElement.HasValue); - AssertEquals('Object RefCount 3', 0, vObject.RefCount); vStream.Position := 0; FInstantElement.LoadObjectFromStream(vStream); AssertTrue(FInstantElement.HasValue); AssertEquals('Value RefCount 2', 1, FInstantElement.Value.RefCount); - AssertEquals('Object RefCount 4', 0, vObject.RefCount); - AssertNotSame(vObject, FInstantElement.Value); finally vStream.Free; --- 95,102 ---- Index: TestInstantClasses.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantClasses.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantClasses.pas 3 May 2005 04:52:37 -0000 1.2 --- TestInstantClasses.pas 10 Jun 2005 01:25:35 -0000 1.3 *************** *** 54,63 **** begin c := TInstantCollection.Create(TInstantCollectionItem); ! AssertNotNull(c); ! AssertEquals(0, c.Count); ! i := c.add as TInstantCollectionItem; ! AssertEquals(1, c.Count); ! i.Name := 'pippo'; ! AssertTrue(i = c.Find('pippo')); end; --- 54,67 ---- begin c := TInstantCollection.Create(TInstantCollectionItem); ! try ! AssertNotNull(c); ! AssertEquals(0, c.Count); ! i := c.add as TInstantCollectionItem; ! AssertEquals(1, c.Count); ! i.Name := 'pippo'; ! AssertTrue(i = c.Find('pippo')); ! finally ! c.Free; ! end; end; *************** *** 248,251 **** --- 252,256 ---- finally + c.Free; iw.Free; ir.Free; *************** *** 287,290 **** --- 292,296 ---- finally + c.Free; iw.Free; ir.Free; Index: TestInstantPart.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantPart.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantPart.pas 23 May 2005 00:29:45 -0000 1.2 --- TestInstantPart.pas 10 Jun 2005 01:25:33 -0000 1.3 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence, InstantMock; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence, InstantMock, TestModel; type *************** *** 10,17 **** TestTInstantPart = class(TTestCase) private - FAttrMetadata: TInstantAttributeMetadata; FConn: TInstantMockConnector; FInstantPart: TInstantPart; ! FOwner: TInstantObject; public procedure SetUp; override; --- 10,16 ---- TestTInstantPart = class(TTestCase) private FConn: TInstantMockConnector; FInstantPart: TInstantPart; ! FOwner: TContact; public procedure SetUp; override; *************** *** 35,50 **** FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! FOwner := TInstantObject.Create(FConn); ! FAttrMetadata := TInstantAttributeMetadata.Create(nil); ! FAttrMetadata.AttributeClass := TInstantPart; ! FAttrMetadata.StorageKind := skExternal; ! FInstantPart := TInstantPart.Create(FOwner, FAttrMetadata); end; procedure TestTInstantPart.TearDown; begin ! FreeAndNil(FInstantPart); ! FreeAndNil(FAttrMetadata); FreeAndNil(FOwner); FreeAndNil(FConn); end; --- 34,51 ---- FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; ! ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FOwner := TContact.Create(FConn); ! FInstantPart := FOwner._Address; end; procedure TestTInstantPart.TearDown; begin ! FInstantPart := nil; FreeAndNil(FOwner); + InstantModel.ClassMetadatas.Clear; FreeAndNil(FConn); end; *************** *** 54,58 **** vSource: TInstantPart; vAttrMetadata: TInstantAttributeMetadata; ! vPart: TInstantObject; begin vAttrMetadata := TInstantAttributeMetadata.Create(nil); --- 55,59 ---- vSource: TInstantPart; vAttrMetadata: TInstantAttributeMetadata; ! vPart: TAddress; begin vAttrMetadata := TInstantAttributeMetadata.Create(nil); *************** *** 60,73 **** vSource := TInstantPart.Create(FOwner, vAttrMetadata); try ! vPart := TInstantObject.Create(FConn); ! vSource.Value := vPart; ! AssertTrue(vSource.HasValue); ! ! AssertFalse(FInstantPart.HasValue); ! FInstantPart.Assign(vSource); AssertTrue(FInstantPart.HasValue); ! AssertNotSame(vPart, FInstantPart.Value); finally vSource.Free; end; end; --- 61,75 ---- vSource := TInstantPart.Create(FOwner, vAttrMetadata); try ! vPart := TAddress.Create(FConn); ! FInstantPart.Value := vPart; AssertTrue(FInstantPart.HasValue); ! ! AssertFalse(vSource.HasValue); ! vSource.Assign(FInstantPart); ! AssertTrue(vSource.HasValue); ! AssertNotSame(vPart, vSource.Value); finally vSource.Free; + vAttrMetadata.Free; end; end; *************** *** 75,88 **** procedure TestTInstantPart.TestAllowOwned; begin ! AssertTrue(FInstantPart.AllowOwned); end; procedure TestTInstantPart.TestIsChanged; var ! vPart: TInstantObject; begin AssertFalse(FInstantPart.IsChanged); ! vPart := TInstantObject.Create(FConn); vPart.Changed; FInstantPart.Value := vPart; --- 77,90 ---- procedure TestTInstantPart.TestAllowOwned; begin ! AssertFalse(FInstantPart.AllowOwned); end; procedure TestTInstantPart.TestIsChanged; var ! vPart: TAddress; begin AssertFalse(FInstantPart.IsChanged); ! vPart := TAddress.Create(FConn); vPart.Changed; FInstantPart.Value := vPart; *************** *** 92,100 **** procedure TestTInstantPart.TestIsDefault; var ! vPart: TInstantObject; begin AssertTrue(FInstantPart.IsDefault); ! vPart := TInstantObject.Create(FConn); vPart.Id := 'PartId'; FInstantPart.Value := vPart; --- 94,102 ---- procedure TestTInstantPart.TestIsDefault; var ! vPart: TAddress; begin AssertTrue(FInstantPart.IsDefault); ! vPart := TAddress.Create(FConn); vPart.Id := 'PartId'; FInstantPart.Value := vPart; *************** *** 106,110 **** AssertFalse(FInstantPart.HasValue); ! FInstantPart.Value := TInstantObject.Create(FConn); AssertTrue(FInstantPart.HasValue); end; --- 108,112 ---- AssertFalse(FInstantPart.HasValue); ! FInstantPart.Value := TAddress.Create(FConn); AssertTrue(FInstantPart.HasValue); end; *************** *** 123,139 **** vSecondObj: TInstantObject; begin ! AssertFalse(FInstantPart.HasValue); ! AssertNotNull(FInstantPart.Value); ! AssertTrue(FInstantPart.HasValue); vFirstObj := FInstantPart.Value; ! vSecondObj := TInstantObject.Create(FConn); vSecondObj.Id := 'PartId'; FInstantPart.Value := vSecondObj; ! AssertEquals('PartId', FInstantPart.Value.Id); ! AssertNotSame(vFirstObj, FInstantPart.Value); FInstantPart.Reset; ! AssertFalse(FInstantPart.HasValue); end; --- 125,141 ---- vSecondObj: TInstantObject; begin ! AssertFalse('HasValue 1', FInstantPart.HasValue); ! AssertNotNull('AssertNotNull', FInstantPart.Value); ! AssertTrue('HasValue 2', FInstantPart.HasValue); vFirstObj := FInstantPart.Value; ! vSecondObj := TAddress.Create(FConn); vSecondObj.Id := 'PartId'; FInstantPart.Value := vSecondObj; ! AssertEquals('Value.Id', 'PartId', FInstantPart.Value.Id); ! AssertNotSame('AssertNotSame', vFirstObj, FInstantPart.Value); FInstantPart.Reset; ! AssertFalse('HasValue 3', FInstantPart.HasValue); end; *************** *** 145,147 **** end. - \ No newline at end of file --- 147,148 ---- Index: TestInstantClassMetadata.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantClassMetadata.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantClassMetadata.pas 10 May 2005 05:31:08 -0000 1.2 --- TestInstantClassMetadata.pas 10 Jun 2005 01:25:35 -0000 1.3 *************** *** 9,13 **** TestTInstantClassMetadata = class(TTestCase) private - FClassCount: Integer; FConn: TInstantMockConnector; FInstantClassMetadata: TInstantClassMetadata; --- 9,12 ---- *************** *** 33,36 **** --- 32,36 ---- TestTInstantClassMetadatas = class(TTestCase) private + FConn: TInstantMockConnector; FInstantClassMetadatas: TInstantClassMetadatas; public *************** *** 52,56 **** FConn.BrokerClass := TInstantMockBroker; ! if FClassCount > 0 then InstantModel.ClassMetadatas.Clear; InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); --- 52,56 ---- FConn.BrokerClass := TInstantMockBroker; ! if InstantModel.ClassMetadatas.Count > 0 then InstantModel.ClassMetadatas.Clear; InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); *************** *** 61,66 **** procedure TestTInstantClassMetadata.TearDown; begin ! FInstantClassMetadata := nil; ! FConn.Free; end; --- 61,66 ---- procedure TestTInstantClassMetadata.TearDown; begin ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FConn); end; *************** *** 177,196 **** procedure TestTInstantClassMetadatas.SetUp; - var - TestItem: TInstantClassMetadata; begin ! FInstantClassMetadatas := TInstantClassMetadatas.Create(nil); ! TestItem := TInstantClassMetadata(FInstantClassMetadatas.Add); ! TestItem.Name := 'TPerson'; ! TestItem := TInstantClassMetadata(FInstantClassMetadatas.Add); ! TestItem.Name := 'TAddress'; ! TestItem := TInstantClassMetadata(FInstantClassMetadatas.Add); ! TestItem.Name := 'TCountry'; end; procedure TestTInstantClassMetadatas.TearDown; begin ! FInstantClassMetadatas.Free; ! FInstantClassMetadatas := nil; end; --- 177,195 ---- procedure TestTInstantClassMetadatas.SetUp; begin ! FConn := TInstantMockConnector.Create(nil); ! FConn.BrokerClass := TInstantMockBroker; ! ! if InstantModel.ClassMetadatas.Count > 0 then ! InstantModel.ClassMetadatas.Clear; ! InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); ! ! FInstantClassMetadatas := InstantModel.ClassMetadatas; end; procedure TestTInstantClassMetadatas.TearDown; begin ! InstantModel.ClassMetadatas.Clear; ! FreeAndNil(FConn); end; *************** *** 201,207 **** vReturnValue := FInstantClassMetadatas.Add; AssertNotNull(vReturnValue); ! AssertEquals(4, FInstantClassMetadatas.Count); FInstantClassMetadatas.Remove(vReturnValue); ! AssertEquals(3, FInstantClassMetadatas.Count); end; --- 200,206 ---- vReturnValue := FInstantClassMetadatas.Add; AssertNotNull(vReturnValue); ! AssertEquals(10, FInstantClassMetadatas.Count); FInstantClassMetadatas.Remove(vReturnValue); ! AssertEquals(9, FInstantClassMetadatas.Count); end; *************** *** 218,222 **** procedure TestTInstantClassMetadatas.TestItems; begin ! AssertEquals('TAddress', FInstantClassMetadatas.Items[1].Name); end; --- 217,221 ---- procedure TestTInstantClassMetadatas.TestItems; begin ! AssertEquals('TCountry', FInstantClassMetadatas.Items[1].Name); end; Index: TestIO.dof =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestIO.dof,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestIO.dof 3 May 2005 04:52:37 -0000 1.2 --- TestIO.dof 10 Jun 2005 01:25:34 -0000 1.3 *************** *** 97,101 **** SearchPath=D:\L\ubmock\src Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;adortl;vclactnband;vclshlctrls;CS30Logging70;Rz30Ctls70;Rz30DBCtls70;ip4000v7;Rave60VCL;Rave60CLX;madBasic_;madDisAsm_;CLXIB;ibxpress;VCLIB;IOCore;IOIBX ! Conditionals=CURR_TESTS DebugSourceDirs= UsePackages=0 --- 97,101 ---- SearchPath=D:\L\ubmock\src Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;adortl;vclactnband;vclshlctrls;CS30Logging70;Rz30Ctls70;Rz30DBCtls70;ip4000v7;Rave60VCL;Rave60CLX;madBasic_;madDisAsm_;CLXIB;ibxpress;VCLIB;IOCore;IOIBX ! Conditionals= DebugSourceDirs= UsePackages=0 Index: TestModel.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestModel.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestModel.pas 3 May 2005 04:52:37 -0000 1.1 --- TestModel.pas 10 Jun 2005 01:25:34 -0000 1.2 *************** *** 114,119 **** City: String(30) index; Name: String(50) index; ! Phones: Parts(TPhone); } _Address: TInstantPart; _Category: TInstantReference; _City: TInstantString; --- 114,121 ---- City: String(30) index; Name: String(50) index; ! Phones: Parts(TPhone); ! AddressExt: Part(TAddress) stored 'Address' external; } _Address: TInstantPart; + _AddressExt: TInstantPart; _Category: TInstantReference; _City: TInstantString; *************** *** 122,125 **** --- 124,128 ---- private function GetAddress: TAddress; + function GetAddressExt: TAddress; function GetCategory: TCategory; function GetCity: string; *************** *** 129,132 **** --- 132,136 ---- function GetPhones(Index: Integer): TPhone; procedure SetAddress(Value: TAddress); + procedure SetAddressExt(Value: TAddress); procedure SetCategory(Value: TCategory); procedure SetCity(const Value: string); *************** *** 149,152 **** --- 153,157 ---- published property Address: TAddress read GetAddress write SetAddress; + property AddressExt: TAddress read GetAddressExt write SetAddressExt; property Category: TCategory read GetCategory write SetCategory; property City: string read GetCity write SetCity; *************** *** 169,191 **** {IOMETADATA stored; BirthDate: DateTime; ! Emails: Parts(TEmail) externalstored 'Person_Email'; Employer: Reference(TCompany); Picture: Blob; ! Salary: Currency; } _BirthDate: TInstantDateTime; _Emails: TInstantParts; _Employer: TInstantReference; _Picture: TInstantGraphic; _Salary: TInstantCurrency; private function GetBirthDate: TDateTime; function GetEmailCount: Integer; function GetEmails(Index: Integer): TEmail; function GetEmployer: TCompany; function GetMainEmailAddress: string; function G... [truncated message content] |