You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(13) |
Sep
(25) |
Oct
(10) |
Nov
(19) |
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
(206) |
Mar
(43) |
Apr
(25) |
May
(20) |
Jun
(69) |
Jul
(121) |
Aug
(95) |
Sep
(122) |
Oct
(213) |
Nov
(46) |
Dec
(39) |
2006 |
Jan
(28) |
Feb
(57) |
Mar
(21) |
Apr
(7) |
May
(11) |
Jun
(2) |
Jul
(8) |
Aug
(13) |
Sep
(2) |
Oct
(2) |
Nov
(20) |
Dec
(16) |
2007 |
Jan
(9) |
Feb
(15) |
Mar
|
Apr
(4) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
(1) |
Sep
(9) |
Oct
|
Nov
(1) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
(8) |
Apr
(1) |
May
|
Jun
|
Jul
(11) |
Aug
(57) |
Sep
(2) |
Oct
(6) |
Nov
|
Dec
(7) |
2010 |
Jan
(11) |
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
(2) |
Sep
(27) |
Oct
(3) |
Nov
(7) |
Dec
(1) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(10) |
Oct
|
Nov
|
Dec
|
2012 |
Jan
(8) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(3) |
Nov
(1) |
Dec
(1) |
2013 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
(4) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
(4) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(3) |
Oct
|
Nov
(4) |
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
From: Nando D. <na...@us...> - 2005-06-17 19:10:50
|
Update of /cvsroot/instantobjects/Source/Catalogs/IBFb/D7 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17312/Catalogs/IBFb/D7 Added Files: IOIBFbCatalog.cfg IOIBFbCatalog.dof IOIBFbCatalog.dpk IOIBFbCatalog.res Log Message: Catalog to read IB/Fb metadata information --- NEW FILE: IOIBFbCatalog.res --- (This appears to be a binary file; contents omitted.) --- NEW FILE: IOIBFbCatalog.cfg --- -$A8 -$B- -$C+ -$D+ -$E- -$F- -$G+ -$H+ -$I+ -$J- -$K- -$L+ -$M- -$N+ -$O+ -$P+ -$Q- -$R- -$S- -$T+ -$U- -$V+ -$W- -$X+ -$YD -$Z1 -cg -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -H+ -W+ -M -$M16384,1048576 -K$00400000 -LE"c:\programmi\borland\delphi7\Projects\Bpl" -LN"c:\programmi\borland\delphi7\Projects\Bpl" -Z -w-UNSAFE_TYPE -w-UNSAFE_CODE -w-UNSAFE_CAST --- NEW FILE: IOIBFbCatalog.dof --- [FileVersion] Version=7.0 [Compiler] A=8 B=0 C=1 D=1 E=0 F=0 G=1 H=1 I=1 J=0 K=0 L=1 M=0 N=1 O=1 P=1 Q=0 R=0 S=0 T=1 U=0 V=1 W=0 X=1 Y=1 Z=1 ShowHints=1 ShowWarnings=1 UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; NamespacePrefix= SymbolDeprecated=1 SymbolLibrary=1 SymbolPlatform=1 UnitLibrary=1 UnitPlatform=1 UnitDeprecated=1 HResultCompat=1 HidingMember=1 HiddenVirtual=1 Garbage=1 BoundsError=1 ZeroNilCompat=1 StringConstTruncated=1 ForLoopVarVarPar=1 TypedConstVarPar=1 AsgToTypedConst=1 CaseLabelRange=1 ForVariable=1 ConstructingAbstract=1 ComparisonFalse=1 ComparisonTrue=1 ComparingSignedUnsigned=1 CombiningSignedUnsigned=1 UnsupportedConstruct=1 FileOpen=1 FileOpenUnitSrc=1 BadGlobalSymbol=1 DuplicateConstructorDestructor=1 InvalidDirective=1 PackageNoLink=1 PackageThreadVar=1 ImplicitImport=1 HPPEMITIgnored=1 NoRetVal=1 UseBeforeDef=1 ForLoopVarUndef=1 UnitNameMismatch=1 NoCFGFileFound=1 MessageDirective=1 ImplicitVariants=1 UnicodeToLocale=1 LocaleToUnicode=1 ImagebaseMultiple=1 SuspiciousTypecast=1 PrivatePropAccessor=1 UnsafeType=0 UnsafeCode=0 UnsafeCast=0 [Linker] MapFile=0 OutputObjs=0 ConsoleApp=1 DebugInfo=0 RemoteSymbols=0 MinStackSize=16384 MaxStackSize=1048576 ImageBase=4194304 ExeDescription=InstantObjects Catalog for InterBase and Firebird [Directories] OutputDir= UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= SearchPath= Packages=vcl;rtl;dbrtl;vcldb;ibxpress;IOCore;dbexpress;IODBX Conditionals= DebugSourceDirs= UsePackages=0 [Parameters] RunParams=/nostart HostApplication= Launcher= UseLauncher=0 DebugCWD= [Language] ActiveLang= ProjectLang= RootDir=C:\Programmi\Borland\Delphi7\Bin\ [Version Info] IncludeVerInfo=1 AutoIncBuild=0 MajorVer=1 MinorVer=0 Release=0 Build=0 Debug=0 PreRelease=0 Special=0 Private=0 DLL=0 Locale=1040 CodePage=1252 [Version Info Keys] CompanyName= FileDescription= FileVersion=1.0.0.0 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName= ProductVersion=1.0.0.0 Comments= [HistoryLists\hlUnitAliases] Count=1 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --- NEW FILE: IOIBFbCatalog.dpk --- package IOIBFbCatalog; {$R *.res} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} {$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS ON} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} {$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO ON} {$SAFEDIVIDE OFF} {$STACKFRAMES OFF} {$TYPEDADDRESS ON} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE $400000} {$DESCRIPTION 'InstantObjects Catalog for InterBase and Firebird'} {$LIBSUFFIX '_D7'} {$RUNONLY} {$IMPLICITBUILD OFF} requires rtl, IOCore; contains InstantIBFbCatalog in '..\InstantIBFbCatalog.pas'; end. |
From: Nando D. <na...@us...> - 2005-06-17 19:10:33
|
Update of /cvsroot/instantobjects/Source/Catalogs/IBFb/D6 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17312/Catalogs/IBFb/D6 Added Files: IOIBFbCatalog.cfg IOIBFbCatalog.dof IOIBFbCatalog.dpk IOIBFbCatalog.res Log Message: Catalog to read IB/Fb metadata information --- NEW FILE: IOIBFbCatalog.res --- (This appears to be a binary file; contents omitted.) --- NEW FILE: IOIBFbCatalog.cfg --- -$A8 -$B- -$C+ -$D+ -$E- -$F- -$G+ -$H+ -$I+ -$J- -$K- -$L+ -$M- -$N+ -$O+ -$P+ -$Q- -$R- -$S- -$T+ -$U- -$V+ -$W- -$X+ -$YD -$Z1 -cg -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -H+ -W+ -M -$M16384,1048576 -K$00400000 -LE"C:\Programmi\Borland\Delphi6\Projects\Bpl" -LN"C:\Programmi\Borland\Delphi6\Projects\Bpl" -Z --- NEW FILE: IOIBFbCatalog.dof --- [FileVersion] Version=6.0 [Compiler] A=8 B=0 C=1 D=1 E=0 F=0 G=1 H=1 I=1 J=0 K=0 L=1 M=0 N=1 O=1 P=1 Q=0 R=0 S=0 T=1 U=0 V=1 W=0 X=1 Y=1 Z=1 ShowHints=1 ShowWarnings=1 UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; [Linker] MapFile=0 OutputObjs=0 ConsoleApp=1 DebugInfo=0 RemoteSymbols=0 MinStackSize=16384 MaxStackSize=1048576 ImageBase=4194304 ExeDescription=InstantObjects Catalog for InterBase and Firebird [Directories] OutputDir= UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= SearchPath= Packages=vcl;rtl;dbrtl;vcldb;ibxpress;IOCore;dbexpress;IODBX Conditionals= DebugSourceDirs= UsePackages=0 [Parameters] RunParams=/nostart HostApplication= Launcher= UseLauncher=0 DebugCWD= [Language] ActiveLang= ProjectLang= RootDir=C:\Programmi\Borland\Delphi7\Bin\ [Version Info] IncludeVerInfo=1 AutoIncBuild=0 MajorVer=1 MinorVer=0 Release=0 Build=0 Debug=0 PreRelease=0 Special=0 Private=0 DLL=0 Locale=1040 CodePage=1252 [Version Info Keys] CompanyName= FileDescription= FileVersion=1.0.0.0 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName= ProductVersion=1.0.0.0 Comments= [Excluded Packages] C:\Programmi\Borland\Delphi6\Projects\Bpl\DclIODBX_D6.bpl=InstantObjects dbExpress Design-Time Support (Delphi 6) C:\Programmi\Borland\Delphi6\Projects\Bpl\DclIOIBX_D6.bpl=InstantObjects IBX Design-Time Support (Delphi 6) C:\Programmi\Borland\Delphi6\Projects\Bpl\DclIOADO_D6.bpl=InstantObjects ADO Design-Time Support (Delphi 6) C:\Programmi\Borland\Delphi6\Projects\Bpl\DclIOUIB_D6.bpl=InstantObjects UIB Design-Time Support (Delphi 6) C:\Programmi\Borland\Delphi6\Bin\dclclxstd60.bpl=Borland CLX Standard Components [HistoryLists\hlUnitAliases] Count=1 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --- NEW FILE: IOIBFbCatalog.dpk --- package IOIBFbCatalog; {$R *.res} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} {$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS ON} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} {$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO ON} {$SAFEDIVIDE OFF} {$STACKFRAMES OFF} {$TYPEDADDRESS ON} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE $400000} {$DESCRIPTION 'InstantObjects Catalog for InterBase and Firebird'} {$LIBSUFFIX '_D6'} {$RUNONLY} {$IMPLICITBUILD OFF} requires rtl, IOCore; contains InstantIBFbCatalog in '..\InstantIBFbCatalog.pas'; end. |
From: Nando D. <na...@us...> - 2005-06-17 19:07:00
|
Update of /cvsroot/instantobjects/Source/Catalogs/IBFb/D7 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15141/D7 Log Message: Directory /cvsroot/instantobjects/Source/Catalogs/IBFb/D7 added to the repository |
From: Nando D. <na...@us...> - 2005-06-17 19:06:52
|
Update of /cvsroot/instantobjects/Source/Catalogs/IBFb/D6 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15097/D6 Log Message: Directory /cvsroot/instantobjects/Source/Catalogs/IBFb/D6 added to the repository |
From: Nando D. <na...@us...> - 2005-06-17 19:06:38
|
Update of /cvsroot/instantobjects/Source/Catalogs/IBFb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14895/IBFb Log Message: Directory /cvsroot/instantobjects/Source/Catalogs/IBFb added to the repository |
From: Nando D. <na...@us...> - 2005-06-17 19:06:16
|
Update of /cvsroot/instantobjects/Source/Catalogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14582/Catalogs Log Message: Directory /cvsroot/instantobjects/Source/Catalogs added to the repository |
From: Nando D. <na...@us...> - 2005-06-17 19:04:37
|
Update of /cvsroot/instantobjects/Docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13781 Added Files: [RFC]_IO-001_Database_Structure_Evolution.txt Log Message: forgot to add it before --- NEW FILE: [RFC]_IO-001_Database_Structure_Evolution.txt --- RFC: IO-001 Title: Database Structure Evolution Author: Nando Dessena First Draft: 01/03/2005 Current Revision: 2, 01/03/2005 = Goal = Currently when the Build database command is issued (or the BuildDatabase method of TInstantConnector is called) on an existing database IO completely destroys the data. The current database builder is dumb in the sense that it drops and recreates all the existing tables. A more intelligent database builder, that is able to preserve the data, would be very welcome, especially by new users. = Proposal = To upgrade an existing database to a new schema definition, a sequence of well defined steps is applied. Each step represent a single database operation. Example: type TInstantDBBuildCmdType = (ctAddTable, ctAddColumn, ctAlterColumn, ctAddIndex, ctDropTable, ctDropColumn, ctDropIndex ...); TInstantDBBuildCmd is an abstract class whose purpose is to apply a single step of the aforementioned sequence. For each TInstantDBBuildCmdType there is one or more derived class to apply the command type in a given context (some brokers support SQL scripts, while the BDE broker may require the use of the DbiDoRestructure API call, while ADO might require the use of ADOX). Instances of the appropriate concrete classes are created by a factory method in the connector or broker. Example: function TInstantConnector.CreateDBBuildCmd( const Type: TInstantDBBuildCmdType): TInstantDBBuildCmd; virtual; So that each broker can instantiate the appropriate classes to apply the upgrade sequence to its database. If a broker does not support a particular command type, it will create and return an instance of a "cantdoit" command class (much like the Null Object design pattern) that will raise an exception when run. These "cantdoit" objects can then be disabled to make the upgrade sequence work to the supported extent, at the user's choice (see below). The build class has references to the connector, metadata, and an Enabled: Boolean property so that the user can decide how much the upgrade process should be aggressive (for example, ctDropTable and ctDropIndex commands are likely to be disabled by those who have added non-IO tables and indices to the database). The command sequence is encapsulated in a TInstantDBBuildCmdSequence that manages the command instances and can be streamed out and reloaded if needed (for quick on-site database upgrades). = Class and Responsibilities = TInstantConnector/Broker - builds a straight TInstantDBBuildCmdSequence that drops and recreates all tables and indices (equivalent to the current BuildDatabase command). - executes a given command sequence, optionally interactively (see below). - creates instances of TInstantDBBuildCmd as requested; creates an instance of the special "cantdoit" class for unsupported commands. TInstantDBBuildCmd - is able to execute the command it represents. - can be streamed. - doesn't fail if already applied, so that a failed sequence can be resumed by simply re-applying it. If this requirement proves difficult to achieve, then as an alternative a failed sequence can be resumed by having the TInstantDBEvolver re-create it. TInstantDBBuildCmdSequence - controls the overall execution of the commands. - can be streamed. TInstantDBBuildCmdSequenceEditForm is an editor for the command sequence, in which the user can rearrange the order of steps and enable/disable them individually. The user can also stream out the sequence, and may decide to disable all "unsupported" commands that will make the sequence fail if enabled. Other options may be added here. TInstantDBEvolver inspects a database and builds a TInstantDBBuildCmdSequence that upgrades the database to the current schema. Works closely with the connector and the broker. The command sequence, once built, is passed to the connector for execution. = Use = The current BuildDatabase call will stay untouched, except that it will be layered on top of the new mechanism (see above). The Connection Manager will offer an additional "Evolve" command that will be implemented creating and executing an instance of TInstantDBEvolver. |
From: Steven M. <sr...@us...> - 2005-06-13 01:04:19
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv439 Modified Files: InstantPersistence.pas Log Message: Fix: PartAttribute must always be added in local method AddPartAttributeParam Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** InstantPersistence.pas 10 May 2005 22:26:45 -0000 1.38 --- InstantPersistence.pas 13 Jun 2005 01:04:09 -0000 1.39 *************** *** 13093,13102 **** begin Part := Attribute as TInstantPart; ! if Part.HasValue then ! begin ! AddStringParam(Params, FieldName + InstantClassFieldName, Part.Value.ClassName); ! Part.Value.CheckId; ! AddIdParam(Params, FieldName + InstantIdFieldName, Part.Value.Id); ! end; end else --- 13093,13099 ---- begin Part := Attribute as TInstantPart; ! AddStringParam(Params, FieldName + InstantClassFieldName, Part.Value.ClassName); ! Part.Value.CheckId; ! AddIdParam(Params, FieldName + InstantIdFieldName, Part.Value.Id); end else |
From: Steven M. <sr...@us...> - 2005-06-10 02:07:45
|
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24347 Modified Files: TestInstantObject.pas Log Message: Fixed memory leak in NewInstance test. Index: TestInstantObject.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantObject.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantObject.pas 10 Jun 2005 01:26:13 -0000 1.1 --- TestInstantObject.pas 10 Jun 2005 02:07:37 -0000 1.2 *************** *** 408,413 **** begin vReturnValue := FInstantObject.NewInstance; ! AssertNotNull(vReturnValue); ! AssertEquals('InstanceSize', TPerson.InstanceSize, vReturnValue.InstanceSize); end; --- 408,417 ---- begin vReturnValue := FInstantObject.NewInstance; ! try ! AssertNotNull(vReturnValue); ! AssertEquals('InstanceSize', TPerson.InstanceSize, vReturnValue.InstanceSize); ! finally ! vReturnValue.Free; ! end; end; |
From: Steven M. <sr...@us...> - 2005-06-10 01:26:21
|
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2959 Added Files: TestInstantObject.pas TestInstantReference.pas Log Message: Update to tests --- NEW FILE: TestInstantObject.pas --- unit TestInstantObject; interface uses fpcunit, InstantPersistence, InstantMock, TestModel; type // Test methods for class TInstantObject TestTInstantObject = class(TTestCase) private FConn: TInstantMockConnector; FInstantObject: TPerson; public procedure SetUp; override; procedure TearDown; override; published procedure TestObjectsArrayMethods; procedure TestAddRef_Release; procedure TestAssign_Clone_ResetAttributes; procedure TestAttributeByName; procedure TestCanDispose; procedure TestCanStore; procedure TestChanged_Unchanged_IsChanged; procedure TestChangesDisabled_EnableDisableChanges; procedure TestCheckId; procedure TestClassType; procedure TestContainerByName; procedure TestEqualsSignature; procedure TestEqualsPersistentSignature; procedure TestFindAttribute; procedure TestFindContainer; procedure TestFreeInstance; procedure TestGetNamePath; procedure TestHasDefaultContainer; procedure TestIsAbandoned; procedure TestIsDefault; procedure TestIsIdChanged; // ToDo: procedure TestInvoke; procedure TestIsOperationAllowed; procedure TestIsOwned; procedure TestIsPersistent; procedure TestMetadata; procedure TestNewInstance; procedure TestObjectChangeCount; procedure TestObjectClass; procedure TestOwner; procedure TestOwnerAttribute; procedure TestPersistentId; procedure TestRefresh_RefreshAll; procedure TestStore_Dispose; procedure TestUpdateCount; end; implementation uses SysUtils, Classes, Db, InstantClasses, testregistry; procedure TestTInstantObject.SetUp; var vInstantClassMetadata: TInstantClassMetadata; begin FConn := TInstantMockConnector.Create(nil); FConn.BrokerClass := TInstantMockBroker; if InstantModel.ClassMetadatas.Count > 0 then InstantModel.ClassMetadatas.Clear; InstantModel.LoadFromResFile(ChangeFileExt(ParamStr(0), '.mdr')); vInstantClassMetadata := InstantModel.ClassMetadatas.Find('TPerson'); vInstantClassMetadata.DefaultContainerName := 'Emails'; FInstantObject := TPerson.Create(FConn); FInstantObject.Name := 'InitPerson'; end; procedure TestTInstantObject.TearDown; begin FreeAndNil(FInstantObject); InstantModel.ClassMetadatas.Clear; FreeAndNil(FConn); end; procedure TestTInstantObject.TestObjectsArrayMethods; var vReturnValue: Integer; vObject: TEmail; begin vObject := TEmail.Create(FConn); AssertNotNull(vObject); vObject.Address := 'Object1'; vReturnValue := FInstantObject.AddObject(vObject); AssertEquals('vReturnValue', 0, vReturnValue); AssertEquals('ObjectCount 1', 1, FInstantObject.ObjectCount); vObject := TEmail.Create(FConn); AssertNotNull(vObject); vObject.Address := 'Object2'; vReturnValue := FInstantObject.AddObject(vObject); AssertEquals('vReturnValue', 1, vReturnValue); AssertEquals('ObjectCount 2', 2, FInstantObject.ObjectCount); AssertEquals('Object Index', 1, FInstantObject.IndexOfObject(vObject)); vObject := TEmail.Create(FConn); AssertNotNull(vObject); vObject.Address := 'Object3'; vReturnValue := FInstantObject.AddObject(vObject); AssertEquals('vReturnValue', 2, vReturnValue); AssertEquals('ObjectCount 3', 3, FInstantObject.ObjectCount); vObject := TEmail.Create(FConn); AssertNotNull(vObject); vObject.Address := 'Object4'; FInstantObject.InsertObject(2, vObject); AssertEquals('ObjectCount 4', 4, FInstantObject.ObjectCount); FInstantObject.DeleteObject(1); AssertEquals('ObjectCount 5', 3, FInstantObject.ObjectCount); AssertEquals('Address 1', 'Object1', TEmail(FInstantObject.Objects[0]).Address); AssertEquals('Address 2', 'Object4', TEmail(FInstantObject.Objects[1]).Address); AssertEquals('Address 3', 'Object3', TEmail(FInstantObject.Objects[2]).Address); FInstantObject.ClearObjects; AssertEquals('ObjectCount 6', 0, FInstantObject.ObjectCount); end; procedure TestTInstantObject.TestAddRef_Release; var vReturnValue: Integer; begin AssertEquals('RefCount 1', 1, FInstantObject.RefCount); vReturnValue := FInstantObject.AddRef; AssertEquals('RefCount 2', 2, vReturnValue); vReturnValue := FInstantObject.Release; AssertEquals('RefCount 3', 1, vReturnValue); end; procedure TestTInstantObject.TestAssign_Clone_ResetAttributes; var vCompany: TCompany; vEmail: TEmail; vSource, vClone: TPerson; begin vCompany := nil; vClone := nil; vSource := TPerson.Create(FConn); try AssertNotNull(vSource); vSource.Name := 'NewPerson'; vEmail := TEmail.Create(FConn); vEmail.Address := 'New...@do...'; vSource.AddEmail(vEmail); vCompany := TCompany.Create(FConn); vCompany.Name := 'Employer Co.'; vSource.EmployBy(vCompany); AssertEquals('InitPerson', FInstantObject.Name); FInstantObject.Assign(vSource); AssertEquals('NewPerson', FInstantObject.Name); AssertEquals(1, FInstantObject.EmailCount); AssertEquals('New...@do...', FInstantObject.Emails[0].Address); AssertEquals('Employer Co.', FInstantObject.Employer.Name); vClone := TPerson(FInstantObject.Clone(FConn)); AssertNotNull(vClone); AssertNotSame(vClone, FInstantObject); AssertEquals('NewPerson', vClone.Name); AssertEquals(1, vClone.EmailCount); AssertEquals('New...@do...', vClone.Emails[0].Address); AssertEquals('Employer Co.', vClone.Employer.Name); FInstantObject.ResetAttributes; AssertEquals('', FInstantObject.Name); AssertEquals(0, FInstantObject.EmailCount); AssertNull(FInstantObject.Employer); finally vCompany.ClearEmployees; vCompany.Free; vSource.Free; vClone.Free; end; end; procedure TestTInstantObject.TestAttributeByName; var vReturnValue: TInstantAttribute; begin vReturnValue := FInstantObject.AttributeByName('Name'); AssertNotNull('Name', vReturnValue); AssertEquals('Name', 'InitPerson', vReturnValue.Value); vReturnValue := FInstantObject.AttributeByName('Employer'); AssertNotNull('Employer', vReturnValue); AssertEquals('Employer', 'Employer', vReturnValue.Name); try FInstantObject.AttributeByName('Dummy'); Fail('Should never get here!!'); except on E: EInstantError do ; // do nothing as this is expected else raise; end; end; procedure TestTInstantObject.TestCanDispose; begin AssertTrue(FInstantObject.CanDispose); end; procedure TestTInstantObject.TestCanStore; begin AssertTrue(FInstantObject.CanStore); end; procedure TestTInstantObject.TestChanged_Unchanged_IsChanged; begin AssertTrue(FInstantObject.IsChanged); FInstantObject.Unchanged; AssertFalse(FInstantObject.IsChanged); end; procedure TestTInstantObject.TestChangesDisabled_EnableDisableChanges; begin AssertFalse(FInstantObject.ChangesDisabled); FInstantObject.DisableChanges; AssertTrue(FInstantObject.ChangesDisabled); FInstantObject.DisableChanges; AssertTrue(FInstantObject.ChangesDisabled); FInstantObject.EnableChanges; AssertTrue(FInstantObject.ChangesDisabled); FInstantObject.EnableChanges; AssertFalse(FInstantObject.ChangesDisabled); end; procedure TestTInstantObject.TestCheckId; begin FInstantObject.CheckId; AssertFalse(FInstantObject.Id = ''); FInstantObject.Id := 'PersonId'; FInstantObject.CheckId; AssertEquals('PersonId', FInstantObject.Id); end; procedure TestTInstantObject.TestClassType; begin AssertEquals(TPerson, FInstantObject.ClassType); end; procedure TestTInstantObject.TestContainerByName; var vReturnValue: TInstantContainer; begin // Get DefaultContainer name vReturnValue := FInstantObject.ContainerByName(''); AssertNotNull(vReturnValue); AssertEquals('Emails', vReturnValue.Name); vReturnValue := FInstantObject.ContainerByName('Emails'); AssertNotNull(vReturnValue); try FInstantObject.ContainerByName('Dummy'); Fail('Should never get here!!'); except on E: EInstantError do ; // do nothing as this is expected else raise; end; end; procedure TestTInstantObject.TestEqualsPersistentSignature; var vReturnValue: Boolean; vObjectId: string; vObjectClassName: string; begin vObjectId := 'PersonID'; vObjectClassName := 'TPerson'; FInstantObject.Id := 'PersonID'; AssertFalse('IsPersistent', FInstantObject.IsPersistent); vReturnValue := FInstantObject.EqualsPersistentSignature(vObjectClassName, vObjectId); AssertFalse('EqualsPersistentSignature', vReturnValue); FInstantObject.Store; vReturnValue := FInstantObject.EqualsPersistentSignature(vObjectClassName, vObjectId); AssertTrue('EqualsPersistentSignature', vReturnValue); end; procedure TestTInstantObject.TestEqualsSignature; var vReturnValue: Boolean; vObjectId: string; vObjectClassName: string; begin vObjectId := 'PersonID'; vObjectClassName := 'TPerson'; FInstantObject.Id := 'PersonID'; vReturnValue := FInstantObject.EqualsSignature(vObjectClassName, vObjectId); AssertTrue('EqualsSignature', vReturnValue); end; procedure TestTInstantObject.TestFindAttribute; var vReturnValue: TInstantAttribute; begin vReturnValue := FInstantObject.FindAttribute('Name'); AssertNotNull('Name', vReturnValue); AssertEquals('InitPerson', vReturnValue.Value); vReturnValue := FInstantObject.FindAttribute('Employer'); AssertNotNull('Employer', vReturnValue); AssertEquals('Employer', 'Employer', vReturnValue.Name); end; procedure TestTInstantObject.TestFindContainer; var vReturnValue: TInstantContainer; begin // Get DefaultContainer name vReturnValue := FInstantObject.FindContainer(''); AssertNotNull(vReturnValue); AssertEquals('Emails', vReturnValue.Name); vReturnValue := FInstantObject.FindContainer('Emails'); AssertNotNull(vReturnValue); vReturnValue := FInstantObject.FindContainer('Dummy'); AssertNull(vReturnValue); end; procedure TestTInstantObject.TestFreeInstance; begin FInstantObject.FreeInstance; FInstantObject := nil; AssertNull(FInstantObject); end; procedure TestTInstantObject.TestGetNamePath; begin FInstantObject.Id := 'PersonID'; AssertEquals('TPerson.PersonID', FInstantObject.GetNamePath); end; procedure TestTInstantObject.TestHasDefaultContainer; begin AssertTrue(FInstantObject.HasDefaultContainer); end; procedure TestTInstantObject.TestIsAbandoned; begin AssertFalse(FInstantObject.IsAbandoned); end; procedure TestTInstantObject.TestIsDefault; begin AssertFalse(FInstantObject.IsDefault); FInstantObject.ResetAttributes; FInstantObject.Id := ''; AssertTrue('After ResetAttributes', FInstantObject.IsDefault); end; procedure TestTInstantObject.TestIsIdChanged; begin AssertTrue('Initial', FInstantObject.IsIdChanged); FInstantObject.Store; AssertFalse('After store', FInstantObject.IsIdChanged); FInstantObject.Id := 'PersonId'; AssertTrue('After change ID', FInstantObject.IsIdChanged); FInstantObject.Store; AssertFalse('After changed store', FInstantObject.IsIdChanged); end; procedure TestTInstantObject.TestIsOperationAllowed; var vOT: TInstantOperationType; begin for vOT := Low(TInstantOperationType) to High(TInstantOperationType) do AssertTrue(FInstantObject.IsOperationAllowed(vOT)); end; procedure TestTInstantObject.TestIsOwned; begin AssertFalse('TPerson', FInstantObject.IsOwned); end; procedure TestTInstantObject.TestIsPersistent; begin AssertFalse(FInstantObject.IsPersistent); end; procedure TestTInstantObject.TestMetadata; var vReturnValue: TInstantClassMetadata; begin vReturnValue := FInstantObject.Metadata; AssertNotNull(vReturnValue); AssertEquals('TPerson', FInstantObject.Metadata.Name); end; procedure TestTInstantObject.TestNewInstance; var vReturnValue: TObject; begin vReturnValue := FInstantObject.NewInstance; AssertNotNull(vReturnValue); AssertEquals('InstanceSize', TPerson.InstanceSize, vReturnValue.InstanceSize); end; procedure TestTInstantObject.TestObjectChangeCount; var vReturnValue: Integer; vObject: TEmail; begin AssertEquals(0, FInstantObject.ObjectChangeCount); vObject := TEmail.Create(FConn); AssertNotNull(vObject); vObject.Address := 'Object1'; vReturnValue := FInstantObject.AddObject(vObject); AssertEquals('vReturnValue', 0, vReturnValue); AssertEquals(1, FInstantObject.ObjectChangeCount); end; procedure TestTInstantObject.TestObjectClass; begin AssertEquals(TEmail, FInstantObject.ObjectClass); end; procedure TestTInstantObject.TestOwner; begin AssertTrue(FInstantObject.Owner = nil); end; procedure TestTInstantObject.TestOwnerAttribute; begin AssertTrue(FInstantObject.OwnerAttribute = nil); end; procedure TestTInstantObject.TestPersistentId; begin AssertEquals('', FInstantObject.PersistentId); FInstantObject.Store; AssertTrue(FInstantObject.Id <> ''); end; procedure TestTInstantObject.TestRefresh_RefreshAll; var vID: String; brok: TInstantMockBroker; begin FConn.StartTransaction; brok := FConn.Broker as TInstantMockBroker; brok.MockManager.StartSetUp; FInstantObject.Store; vID := FInstantObject.Id; brok.MockManager.EndSetUp; brok.MockManager.AddExpectation('InternalStoreObject ' + vID); brok.MockManager.Verify; FConn.CommitTransaction; brok.MockManager.StartSetUp; FInstantObject.Refresh; brok.MockManager.EndSetUp; brok.MockManager.AddExpectation('InternalRetrieveObject ' + vID); brok.MockManager.Verify; brok.MockManager.StartSetUp; FInstantObject.RefreshAll(FConn, nil); brok.MockManager.EndSetUp; brok.MockManager.AddExpectation('InternalRetrieveObject ' + vID); brok.MockManager.Verify; end; procedure TestTInstantObject.TestStore_Dispose; var vPhone: TPhone; vAddress: TAddress; vContact: TContact; vID, vID1: String; brok: TInstantMockBroker; vRet: Integer; begin AssertFalse(FInstantObject.IsPersistent); FInstantObject.Store; AssertTrue(FInstantObject.IsPersistent); FInstantObject.Dispose; AssertFalse(FInstantObject.IsPersistent); vContact := TContact.Create(FConn); vAddress := TAddress.Create(FConn); try FConn.StartTransaction; brok := FConn.Broker as TInstantMockBroker; brok.MockManager.StartSetUp; vContact.Name := 'MyContact'; vAddress.City := 'New York'; AssertTrue(vAddress.IsChanged); vAddress.Store; vID1 := vAddress.Id; vContact.AddressExt := vAddress; AssertEquals('vAddress', 1, vAddress.RefCount); AssertEquals('vContact.Address', 1, vContact.Address.RefCount); vPhone := TPhone.Create(FConn); vPhone.Name := 'Home'; vRet := vContact.AddPhone(vPhone); AssertEquals('vRet 1', 0, vRet); vPhone := TPhone.Create(FConn); vPhone.Name := 'Work'; vRet := vContact.AddPhone(vPhone); AssertEquals('vRet 2', 1, vRet); vContact.Store; vPhone.Store; AssertTrue('vContact.IsPersistent', vContact.IsPersistent); AssertFalse('vPhone.IsPersistent', vPhone.IsPersistent); AssertTrue('vAddress.IsPersistent', vAddress.IsPersistent); vAddress.City := 'London'; AssertTrue(vAddress.IsChanged); AssertTrue(vContact.IsChanged); vID := vContact.Id; vContact.Store; brok.MockManager.EndSetUp; brok.MockManager.AddExpectation('InternalStoreObject ' + vID1); brok.MockManager.AddExpectation('InternalStoreObject ' + vID); brok.MockManager.AddExpectation('InternalStoreObject ' + vID); brok.MockManager.Verify; FConn.CommitTransaction; brok.MockManager.StartSetUp; vContact.Phones[0].Number := '1234567'; AssertTrue(vContact.IsChanged); vContact.Store; vContact.Dispose; brok.MockManager.EndSetUp; brok.MockManager.AddExpectation('InternalStoreObject ' + vID); brok.MockManager.AddExpectation('InternalDisposeObject ' + vID); brok.MockManager.Verify; finally vContact.Free; end; end; procedure TestTInstantObject.TestUpdateCount; begin AssertEquals(0, FInstantObject.UpdateCount); end; initialization // Register any test cases with the test runner {$IFNDEF CURR_TESTS} RegisterTests([TestTInstantObject]); {$ENDIF} end. --- NEW FILE: TestInstantReference.pas --- unit TestInstantReference; interface uses fpcunit, InstantPersistence, InstantMock, TestModel; type // Test methods for class TInstantReference TestTInstantReference = class(TTestCase) private FConn: TInstantMockConnector; FInstantReference: TInstantReference; FOwner: TContact; public procedure SetUp; override; procedure TearDown; override; published procedure TestAssign; procedure TestDestroyObject_HasReference_HasValue; procedure TestLoadObjectFromStream; procedure TestObjectClass_ObjectClassName_ObjectId; procedure TestReferenceObject; procedure TestReferenceObject1; procedure TestReset; end; implementation uses SysUtils, Classes, InstantClasses, testregistry; procedure TestTInstantReference.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); FInstantReference := FOwner._Category; end; procedure TestTInstantReference.TearDown; begin FInstantReference := nil; FreeAndNil(FOwner); InstantModel.ClassMetadatas.Clear; FreeAndNil(FConn); end; procedure TestTInstantReference.TestAssign; var vSource: TInstantReference; vAttrMetadata: TInstantAttributeMetadata; vPart: TCategory; begin vPart := nil; vAttrMetadata := TInstantAttributeMetadata.Create(nil); vAttrMetadata.AttributeClass := TInstantReference; vSource := TInstantReference.Create(FOwner, vAttrMetadata); try vPart := TCategory.Create(FConn); FInstantReference.Value := vPart; AssertTrue('Value HasVal', FInstantReference.HasValue); AssertFalse('vSource HasVal', vSource.HasValue); vSource.Assign(FInstantReference); AssertTrue('Assign HasVal', vSource.HasValue); AssertNotSame(vSource, FInstantReference.Value); finally vPart.Free; vSource.Free; vAttrMetadata.Free; end; end; procedure TestTInstantReference.TestDestroyObject_HasReference_HasValue; var vObj: TCategory; begin AssertTrue('Initial HasRef', FInstantReference.HasReference); AssertFalse('Initial HasVal', FInstantReference.HasValue); vObj := TCategory.Create(FConn); try FInstantReference.Value := vObj; AssertTrue('Value HasRef', FInstantReference.HasReference); AssertTrue('Value HasVal', FInstantReference.HasValue); AssertSame(vObj, FInstantReference.Value); FInstantReference.DestroyObject; AssertFalse('DestroyObject HasVal', FInstantReference.HasValue); AssertFalse('DestroyObject HasRef', FInstantReference.HasReference); finally vObj.Free; end; end; procedure TestTInstantReference.TestLoadObjectFromStream; var vObject: TCategory; vReturnValue: Boolean; vStream: TStream; begin vObject := TCategory.Create(FConn); try AssertNotNull('Create object', vObject); AssertEquals('Object RefCount 1', 1, vObject.RefCount); vReturnValue := FInstantReference.AttachObject(vObject); AssertTrue('AttachObject', vReturnValue); AssertTrue('AttachObject HasVal', FInstantReference.HasValue); AssertTrue('AttachObject HasRef', FInstantReference.HasReference); AssertEquals('Object RefCount 2', 2, vObject.RefCount); vStream := TInstantStream.Create; try FInstantReference.SaveObjectToStream(vStream); AssertTrue('vStream.Size check', vStream.Size > 0); FInstantReference.Value := nil; AssertEquals('Object RefCount 3', 1, vObject.RefCount); AssertFalse('Value HasVal', FInstantReference.HasValue); AssertFalse('Value HasRef', FInstantReference.HasReference); vStream.Position := 0; FInstantReference.LoadObjectFromStream(vStream); AssertTrue('LoadObjectFromStream HasVal', FInstantReference.HasValue); AssertTrue('LoadObjectFromStream HasRef', FInstantReference.HasReference); AssertEquals('Object RefCount 4', 1, vObject.RefCount); finally vStream.Free; end; finally vObject.Free; end; end; procedure TestTInstantReference.TestObjectClass_ObjectClassName_ObjectId; var vObject: TCategory; vReturnValue: Boolean; begin vObject := TCategory.Create(FConn); try AssertNotNull('Create object', vObject); vObject.Id := 'Object.Id'; vReturnValue := FInstantReference.AttachObject(vObject); AssertTrue('AttachObject', vReturnValue); AssertEquals('ObjectClass', TCategory, FInstantReference.ObjectClass); AssertEquals('ObjectClassName', 'TCategory', FInstantReference.ObjectClassName); AssertEquals('ObjectId', 'Object.Id', FInstantReference.ObjectId); finally vObject.Free; end; end; procedure TestTInstantReference.TestReferenceObject; var vObjectId: string; vObjectClass: TInstantObjectClass; begin AssertTrue('Initial HasRef', FInstantReference.HasReference); AssertFalse('Initial HasVal', FInstantReference.HasValue); vObjectId := 'ObjectId'; vObjectClass := TCategory; FInstantReference.ReferenceObject(vObjectClass, vObjectId); AssertTrue('Final HasRef', FInstantReference.HasReference); AssertFalse('Final HasVal', FInstantReference.HasValue); end; procedure TestTInstantReference.TestReferenceObject1; var vObjectId: string; vObjectClassName: string; begin AssertTrue('Initial HasRef', FInstantReference.HasReference); AssertFalse('Initial HasVal', FInstantReference.HasValue); vObjectId := 'ObjectId'; vObjectClassName := 'TCategory'; FInstantReference.ReferenceObject(vObjectClassName, vObjectId); AssertTrue('Final HasRef', FInstantReference.HasReference); AssertFalse('Final HasVal', FInstantReference.HasValue); end; procedure TestTInstantReference.TestReset; var vObj: TCategory; begin AssertTrue('Initial HasRef', FInstantReference.HasReference); AssertFalse('Initial HasVal', FInstantReference.HasValue); vObj := TCategory.Create(FConn); try FInstantReference.Value := vObj; AssertTrue(FInstantReference.HasReference); AssertTrue(FInstantReference.HasValue); AssertSame(vObj, FInstantReference.Value); FInstantReference.Reset; AssertFalse('Final HasRef', FInstantReference.HasReference); AssertFalse('Final HasVal', FInstantReference.HasValue); finally vObj.Free; end; end; initialization // Register any test cases with the test runner {$IFNDEF CURR_TESTS} RegisterTests([TestTInstantReference]); {$ENDIF} end. |
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] |
From: Carlo B. <car...@us...> - 2005-06-05 20:30:25
|
Update of /cvsroot/instantobjects/Source/Brokers/XML In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7129/Source/Brokers/XML Modified Files: InstantXML.pas InstantXMLConnectionDefEdit.pas Log Message: Bug fixing for D5: Application.HandleException Index: InstantXML.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Brokers/XML/InstantXML.pas,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** InstantXML.pas 21 Mar 2005 02:33:06 -0000 1.4 --- InstantXML.pas 5 Jun 2005 20:30:00 -0000 1.5 *************** *** 29,44 **** unit InstantXML; ! {$I InstantDefines.inc} interface uses - {$IFDEF MSWINDOWS} - FileCtrl, - {$ENDIF} Classes, DB, InstantPersistence, InstantCommand, Contnrs; const ! XMLHEADER = '<?xml version="1.0" encoding="UTF-8"?>'; XML_EXT = 'xml'; DOT_XML_EXT = '.'+XML_EXT; --- 29,42 ---- unit InstantXML; ! {$I ../../Core/InstantDefines.inc} interface uses Classes, DB, InstantPersistence, InstantCommand, Contnrs; const ! XML_UTF8_HEADER = '<?xml version="1.0" encoding="UTF-8"?>'; ! XML_ISO_HEADER = '<?xml version="1.0" encoding="ISO-8859-1"?>'; XML_EXT = 'xml'; DOT_XML_EXT = '.'+XML_EXT; *************** *** 218,223 **** uses - InstantXMLConnectionDefEdit, InstantPresentation, SysUtils, InstantConsts, InstantClasses, TypInfo, {$IFDEF MSWINDOWS} Controls; --- 216,221 ---- uses SysUtils, InstantConsts, InstantClasses, TypInfo, + InstantXMLConnectionDefEdit, {$IFDEF MSWINDOWS} Controls; *************** *** 579,583 **** StorageName : string; begin - { TODO: Build database from Scheme } CheckConnection; //build RootFolder if not exists --- 577,580 ---- *************** *** 918,940 **** strstream: TStringStream; fileStream: TFileStream; ! strUtf8: string; begin strstream := TStringStream.Create(''); try - strStream.Write(XMLHEADER, Length(XMLHEADER)); InstantWriteObject(strStream, sfXML, AObject); {$IFNDEF VER130} if FXMLFileFormat in [xffUtf8, xffUtf8Bot] then ! strUtf8 := AnsiToUtf8 (strStream.DataString); {$ELSE} ! strUtf8 := strStream.DataString; {$ENDIF} finally strStream.Free; end; - fileStream := TFileStream.Create(FileName, fmCreate); try ! Result := fileStream.Write (strUtf8[1], Length (strUtf8)) <> 0; finally fileStream.Free; --- 915,937 ---- strstream: TStringStream; fileStream: TFileStream; ! DataStr : string; begin strstream := TStringStream.Create(''); try InstantWriteObject(strStream, sfXML, AObject); {$IFNDEF VER130} if FXMLFileFormat in [xffUtf8, xffUtf8Bot] then ! DataStr := AnsiToUtf8(XML_UTF8_HEADER+strStream.DataString) ! else ! DataStr := XML_ISO_HEADER+strStream.DataString; {$ELSE} ! DataStr := strStream.DataString; {$ENDIF} finally strStream.Free; end; fileStream := TFileStream.Create(FileName, fmCreate); try ! Result := fileStream.Write (DataStr[1], Length (DataStr)) <> 0; finally fileStream.Free; Index: InstantXMLConnectionDefEdit.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Brokers/XML/InstantXMLConnectionDefEdit.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** InstantXMLConnectionDefEdit.pas 21 Mar 2005 02:32:47 -0000 1.3 --- InstantXMLConnectionDefEdit.pas 5 Jun 2005 20:30:00 -0000 1.4 *************** *** 28,33 **** unit InstantXMLConnectionDefEdit; ! {$I InstantDefines.inc} interface --- 28,36 ---- unit InstantXMLConnectionDefEdit; + {$IFNDEF VER130} + {$WARN UNIT_PLATFORM OFF} + {$ENDIF} ! {$I ../../Core/InstantDefines.inc} interface *************** *** 39,43 **** {$ENDIF} {$IFDEF LINUX} ! QForms, QStdCtrls, QControls, QExtCtrls, QDialogs; {$ENDIF} --- 42,46 ---- {$ENDIF} {$IFDEF LINUX} ! QForms, QStdCtrls, QControls, QExtCtrls; {$ENDIF} *************** *** 73,79 **** {$R *.dfm} - {$IFDEF MSWINDOWS} uses FileCtrl; {$ENDIF} --- 76,84 ---- {$R *.dfm} uses + {$IFDEF MSWINDOWS} FileCtrl; + {$ELSE} + QDialogs; {$ENDIF} |
From: Carlo B. <car...@us...> - 2005-06-05 20:30:24
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7129/Source/Core Modified Files: InstantPresentation.pas Log Message: Bug fixing for D5: Application.HandleException Index: InstantPresentation.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPresentation.pas,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** InstantPresentation.pas 8 May 2005 20:23:11 -0000 1.17 --- InstantPresentation.pas 5 Jun 2005 20:30:00 -0000 1.18 *************** *** 637,642 **** uses ! {$IFDEF MSWINDOWS} ! //Forms, {$ENDIF} {$IFDEF LINUX} --- 637,642 ---- uses ! {$IFDEF VER130} ! Forms, {$ENDIF} {$IFDEF LINUX} *************** *** 4129,4134 **** --- 4129,4138 ---- Exposer.DataEvent(deFieldChange, Integer(Field)); except + {$IFDEF VER130} + Application.HandleException(Self); + {$ELSE} if Assigned(Classes.ApplicationHandleException) then Classes.ApplicationHandleException(Self); + {$ENDIF} end; inherited Destroy; |
From: Carlo B. <car...@us...> - 2005-06-05 20:30:24
|
Update of /cvsroot/instantobjects/Source/Brokers/UIB In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7129/Source/Brokers/UIB Modified Files: InstantUIB.pas Log Message: Bug fixing for D5: Application.HandleException Index: InstantUIB.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Brokers/UIB/InstantUIB.pas,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** InstantUIB.pas 22 Feb 2005 10:59:22 -0000 1.7 --- InstantUIB.pas 5 Jun 2005 20:29:59 -0000 1.8 *************** *** 30,34 **** unit InstantUIB; ! {$I ..\..\Core\InstantDefines.inc} {$IFDEF D7+} --- 30,34 ---- unit InstantUIB; ! {$I ../../Core/InstantDefines.inc} {$IFDEF D7+} |
From: Steven M. <sr...@us...> - 2005-05-23 00:29:55
|
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4881 Modified Files: TestInstantComplex.pas TestInstantElement.pas TestInstantPart.pas Log Message: Update to tests Index: TestInstantPart.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantPart.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantPart.pas 14 May 2005 07:38:37 -0000 1.1 --- TestInstantPart.pas 23 May 2005 00:29:45 -0000 1.2 *************** *** 67,71 **** FInstantPart.Assign(vSource); AssertTrue(FInstantPart.HasValue); ! AssertNotSame(vSource, FInstantPart.Value); finally vSource.Free; --- 67,71 ---- FInstantPart.Assign(vSource); AssertTrue(FInstantPart.HasValue); ! AssertNotSame(vPart, FInstantPart.Value); finally vSource.Free; Index: TestInstantElement.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantElement.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantElement.pas 14 May 2005 07:38:37 -0000 1.1 --- TestInstantElement.pas 23 May 2005 00:29:45 -0000 1.2 *************** *** 52,64 **** vObject := TInstantObject.Create(FConn); vObject.Id := 'Object.Id'; ! AssertNotNull('vObject', vObject); vReturnValue := FInstantElement.AttachObject(vObject); AssertTrue('AttachObject', vReturnValue); AssertSame(vObject, FInstantElement.Value); ! AssertTrue(FInstantElement.HasValue); - // ToDo: Why does this return false? vReturnValue := FInstantElement.DetachObject(vObject); ! AssertTrue('DetachObject', vReturnValue); // Fails?? end; --- 52,67 ---- vObject := TInstantObject.Create(FConn); vObject.Id := 'Object.Id'; ! AssertEquals('Object RefCount 1', 1, vObject.RefCount); ! vReturnValue := FInstantElement.AttachObject(vObject); AssertTrue('AttachObject', vReturnValue); AssertSame(vObject, FInstantElement.Value); ! AssertTrue('FInstantElement HasValue', FInstantElement.HasValue); ! 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; *************** *** 76,82 **** --- 79,88 ---- vObject := TInstantObject.Create(FConn); AssertNotNull('Create object', vObject); + AssertEquals('Object RefCount 1', 1, vObject.RefCount); vReturnValue := FInstantElement.AttachObject(vObject); AssertTrue('AttachObject', vReturnValue); AssertTrue(FInstantElement.HasValue); + AssertEquals('Value RefCount 1', 1, FInstantElement.Value.RefCount); + AssertEquals('Object RefCount 2', 1, vObject.RefCount); vStream := TInstantStream.Create; *************** *** 86,92 **** --- 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; *************** *** 98,101 **** --- 108,113 ---- {$IFNDEF CURR_TESTS} RegisterTests([TestTInstantElement]); + {$ELSE} + RegisterTests([TestTInstantElement]); {$ENDIF} Index: TestInstantComplex.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantComplex.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantComplex.pas 14 May 2005 07:38:37 -0000 1.1 --- TestInstantComplex.pas 23 May 2005 00:29:40 -0000 1.2 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence, InstantMock; type *************** *** 11,15 **** --- 11,17 ---- private FAttrMetadata: TInstantAttributeMetadata; + FConn: TInstantMockConnector; FInstantComplex: TInstantComplex; + FOwner: TInstantObject; public procedure SetUp; override; *************** *** 30,37 **** procedure TestTInstantComplex.SetUp; begin FAttrMetadata := TInstantAttributeMetadata.Create(nil); FAttrMetadata.AttributeClass := TInstantComplex; FAttrMetadata.Name := 'AttrMetadataName'; ! FInstantComplex := TInstantComplex.Create(nil, FAttrMetadata); end; --- 32,42 ---- procedure TestTInstantComplex.SetUp; begin + FConn := TInstantMockConnector.Create(nil); + FConn.BrokerClass := TInstantMockBroker; + FOwner := TInstantObject.Create(FConn); FAttrMetadata := TInstantAttributeMetadata.Create(nil); FAttrMetadata.AttributeClass := TInstantComplex; FAttrMetadata.Name := 'AttrMetadataName'; ! FInstantComplex := TInstantComplex.Create(FOwner, FAttrMetadata); end; *************** *** 40,43 **** --- 45,50 ---- FreeAndNil(FInstantComplex); FreeAndNil(FAttrMetadata); + FreeAndNil(FOwner); + FreeAndNil(FConn); end; *************** *** 78,81 **** --- 85,90 ---- {$IFNDEF CURR_TESTS} RegisterTests([TestTInstantComplex]); + {$ELSE} + RegisterTests([TestTInstantComplex]); {$ENDIF} |
From: Steven M. <sr...@us...> - 2005-05-14 07:38:50
|
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4250 Modified Files: TestIO.dpr TestInstantBlob.pas Added Files: TestInstantPart.pas TestInstantElement.pas TestInstantComplex.pas Log Message: Added tests for TInstantComplex, Element and Part classes. Trivial tidy up for TestInstantBlob code. --- NEW FILE: TestInstantPart.pas --- unit TestInstantPart; interface uses fpcunit, InstantPersistence, InstantMock; type // Test methods for class TInstantPart TestTInstantPart = class(TTestCase) private FAttrMetadata: TInstantAttributeMetadata; FConn: TInstantMockConnector; FInstantPart: TInstantPart; FOwner: TInstantObject; public procedure SetUp; override; procedure TearDown; override; published procedure TestAssign; procedure TestAllowOwned; procedure TestIsChanged; procedure TestIsDefault; procedure TestHasValue; procedure TestUnchanged; procedure TestValue_Reset; end; implementation uses SysUtils, testregistry; procedure TestTInstantPart.SetUp; begin 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; procedure TestTInstantPart.TestAssign; var vSource: TInstantPart; vAttrMetadata: TInstantAttributeMetadata; vPart: TInstantObject; begin vAttrMetadata := TInstantAttributeMetadata.Create(nil); vAttrMetadata.AttributeClass := TInstantPart; 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(vSource, FInstantPart.Value); finally vSource.Free; end; end; 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; AssertTrue(FInstantPart.IsChanged); end; procedure TestTInstantPart.TestIsDefault; var vPart: TInstantObject; begin AssertTrue(FInstantPart.IsDefault); vPart := TInstantObject.Create(FConn); vPart.Id := 'PartId'; FInstantPart.Value := vPart; AssertFalse(FInstantPart.IsDefault); end; procedure TestTInstantPart.TestHasValue; begin AssertFalse(FInstantPart.HasValue); FInstantPart.Value := TInstantObject.Create(FConn); AssertTrue(FInstantPart.HasValue); end; procedure TestTInstantPart.TestUnchanged; begin FInstantPart.Changed; AssertTrue(FInstantPart.IsChanged); FInstantPart.Unchanged; AssertFalse(FInstantPart.IsChanged); end; procedure TestTInstantPart.TestValue_Reset; var vFirstObj: TInstantObject; 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; initialization // Register any test cases with the test runner {$IFNDEF CURR_TESTS} RegisterTests([TestTInstantPart]); {$ENDIF} end. Index: TestInstantBlob.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantBlob.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantBlob.pas 10 May 2005 05:31:08 -0000 1.1 --- TestInstantBlob.pas 14 May 2005 07:38:36 -0000 1.2 *************** *** 33,39 **** procedure TestTInstantBlob.SetUp; begin - // FConn := TInstantMockConnector.Create(nil); - // FConn.BrokerClass := TInstantMockBroker; - // FOwner := TInstantObject.Create(FConn); FAttrMetadata := TInstantAttributeMetadata.Create(nil); FAttrMetadata.AttributeClass := TInstantBlob; --- 33,36 ---- *************** *** 46,51 **** FreeAndNil(FInstantBlob); FreeAndNil(FAttrMetadata); - // FreeAndNil(FOwner); - // FreeAndNil(FConn); end; --- 43,46 ---- *************** *** 233,237 **** end; - initialization // Register any test cases with the test runner --- 228,231 ---- --- NEW FILE: TestInstantComplex.pas --- unit TestInstantComplex; interface uses fpcunit, InstantPersistence; type // Test methods for class TInstantComplex TestTInstantComplex = class(TTestCase) private FAttrMetadata: TInstantAttributeMetadata; FInstantComplex: TInstantComplex; public procedure SetUp; override; procedure TearDown; override; published procedure TestAllowOwned; procedure TestAttachObject; procedure TestConnector; procedure TestDetachObject; procedure TestRequiredClass; procedure TestRequiredClassName; end; implementation uses SysUtils, testregistry; procedure TestTInstantComplex.SetUp; begin FAttrMetadata := TInstantAttributeMetadata.Create(nil); FAttrMetadata.AttributeClass := TInstantComplex; FAttrMetadata.Name := 'AttrMetadataName'; FInstantComplex := TInstantComplex.Create(nil, FAttrMetadata); end; procedure TestTInstantComplex.TearDown; begin FreeAndNil(FInstantComplex); FreeAndNil(FAttrMetadata); end; procedure TestTInstantComplex.TestAllowOwned; begin AssertFalse(FInstantComplex.AllowOwned); end; procedure TestTInstantComplex.TestAttachObject; begin AssertFalse(FInstantComplex.AttachObject(nil)); end; procedure TestTInstantComplex.TestConnector; begin AssertNotNull(FInstantComplex.Connector); end; procedure TestTInstantComplex.TestDetachObject; begin AssertFalse(FInstantComplex.DetachObject(nil)); end; procedure TestTInstantComplex.TestRequiredClass; begin AssertEquals(TInstantObject, FInstantComplex.RequiredClass); end; procedure TestTInstantComplex.TestRequiredClassName; begin AssertEquals('', FInstantComplex.RequiredClassName); FAttrMetadata.ObjectClassName := 'TInstantObject'; AssertEquals('TInstantObject', FInstantComplex.RequiredClassName); end; initialization // Register any test cases with the test runner {$IFNDEF CURR_TESTS} RegisterTests([TestTInstantComplex]); {$ENDIF} end. Index: TestIO.dpr =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestIO.dpr,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** TestIO.dpr 10 May 2005 05:31:08 -0000 1.10 --- TestIO.dpr 14 May 2005 07:38:36 -0000 1.11 *************** *** 38,42 **** TestInstantFloat in 'TestInstantFloat.pas', TestInstantCurrency in 'TestInstantCurrency.pas', ! TestInstantBlob in 'TestInstantBlob.pas'; {$R *.res} --- 38,45 ---- TestInstantFloat in 'TestInstantFloat.pas', TestInstantCurrency in 'TestInstantCurrency.pas', ! TestInstantBlob in 'TestInstantBlob.pas', ! TestInstantComplex in 'TestInstantComplex.pas', ! TestInstantElement in 'TestInstantElement.pas', ! TestInstantPart in 'TestInstantPart.pas'; {$R *.res} --- NEW FILE: TestInstantElement.pas --- unit TestInstantElement; interface uses fpcunit, InstantPersistence, InstantMock; type // Test methods for class TInstantElement TestTInstantElement = class(TTestCase) private FAttrMetadata: TInstantAttributeMetadata; FConn: TInstantMockConnector; FInstantElement: TInstantElement; FOwner: TInstantObject; public procedure SetUp; override; procedure TearDown; override; published procedure TestAttach_DetachObject; procedure TestHasValue; procedure TestSaveObjectTo_FromStream; end; implementation uses SysUtils, Classes, InstantClasses, testregistry; procedure TestTInstantElement.SetUp; begin 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; procedure TestTInstantElement.TestAttach_DetachObject; var vReturnValue: Boolean; vObject: TInstantObject; begin vObject := TInstantObject.Create(FConn); vObject.Id := 'Object.Id'; AssertNotNull('vObject', vObject); vReturnValue := FInstantElement.AttachObject(vObject); AssertTrue('AttachObject', vReturnValue); AssertSame(vObject, FInstantElement.Value); AssertTrue(FInstantElement.HasValue); // ToDo: Why does this return false? vReturnValue := FInstantElement.DetachObject(vObject); AssertTrue('DetachObject', vReturnValue); // Fails?? end; procedure TestTInstantElement.TestHasValue; begin AssertFalse(FInstantElement.HasValue); end; procedure TestTInstantElement.TestSaveObjectTo_FromStream; var vObject: TInstantObject; vReturnValue: Boolean; vStream: TStream; begin vObject := TInstantObject.Create(FConn); AssertNotNull('Create object', vObject); vReturnValue := FInstantElement.AttachObject(vObject); AssertTrue('AttachObject', vReturnValue); AssertTrue(FInstantElement.HasValue); vStream := TInstantStream.Create; try FInstantElement.SaveObjectToStream(vStream); AssertTrue('vStream.Size check', vStream.Size > 0); FInstantElement.Value := nil; AssertFalse(FInstantElement.HasValue); vStream.Position := 0; FInstantElement.LoadObjectFromStream(vStream); AssertTrue(FInstantElement.HasValue); finally vStream.Free; end; end; initialization // Register any test cases with the test runner {$IFNDEF CURR_TESTS} RegisterTests([TestTInstantElement]); {$ENDIF} end. |
From: Steven M. <sr...@us...> - 2005-05-10 22:26:55
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10490 Modified Files: InstantPersistence.pas Log Message: TInstantBlob.Initialize fix for handling of Metadata.DefaultValue = ''. Index: InstantPersistence.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPersistence.pas,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** InstantPersistence.pas 2 May 2005 23:26:32 -0000 1.37 --- InstantPersistence.pas 10 May 2005 22:26:45 -0000 1.38 *************** *** 5359,5369 **** procedure TInstantBlob.Initialize; begin ! if Assigned(Metadata) and (Metadata.Defaultvalue <> '') then ! try ! Write(Metadata.DefaultValue[1], 0, Length(Metadata.DefaultValue)); ! except ! on E: Exception do ! raise ConversionError(E); ! end; end; --- 5359,5374 ---- procedure TInstantBlob.Initialize; begin ! if Assigned(Metadata) then ! if (Metadata.Defaultvalue <> '') then ! begin ! try ! Write(Metadata.DefaultValue[1], 0, Length(Metadata.DefaultValue)); ! except ! on E: Exception do ! raise ConversionError(E); ! end; ! end ! else ! Stream.Clear; end; |
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2091 Modified Files: TestIO.dpr TestInstantAttribute.pas TestInstantBoolean.pas TestInstantClassMetadata.pas TestInstantCurrency.pas TestInstantDateTime.pas TestInstantFieldMetadata.pas TestInstantFloat.pas TestInstantIndexMetadata.pas TestInstantInteger.pas TestInstantMetadata.pas TestInstantNumeric.pas TestInstantScheme.pas TestInstantString.pas TestInstantTableMetadata.pas Added Files: Picture.bmp TestBlobText.txt TestInstantBlob.pas Log Message: Added tests for TInstantBlob class and tidied up code in previous test units. Index: TestInstantFloat.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantFloat.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantFloat.pas 8 May 2005 20:18:25 -0000 1.2 --- TestInstantFloat.pas 10 May 2005 05:31:08 -0000 1.3 *************** *** 53,61 **** procedure TestTInstantFloat.TestAsCurrency; begin ! FInstantFloat.AsCurrency := 23.45; ! AssertEquals('Set AsCurrency is incorrect!', 23.45, FInstantFloat.Value); ! AssertEquals('Get AsCurrency is incorrect!', 23.45, ! FInstantFloat.AsCurrency); end; --- 53,63 ---- procedure TestTInstantFloat.TestAsCurrency; + var + vCurr: Currency; begin ! vCurr := 23.45; ! FInstantFloat.AsCurrency := vCurr; ! AssertEquals(23.45, FInstantFloat.Value); ! AssertEquals(vCurr, FInstantFloat.AsCurrency); end; *************** *** 63,68 **** begin FInstantFloat.AsFloat := 89.45; ! AssertEquals('Set AsFloat is incorrect!', 89.45, FInstantFloat.Value); ! AssertEquals('Get AsFloat is incorrect!', 89.45, FInstantFloat.AsFloat); end; --- 65,70 ---- begin FInstantFloat.AsFloat := 89.45; ! AssertEquals(89.45, FInstantFloat.Value); ! AssertEquals(89.45, FInstantFloat.AsFloat); end; *************** *** 70,75 **** begin FInstantFloat.AsInteger := 89; ! AssertEquals('Set AsInteger is incorrect!', 89.0, FInstantFloat.Value); ! AssertEquals('Get AsInteger is incorrect!', 89.0, FInstantFloat.AsInteger); end; --- 72,77 ---- begin FInstantFloat.AsInteger := 89; ! AssertEquals(89.0, FInstantFloat.Value); ! AssertEquals(89.0, FInstantFloat.AsInteger); end; *************** *** 78,87 **** vSource: TInstantFloat; begin ! AssertEquals('Value is incorrect!', 1.3, FInstantFloat.Value); vSource := TInstantFloat.Create; try VSource.Value := 4.3; FInstantFloat.Assign(vSource); ! AssertEquals('Value is incorrect!', 4.3, FInstantFloat.Value); finally vSource.Free; --- 80,89 ---- vSource: TInstantFloat; begin ! AssertEquals(1.3, FInstantFloat.Value); vSource := TInstantFloat.Create; try VSource.Value := 4.3; FInstantFloat.Assign(vSource); ! AssertEquals(4.3, FInstantFloat.Value); finally vSource.Free; *************** *** 92,97 **** begin FInstantFloat.AsString := '1' + DecimalSeparator + '3'; ! AssertEquals('Set AsString is incorrect!', 1.3, FInstantFloat.Value); ! AssertEquals('Get AsString is incorrect!', '1' + DecimalSeparator + '3', FInstantFloat.AsString); end; --- 94,99 ---- begin FInstantFloat.AsString := '1' + DecimalSeparator + '3'; ! AssertEquals(1.3, FInstantFloat.Value); ! AssertEquals('1' + DecimalSeparator + '3', FInstantFloat.AsString); end; *************** *** 99,128 **** begin FInstantFloat.AsVariant := 15.1; ! AssertEquals('Set AsVariant is incorrect!', 15.1, FInstantFloat.Value); ! AssertEquals('Get AsVariant is incorrect!', 15.1, FInstantFloat.AsVariant); end; procedure TestTInstantFloat.TestReset; begin ! AssertNotNull('Metadata is nil!', FInstantFloat.Metadata); // Metadata.DefaultValue is ''; FInstantFloat.Reset; ! AssertEquals('Reset value is incorrect!', 1.3, FInstantFloat.Value); FInstantFloat.Metadata.DefaultValue := '15' + DecimalSeparator + '7'; FInstantFloat.Reset; ! AssertEquals('Reset value is incorrect!', 15.7, FInstantFloat.Value); FInstantFloat.Metadata := nil; ! AssertNull('Metadata is not nil!', FInstantFloat.Metadata); FInstantFloat.Reset; ! AssertEquals('Reset value is incorrect!', 0.0, FInstantFloat.Value); end; procedure TestTInstantFloat.TestValue; begin ! AssertEquals('Value is incorrect!', 1.3, FInstantFloat.Value); FInstantFloat.Value := 97.2; ! AssertEquals('Value is incorrect!', 97.2, FInstantFloat.Value); end; --- 101,130 ---- begin FInstantFloat.AsVariant := 15.1; ! AssertEquals(15.1, FInstantFloat.Value); ! AssertEquals(15.1, FInstantFloat.AsVariant); end; procedure TestTInstantFloat.TestReset; begin ! AssertNotNull(FInstantFloat.Metadata); // Metadata.DefaultValue is ''; FInstantFloat.Reset; ! AssertEquals(1.3, FInstantFloat.Value); FInstantFloat.Metadata.DefaultValue := '15' + DecimalSeparator + '7'; FInstantFloat.Reset; ! AssertEquals(15.7, FInstantFloat.Value); FInstantFloat.Metadata := nil; ! AssertNull(FInstantFloat.Metadata); FInstantFloat.Reset; ! AssertEquals(0.0, FInstantFloat.Value); end; procedure TestTInstantFloat.TestValue; begin ! AssertEquals(1.3, FInstantFloat.Value); FInstantFloat.Value := 97.2; ! AssertEquals(97.2, FInstantFloat.Value); end; *************** *** 134,136 **** end. ! --- 136,138 ---- end. ! \ No newline at end of file Index: TestInstantAttribute.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantAttribute.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantAttribute.pas 7 May 2005 04:59:48 -0000 1.1 --- TestInstantAttribute.pas 10 May 2005 05:31:08 -0000 1.2 *************** *** 3,7 **** interface ! uses fpcunit, InstantPersistence, InstantMock; type --- 3,7 ---- interface ! uses fpcunit, InstantPersistence; type *************** *** 11,17 **** private FAttrMetadata: TInstantAttributeMetadata; - FConn: TInstantMockConnector; FInstantAttribute: TInstantAttribute; - FOwner: TInstantObject; public procedure SetUp; override; --- 11,15 ---- *************** *** 34,45 **** procedure TestTInstantAttribute.SetUp; begin - FConn := TInstantMockConnector.Create(nil); - FConn.BrokerClass := TInstantMockBroker; - FOwner := TInstantObject.Create(FConn); FAttrMetadata := TInstantAttributeMetadata.Create(nil); FAttrMetadata.AttributeClass := TInstantString; FAttrMetadata.Name := 'AttrMetadataName'; // TInstantAttribute is abstract so use TInstantString ! FInstantAttribute := TInstantString.Create(FOwner, FAttrMetadata); end; --- 32,40 ---- 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; *************** *** 48,64 **** FreeAndNil(FInstantAttribute); FreeAndNil(FAttrMetadata); - FreeAndNil(FOwner); - FreeAndNil(FConn); end; procedure TestTInstantAttribute.TestChange; begin ! AssertFalse('IsChanged is true!', FInstantAttribute.IsChanged); FInstantAttribute.Value := 'NewString'; ! AssertTrue('IsChanged is false!', FInstantAttribute.IsChanged); FInstantAttribute.UnChanged; ! AssertFalse('IsChanged is true!', FInstantAttribute.IsChanged); FInstantAttribute.Changed; ! AssertTrue('IsChanged is false!', FInstantAttribute.IsChanged); end; --- 43,57 ---- FreeAndNil(FInstantAttribute); FreeAndNil(FAttrMetadata); end; procedure TestTInstantAttribute.TestChange; begin ! AssertFalse(FInstantAttribute.IsChanged); FInstantAttribute.Value := 'NewString'; ! AssertTrue(FInstantAttribute.IsChanged); FInstantAttribute.UnChanged; ! AssertFalse(FInstantAttribute.IsChanged); FInstantAttribute.Changed; ! AssertTrue(FInstantAttribute.IsChanged); end; *************** *** 78,144 **** begin FInstantAttribute.Value := 'StringValue'; ! AssertEquals('DisplayText is incorrect!', 'StringValue', ! FInstantAttribute.DisplayText); FInstantAttribute.Metadata.EditMask := '!CCCCCC'; ! AssertEquals('DisplayText is incorrect!', 'gValue', ! FInstantAttribute.DisplayText); FInstantAttribute.Value := 'NewString'; FInstantAttribute.Metadata.EditMask := 'CCCCCC'; ! AssertEquals('DisplayText is incorrect!', 'NewStr', ! FInstantAttribute.DisplayText); end; procedure TestTInstantAttribute.TestIsDefault; begin ! AssertTrue('Value is not default!', FInstantAttribute.IsDefault); FInstantAttribute.Value := 'NewString'; ! AssertFalse('Value is default!', FInstantAttribute.IsDefault); end; procedure TestTInstantAttribute.TestIsIndexed; begin ! AssertFalse('Attribute is indexed!', FInstantAttribute.IsIndexed); FInstantAttribute.Metadata.IsIndexed := True; ! AssertTrue('Attribute is not indexed!', FInstantAttribute.IsIndexed); end; procedure TestTInstantAttribute.TestIsMandatory; begin ! AssertFalse('Attribute is Mandatory!', FInstantAttribute.IsMandatory); FInstantAttribute.Metadata.IsIndexed := True; ! AssertTrue('Attribute is not Mandatory!', FInstantAttribute.IsMandatory); FInstantAttribute.Metadata.IsRequired := True; ! AssertTrue('Attribute is not Mandatory!', FInstantAttribute.IsMandatory); FInstantAttribute.Metadata.IsIndexed := False; ! AssertTrue('Attribute is not Mandatory!', FInstantAttribute.IsMandatory); end; procedure TestTInstantAttribute.TestIsRequired; begin ! AssertFalse('Attribute is required!', FInstantAttribute.IsRequired); FInstantAttribute.Metadata.IsRequired := True; ! AssertTrue('Attribute is not required!', FInstantAttribute.IsRequired); end; procedure TestTInstantAttribute.TestMetadata; begin ! AssertNotNull('Metadata is nil!', FInstantAttribute.Metadata); ! AssertEquals('Metdata name is incorrect!', 'AttrMetadataName', ! FInstantAttribute.Metadata.Name); FInstantAttribute.Metadata := nil; ! AssertNull('Metadata is not nil!', FInstantAttribute.Metadata); FInstantAttribute.Reset; FInstantAttribute.Metadata := FAttrMetadata; ! AssertNotNull('Metadata is nil!', FInstantAttribute.Metadata); ! AssertEquals('Metdata name is incorrect!', 'AttrMetadataName', ! FInstantAttribute.Metadata.Name); end; --- 71,132 ---- begin FInstantAttribute.Value := 'StringValue'; ! AssertEquals('StringValue', FInstantAttribute.DisplayText); FInstantAttribute.Metadata.EditMask := '!CCCCCC'; ! AssertEquals('gValue', FInstantAttribute.DisplayText); FInstantAttribute.Value := 'NewString'; FInstantAttribute.Metadata.EditMask := 'CCCCCC'; ! AssertEquals('NewStr', FInstantAttribute.DisplayText); end; procedure TestTInstantAttribute.TestIsDefault; begin ! AssertTrue(FInstantAttribute.IsDefault); FInstantAttribute.Value := 'NewString'; ! AssertFalse(FInstantAttribute.IsDefault); end; 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; procedure TestTInstantAttribute.TestIsRequired; begin ! AssertFalse(FInstantAttribute.IsRequired); FInstantAttribute.Metadata.IsRequired := True; ! AssertTrue(FInstantAttribute.IsRequired); end; 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; Index: TestInstantIndexMetadata.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantIndexMetadata.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantIndexMetadata.pas 3 May 2005 04:52:37 -0000 1.1 --- TestInstantIndexMetadata.pas 10 May 2005 05:31:08 -0000 1.2 *************** *** 60,85 **** procedure TestTInstantIndexMetadata.TestCollection; begin ! AssertNotNull('Collection is nil!', FInstantIndexMetadata.Collection); ! AssertSame('Collection is incorrect!', FCollection, ! FInstantIndexMetadata.Collection); end; procedure TestTInstantIndexMetadata.TestFields; begin ! AssertEquals('Fields value is incorrect!', 'IndexFields', ! FInstantIndexMetadata.Fields); end; procedure TestTInstantIndexMetadata.TestOptions; begin ! AssertTrue('Options value is incorrect!', ! [ixPrimary, ixUnique] = FInstantIndexMetadata.Options); end; procedure TestTInstantIndexMetadata.TestTableMetadata; begin ! AssertNotNull('TableMetadata is nil!', FInstantIndexMetadata.TableMetadata); ! AssertSame('TableMetadata is incorrect!', FOwner, ! FInstantIndexMetadata.TableMetadata); end; --- 60,81 ---- procedure TestTInstantIndexMetadata.TestCollection; begin ! AssertNotNull(FInstantIndexMetadata.Collection); ! AssertSame(FCollection, FInstantIndexMetadata.Collection); end; procedure TestTInstantIndexMetadata.TestFields; begin ! AssertEquals('IndexFields', FInstantIndexMetadata.Fields); end; procedure TestTInstantIndexMetadata.TestOptions; begin ! AssertTrue([ixPrimary, ixUnique] = FInstantIndexMetadata.Options); end; procedure TestTInstantIndexMetadata.TestTableMetadata; begin ! AssertNotNull(FInstantIndexMetadata.TableMetadata); ! AssertSame(FOwner, FInstantIndexMetadata.TableMetadata); end; *************** *** 102,110 **** begin vReturnValue := FInstantIndexMetadatas.Add; ! AssertNotNull('vReturnValue is nil!', vReturnValue); ! AssertEquals('Count is incorrect!', 1, FInstantIndexMetadatas.Count); ! AssertNotNull('Items[0] is nil!', FInstantIndexMetadatas.Items[0]); FInstantIndexMetadatas.Remove(vReturnValue); ! AssertEquals('Count is incorrect!', 0, FInstantIndexMetadatas.Count); end; --- 98,106 ---- begin vReturnValue := FInstantIndexMetadatas.Add; ! AssertNotNull(vReturnValue); ! AssertEquals(1, FInstantIndexMetadatas.Count); ! AssertNotNull('Items[0]', FInstantIndexMetadatas.Items[0]); FInstantIndexMetadatas.Remove(vReturnValue); ! AssertEquals(0, FInstantIndexMetadatas.Count); end; *************** *** 122,127 **** vReturnValue := TInstantIndexMetadata(FInstantIndexMetadatas.Find(vName)); AssertNotNull('IndexMetadata not found!', vReturnValue); ! AssertEquals('Fields value is incorrect!', vFields, vReturnValue.Fields); ! AssertTrue('Options value is incorrect!', vOptions = vReturnValue.Options); end; --- 118,123 ---- vReturnValue := TInstantIndexMetadata(FInstantIndexMetadatas.Find(vName)); AssertNotNull('IndexMetadata not found!', vReturnValue); ! AssertEquals(vFields, vReturnValue.Fields); ! AssertTrue('Options value', vOptions = vReturnValue.Options); end; *************** *** 131,136 **** begin vReturnValue := FInstantIndexMetadatas.Owner; ! AssertNotNull('Owner is nil!', vReturnValue); ! AssertSame('Owner value is incorrect!', FOwner, vReturnValue); end; --- 127,132 ---- begin vReturnValue := FInstantIndexMetadatas.Owner; ! AssertNotNull(vReturnValue); ! AssertSame(FOwner, vReturnValue); end; Index: TestInstantClassMetadata.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantClassMetadata.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantClassMetadata.pas 3 May 2005 04:52:37 -0000 1.1 --- TestInstantClassMetadata.pas 10 May 2005 05:31:08 -0000 1.2 *************** *** 77,87 **** vSource.Persistence := peStored; vDest.Assign(vSource); ! AssertEquals('DefaultContainerName is incorrect!', 'DefaultContainerName', ! vDest.DefaultContainerName); ! AssertEquals('StorageName is incorrect!', 'StorageName', ! vDest.StorageName); vStr := GetEnumName(TypeInfo(TInstantPersistence), Ord(vDest.Persistence)); ! AssertEquals('PersistenceType incorrect', 'peStored', vStr); finally vSource.Free; --- 77,85 ---- vSource.Persistence := peStored; vDest.Assign(vSource); ! AssertEquals('DefaultContainerName', vDest.DefaultContainerName); ! AssertEquals('StorageName', vDest.StorageName); vStr := GetEnumName(TypeInfo(TInstantPersistence), Ord(vDest.Persistence)); ! AssertEquals('peStored', vStr); finally vSource.Free; *************** *** 92,97 **** procedure TestTInstantClassMetadata.TestAttributeMetadatas; begin ! AssertNotNull('AttributeMetadatas is nil!', ! FInstantClassMetadata.AttributeMetadatas); end; --- 90,94 ---- procedure TestTInstantClassMetadata.TestAttributeMetadatas; begin ! AssertNotNull(FInstantClassMetadata.AttributeMetadatas); end; *************** *** 99,109 **** begin // Collection property contains all of the class metadatas in the model ! AssertNotNull('Collection is nil!', FInstantClassMetadata.Collection); ! AssertEquals('The number of model classes is incorrect!', 9, ! FInstantClassMetadata.Collection.Count); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TPhone'); ! AssertEquals('The number of model classes is incorrect!', 9, ! FInstantClassMetadata.Collection.Count); end; --- 96,104 ---- begin // Collection property contains all of the class metadatas in the model ! AssertNotNull(FInstantClassMetadata.Collection); ! AssertEquals(9, FInstantClassMetadata.Collection.Count); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TPhone'); ! AssertEquals(9, FInstantClassMetadata.Collection.Count); end; *************** *** 115,142 **** procedure TestTInstantClassMetadata.TestIsEmpty; begin ! AssertFalse('FInstantClassMetadata is empty!', FInstantClassMetadata.IsEmpty); end; procedure TestTInstantClassMetadata.TestIsStored; begin ! AssertTrue('Incorrect storage flag!', FInstantClassMetadata.IsStored); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TContactFilter'); ! AssertFalse('Incorrect storage flag!', FInstantClassMetadata.IsStored); end; procedure TestTInstantClassMetadata.TestMemberMap; begin ! AssertNotNull('MemberMap is nil!', FInstantClassMetadata.MemberMap); end; procedure TestTInstantClassMetadata.TestParentName; begin ! AssertEquals('ParentName incorrect!', '', ! FInstantClassMetadata.ParentName); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TPerson'); ! AssertEquals('ParentName incorrect!', 'TContact', ! FInstantClassMetadata.ParentName); end; --- 110,135 ---- procedure TestTInstantClassMetadata.TestIsEmpty; begin ! AssertFalse(FInstantClassMetadata.IsEmpty); end; procedure TestTInstantClassMetadata.TestIsStored; begin ! AssertTrue(FInstantClassMetadata.IsStored); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TContactFilter'); ! AssertFalse(FInstantClassMetadata.IsStored); end; procedure TestTInstantClassMetadata.TestMemberMap; begin ! AssertNotNull(FInstantClassMetadata.MemberMap); end; procedure TestTInstantClassMetadata.TestParentName; begin ! AssertEquals('', FInstantClassMetadata.ParentName); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TPerson'); ! AssertEquals('TContact', FInstantClassMetadata.ParentName); end; *************** *** 147,164 **** vStr := GetEnumName(TypeInfo(TInstantPersistence), Ord(FInstantClassMetadata.Persistence)); ! AssertEquals('PersistenceType incorrect', 'peStored', vStr); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TContactFilter'); vStr := GetEnumName(TypeInfo(TInstantPersistence), Ord(FInstantClassMetadata.Persistence)); ! AssertEquals('PersistenceType incorrect', 'peEmbedded', vStr); end; procedure TestTInstantClassMetadata.TestStorageMaps; begin ! AssertNotNull('StorageMaps is nil!', FInstantClassMetadata.StorageMaps); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TContactFilter'); ! AssertNull('StorageMaps should be nil!', FInstantClassMetadata.StorageMaps); end; --- 140,157 ---- vStr := GetEnumName(TypeInfo(TInstantPersistence), Ord(FInstantClassMetadata.Persistence)); ! AssertEquals('peStored', vStr); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TContactFilter'); vStr := GetEnumName(TypeInfo(TInstantPersistence), Ord(FInstantClassMetadata.Persistence)); ! AssertEquals('peEmbedded', vStr); end; procedure TestTInstantClassMetadata.TestStorageMaps; begin ! AssertNotNull(FInstantClassMetadata.StorageMaps); FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TContactFilter'); ! AssertNull(FInstantClassMetadata.StorageMaps); end; *************** *** 166,176 **** begin // Test with default class StorageName returns ''. ! AssertEquals('StorageName incorrect!', '', ! FInstantClassMetadata.StorageName); // Test for User entered non-default class StorageName. FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TCategory'); ! AssertEquals('StorageName incorrect!', 'Categories', ! FInstantClassMetadata.StorageName); end; --- 159,167 ---- begin // Test with default class StorageName returns ''. ! AssertEquals('', FInstantClassMetadata.StorageName); // Test for User entered non-default class StorageName. FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TCategory'); ! AssertEquals('Categories', FInstantClassMetadata.StorageName); end; *************** *** 178,188 **** begin // Test with default class StorageName (TableName). ! AssertEquals('TableName incorrect!', 'Contact', ! FInstantClassMetadata.TableName); // Test for User entered non-default class StorageName (TableName). FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TCategory'); ! AssertEquals('TableName incorrect!', 'Categories', ! FInstantClassMetadata.TableName); end; --- 169,177 ---- begin // Test with default class StorageName (TableName). ! AssertEquals('Contact', FInstantClassMetadata.TableName); // Test for User entered non-default class StorageName (TableName). FInstantClassMetadata := InstantModel.ClassMetadatas.Find('TCategory'); ! AssertEquals('Categories', FInstantClassMetadata.TableName); end; *************** *** 211,218 **** begin vReturnValue := FInstantClassMetadatas.Add; ! AssertNotNull('vReturnValue is nil!', vReturnValue); ! AssertEquals('Count is incorrect!', 4, FInstantClassMetadatas.Count); FInstantClassMetadatas.Remove(vReturnValue); ! AssertEquals('Count is incorrect!', 3, FInstantClassMetadatas.Count); end; --- 200,207 ---- begin vReturnValue := FInstantClassMetadatas.Add; ! AssertNotNull(vReturnValue); ! AssertEquals(4, FInstantClassMetadatas.Count); FInstantClassMetadatas.Remove(vReturnValue); ! AssertEquals(3, FInstantClassMetadatas.Count); end; *************** *** 224,234 **** vName := 'TAddress'; vReturnValue := FInstantClassMetadatas.Find(vName); ! AssertEquals('TestFind failed!', vName, vReturnValue.Name); end; procedure TestTInstantClassMetadatas.TestItems; begin ! AssertEquals('The second item''s name is incorrect!', 'TAddress', ! FInstantClassMetadatas.Items[1].Name); end; --- 213,222 ---- vName := 'TAddress'; vReturnValue := FInstantClassMetadatas.Find(vName); ! AssertEquals(vName, vReturnValue.Name); end; procedure TestTInstantClassMetadatas.TestItems; begin ! AssertEquals('TAddress', FInstantClassMetadatas.Items[1].Name); end; Index: TestInstantFieldMetadata.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantFieldMetadata.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantFieldMetadata.pas 3 May 2005 04:52:37 -0000 1.1 --- TestInstantFieldMetadata.pas 10 May 2005 05:31:08 -0000 1.2 *************** *** 64,70 **** procedure TestTInstantFieldMetadata.TestCollection; begin ! AssertNotNull('Collection is nil!', FInstantFieldMetadata.Collection); ! AssertSame('Collection is incorrect!', FCollection, ! FInstantFieldMetadata.Collection); end; --- 64,69 ---- procedure TestTInstantFieldMetadata.TestCollection; begin ! AssertNotNull(FInstantFieldMetadata.Collection); ! AssertSame(FCollection, FInstantFieldMetadata.Collection); end; *************** *** 75,90 **** vStr := GetEnumName(TypeInfo(TInstantDataType), Ord(FInstantFieldMetadata.DataType)); ! AssertEquals('DataType incorrect!', 'dtInteger', vStr); end; procedure TestTInstantFieldMetadata.TestExternalTableName; begin ! AssertEquals('ExternalTableName incorrect!', 'ExternalTableName', ! FInstantFieldMetadata.ExternalTableName); end; procedure TestTInstantFieldMetadata.TestOptions; begin ! AssertTrue('Options incorrect!', foRequired in FInstantFieldMetadata.Options); end; --- 74,88 ---- vStr := GetEnumName(TypeInfo(TInstantDataType), Ord(FInstantFieldMetadata.DataType)); ! AssertEquals('dtInteger', vStr); end; procedure TestTInstantFieldMetadata.TestExternalTableName; begin ! AssertEquals('ExternalTableName', FInstantFieldMetadata.ExternalTableName); end; procedure TestTInstantFieldMetadata.TestOptions; begin ! AssertTrue(foRequired in FInstantFieldMetadata.Options); end; *************** *** 95,104 **** vStr := GetEnumName(TypeInfo(TInstantAttributeType), Ord(FInstantFieldMetadata.OriginalAttributeType)); ! AssertEquals('OriginalAttributeType incorrect!', 'atInteger', vStr); end; procedure TestTInstantFieldMetadata.TestSize; begin ! AssertEquals('Size incorrect!', 10, FInstantFieldMetadata.Size); end; --- 93,102 ---- vStr := GetEnumName(TypeInfo(TInstantAttributeType), Ord(FInstantFieldMetadata.OriginalAttributeType)); ! AssertEquals('atInteger', vStr); end; procedure TestTInstantFieldMetadata.TestSize; begin ! AssertEquals(10, FInstantFieldMetadata.Size); end; *************** *** 121,129 **** begin vReturnValue := FInstantFieldMetadatas.Add; ! AssertNotNull('vReturnValue is nil!', vReturnValue); ! AssertEquals('Count is incorrect!', 1, FInstantFieldMetadatas.Count); ! AssertNotNull('Items[0] is nil!', FInstantFieldMetadatas.Items[0]); FInstantFieldMetadatas.Remove(vReturnValue); ! AssertEquals('Count is incorrect!', 0, FInstantFieldMetadatas.Count); end; --- 119,127 ---- begin vReturnValue := FInstantFieldMetadatas.Add; ! AssertNotNull(vReturnValue); ! AssertEquals(1, FInstantFieldMetadatas.Count); ! AssertNotNull('Items[0]', FInstantFieldMetadatas.Items[0]); FInstantFieldMetadatas.Remove(vReturnValue); ! AssertEquals(0, FInstantFieldMetadatas.Count); end; *************** *** 148,172 **** vOriginalAttributeType, vOptions, vExternalTableName); ! AssertEquals('Count is incorrect!', 1, FInstantFieldMetadatas.Count); vInstantFieldMetadata := FInstantFieldMetadatas.Items[0]; AssertNotNull(vInstantFieldMetadata); ! AssertEquals('Name is incorrect!', vName, vInstantFieldMetadata.Name); ! AssertEquals('Size is incorrect!', 10, vInstantFieldMetadata.Size); vStr := GetEnumName(TypeInfo(TInstantAttributeType), Ord(vInstantFieldMetadata.OriginalAttributeType)); ! AssertEquals('OriginalAttributeType incorrect!', 'atInteger', vStr); ! AssertTrue('Count is incorrect!', ! foRequired in vInstantFieldMetadata.Options); vStr := GetEnumName(TypeInfo(TInstantDataType), Ord(vInstantFieldMetadata.DataType)); ! AssertEquals('DataType incorrect!', 'dtInteger', vStr); ! AssertEquals('ExternalTableName is incorrect!', 'ExternalTableName', ! vInstantFieldMetadata.ExternalTableName); end; procedure TestTInstantFieldMetadatas.TestOwner; begin ! AssertNotNull('Owner is nil!', FInstantFieldMetadatas.Owner); ! AssertSame('Owner value is incorrect!', FOwner, FInstantFieldMetadatas.Owner); end; --- 146,168 ---- vOriginalAttributeType, vOptions, vExternalTableName); ! AssertEquals(1, FInstantFieldMetadatas.Count); vInstantFieldMetadata := FInstantFieldMetadatas.Items[0]; AssertNotNull(vInstantFieldMetadata); ! AssertEquals(vName, vInstantFieldMetadata.Name); ! AssertEquals(10, vInstantFieldMetadata.Size); vStr := GetEnumName(TypeInfo(TInstantAttributeType), Ord(vInstantFieldMetadata.OriginalAttributeType)); ! AssertEquals('atInteger', vStr); ! AssertTrue(foRequired in vInstantFieldMetadata.Options); vStr := GetEnumName(TypeInfo(TInstantDataType), Ord(vInstantFieldMetadata.DataType)); ! AssertEquals('dtInteger', vStr); ! AssertEquals('ExternalTableName', vInstantFieldMetadata.ExternalTableName); end; procedure TestTInstantFieldMetadatas.TestOwner; begin ! AssertNotNull(FInstantFieldMetadatas.Owner); ! AssertSame(FOwner, FInstantFieldMetadatas.Owner); end; Index: TestInstantTableMetadata.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantTableMetadata.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantTableMetadata.pas 3 May 2005 04:52:37 -0000 1.1 --- TestInstantTableMetadata.pas 10 May 2005 05:31:08 -0000 1.2 *************** *** 54,70 **** procedure TestTInstantTableMetadata.TestFieldMetadatas; begin ! AssertNotNull('FieldMetadatas is nil!', FInstantTableMetadata.FieldMetadatas); end; procedure TestTInstantTableMetadata.TestIndexMetadatas; begin ! AssertNotNull('IndexMetadatas is nil!', FInstantTableMetadata.IndexMetadatas); end; procedure TestTInstantTableMetadata.TestScheme; begin ! AssertNotNull('Scheme is nil!', FInstantTableMetadata.Scheme); ! AssertSame('Scheme value is incorrect!', FOwner, ! FInstantTableMetadata.Scheme); end; --- 54,69 ---- procedure TestTInstantTableMetadata.TestFieldMetadatas; begin ! AssertNotNull(FInstantTableMetadata.FieldMetadatas); end; procedure TestTInstantTableMetadata.TestIndexMetadatas; begin ! AssertNotNull(FInstantTableMetadata.IndexMetadatas); end; procedure TestTInstantTableMetadata.TestScheme; begin ! AssertNotNull(FInstantTableMetadata.Scheme); ! AssertSame(FOwner, FInstantTableMetadata.Scheme); end; *************** *** 85,93 **** begin vReturnValue := FInstantTableMetadatas.Add; ! AssertNotNull('vReturnValue is nil!', vReturnValue); ! AssertEquals('Count is incorrect!', 1, FInstantTableMetadatas.Count); ! AssertNotNull('Items[0] is nil!', FInstantTableMetadatas.Items[0]); FInstantTableMetadatas.Remove(vReturnValue); ! AssertEquals('Count is incorrect!', 0, FInstantTableMetadatas.Count); end; --- 84,92 ---- begin vReturnValue := FInstantTableMetadatas.Add; ! AssertNotNull(vReturnValue); ! AssertEquals(1, FInstantTableMetadatas.Count); ! AssertNotNull('Items[0]', FInstantTableMetadatas.Items[0]); FInstantTableMetadatas.Remove(vReturnValue); ! AssertEquals(0, FInstantTableMetadatas.Count); end; Index: TestInstantDateTime.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantDateTime.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantDateTime.pas 7 May 2005 04:59:48 -0000 1.2 --- TestInstantDateTime.pas 10 May 2005 05:31:08 -0000 1.3 *************** *** 100,107 **** begin FInstantDateTime.AsDateTime := 12.45; ! AssertEquals('Set AsDateTime is incorrect!', 12.45, ! FInstantDateTime.Value); ! AssertEquals('Get AsDateTime is incorrect!', 12.45, ! FInstantDateTime.AsDateTime); end; --- 100,105 ---- begin FInstantDateTime.AsDateTime := 12.45; ! AssertEquals(12.45, FInstantDateTime.Value); ! AssertEquals(12.45, FInstantDateTime.AsDateTime); end; *************** *** 170,175 **** vSource: TInstantDateTime; begin ! AssertEquals('String value is incorrect!', 100.5, ! FInstantDateTime.Value); vSource := TInstantDateTime.Create; --- 168,172 ---- vSource: TInstantDateTime; begin ! AssertEquals(100.5, FInstantDateTime.Value); vSource := TInstantDateTime.Create; *************** *** 177,182 **** VSource.Value := 115.3; FInstantDateTime.Assign(vSource); ! AssertEquals('String value is incorrect!', 115.3, ! FInstantDateTime.Value); finally vSource.Free; --- 174,178 ---- VSource.Value := 115.3; FInstantDateTime.Assign(vSource); ! AssertEquals(115.3, FInstantDateTime.Value); finally vSource.Free; *************** *** 187,194 **** begin FInstantDateTime.AsString := DateTimeToStr(14.5); ! AssertEquals('Set AsString is incorrect!', 14.5, ! FInstantDateTime.Value); ! AssertEquals('Get AsString is incorrect!', DateTimeToStr(14.5), ! FInstantDateTime.AsString); end; --- 183,188 ---- begin FInstantDateTime.AsString := DateTimeToStr(14.5); ! AssertEquals(14.5, FInstantDateTime.Value); ! AssertEquals(DateTimeToStr(14.5), FInstantDateTime.AsString); end; *************** *** 196,203 **** begin FInstantDateTime.AsVariant := 150.6; ! AssertEquals('Set AsVariant is incorrect!', 150.6, ! FInstantDateTime.Value); ! AssertEquals('Get AsVariant is incorrect!', 150.6, ! FInstantDateTime.AsVariant); end; --- 190,195 ---- begin FInstantDateTime.AsVariant := 150.6; ! AssertEquals(150.6, FInstantDateTime.Value); ! AssertEquals(150.6, FInstantDateTime.AsVariant); end; *************** *** 206,216 **** vDateTimeStr: string; begin ! AssertEquals('DisplayText is incorrect!', FInstantDateTime.AsString, ! FInstantDateTime.DisplayText); DateTimeToString(vDateTimeStr, 'yyyymmddhhnnsszzz', FInstantDateTime.Value); FInstantDateTime.Metadata.EditMask := 'yyyymmddhhnnsszzz'; ! AssertEquals('DisplayText is incorrect!', vDateTimeStr, ! FInstantDateTime.DisplayText); FInstantDateTime.Value := 113.8; --- 198,206 ---- vDateTimeStr: string; begin ! AssertEquals(FInstantDateTime.AsString, FInstantDateTime.DisplayText); DateTimeToString(vDateTimeStr, 'yyyymmddhhnnsszzz', FInstantDateTime.Value); FInstantDateTime.Metadata.EditMask := 'yyyymmddhhnnsszzz'; ! AssertEquals(vDateTimeStr, FInstantDateTime.DisplayText); FInstantDateTime.Value := 113.8; *************** *** 218,231 **** FInstantDateTime.Value); FInstantDateTime.Metadata.EditMask := 'dd mmm yyyy hh:nn:ss ampm'; ! AssertEquals('DisplayText is incorrect!', vDateTimeStr, ! FInstantDateTime.DisplayText); end; procedure TestTInstantDateTime.TestIsDefault; begin ! AssertFalse('Value is default!', FInstantDateTime.IsDefault); FInstantDateTime.Value := 0; ! AssertTrue('Value is not default!', FInstantDateTime.IsDefault); end; --- 208,220 ---- FInstantDateTime.Value); FInstantDateTime.Metadata.EditMask := 'dd mmm yyyy hh:nn:ss ampm'; ! AssertEquals(vDateTimeStr, FInstantDateTime.DisplayText); end; procedure TestTInstantDateTime.TestIsDefault; begin ! AssertFalse(FInstantDateTime.IsDefault); FInstantDateTime.Value := 0; ! AssertTrue(FInstantDateTime.IsDefault); end; *************** *** 234,258 **** vDateTimeStr: string; begin ! AssertNotNull('Metadata is nil!', FInstantDateTime.Metadata); // Metadata.DefaultValue is ''; FInstantDateTime.Reset; ! AssertEquals('Reset value is incorrect!', 0, FInstantDateTime.Value); DateTimeToString(vDateTimeStr, 'yyyymmddhhnnsszzz', 100.5); FInstantDateTime.Metadata.DefaultValue := vDateTimeStr; FInstantDateTime.Reset; ! AssertEquals('Reset value is incorrect!', 100.5, FInstantDateTime.Value); FInstantDateTime.Metadata := nil; ! AssertNull('Metadata is not nil!', FInstantDateTime.Metadata); FInstantDateTime.Reset; ! AssertEquals('Reset value is incorrect!', 0, FInstantDateTime.Value); end; procedure TestTInstantDateTime.TestValue; begin ! AssertEquals('Value is incorrect!', 100.5, FInstantDateTime.Value); FInstantDateTime.Value := 151.3; ! AssertEquals('Value is incorrect!', 151.3, FInstantDateTime.Value); end; --- 223,247 ---- vDateTimeStr: string; begin ! AssertNotNull(FInstantDateTime.Metadata); // Metadata.DefaultValue is ''; FInstantDateTime.Reset; ! AssertEquals(0, FInstantDateTime.Value); DateTimeToString(vDateTimeStr, 'yyyymmddhhnnsszzz', 100.5); FInstantDateTime.Metadata.DefaultValue := vDateTimeStr; FInstantDateTime.Reset; ! AssertEquals(100.5, FInstantDateTime.Value); FInstantDateTime.Metadata := nil; ! AssertNull(FInstantDateTime.Metadata); FInstantDateTime.Reset; ! AssertEquals(0, FInstantDateTime.Value); end; procedure TestTInstantDateTime.TestValue; begin ! AssertEquals(100.5, FInstantDateTime.Value); FInstantDateTime.Value := 151.3; ! AssertEquals(151.3, FInstantDateTime.Value); end; Index: TestIO.dpr =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestIO.dpr,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** TestIO.dpr 8 May 2005 22:26:21 -0000 1.9 --- TestIO.dpr 10 May 2005 05:31:08 -0000 1.10 *************** *** 37,41 **** TestInstantBoolean in 'TestInstantBoolean.pas', TestInstantFloat in 'TestInstantFloat.pas', ! TestInstantCurrency in 'TestInstantCurrency.pas'; {$R *.res} --- 37,42 ---- TestInstantBoolean in 'TestInstantBoolean.pas', TestInstantFloat in 'TestInstantFloat.pas', ! TestInstantCurrency in 'TestInstantCurrency.pas', ! TestInstantBlob in 'TestInstantBlob.pas'; {$R *.res} Index: TestInstantCurrency.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantCurrency.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantCurrency.pas 7 May 2005 08:17:32 -0000 1.2 --- TestInstantCurrency.pas 10 May 2005 05:31:08 -0000 1.3 *************** *** 3,12 **** interface ! uses fpcunit, InstantPersistence, InstantMock; type // Test methods for class TInstantCurrency ! TTestInstantCurrency = class(TTestCase) private FAttrMetadata: TInstantAttributeMetadata; --- 3,12 ---- interface ! uses fpcunit, InstantPersistence; type // Test methods for class TInstantCurrency ! TestTInstantCurrency = class(TTestCase) private FAttrMetadata: TInstantAttributeMetadata; *************** *** 16,20 **** --- 16,25 ---- procedure TearDown; override; published + procedure TestAsCurrency; + procedure TestAsFloat; + procedure TestAsInteger; procedure TestAssign; + procedure TestAsString; + procedure TestAsVariant; procedure TestReset; procedure TestValue; *************** *** 25,29 **** uses SysUtils, testregistry, InstantClasses; ! procedure TTestInstantCurrency.SetUp; begin FAttrMetadata := TInstantAttributeMetadata.Create(nil); --- 30,36 ---- uses SysUtils, testregistry, InstantClasses; ! procedure TestTInstantCurrency.SetUp; ! var ! vCurr: Currency; begin FAttrMetadata := TInstantAttributeMetadata.Create(nil); *************** *** 31,38 **** FAttrMetadata.Name := 'AttrMetadataName'; FInstantCurrency := TInstantCurrency.Create(nil, FAttrMetadata); ! FInstantCurrency.Value := 1.3; end; ! procedure TTestInstantCurrency.TearDown; begin FreeAndNil(FInstantCurrency); --- 38,46 ---- FAttrMetadata.Name := 'AttrMetadataName'; FInstantCurrency := TInstantCurrency.Create(nil, FAttrMetadata); ! vCurr := 1.3; ! FInstantCurrency.Value := vCurr; end; ! procedure TestTInstantCurrency.TearDown; begin FreeAndNil(FInstantCurrency); *************** *** 40,53 **** end; ! procedure TTestInstantCurrency.TestAssign; var vSource: TInstantCurrency; begin ! AssertEquals('Value is incorrect!', 1.3, FInstantCurrency.Value); vSource := TInstantCurrency.Create; try ! VSource.Value := 4.3; FInstantCurrency.Assign(vSource); ! AssertEquals('Value is incorrect!', 4.3, FInstantCurrency.Value); finally vSource.Free; --- 48,87 ---- end; ! procedure TestTInstantCurrency.TestAsCurrency; ! var ! vCurr: Currency; ! begin ! vCurr := 23.45; ! FInstantCurrency.AsCurrency := vCurr; ! AssertEquals(vCurr, FInstantCurrency.Value); ! AssertEquals(vCurr, FInstantCurrency.AsCurrency); ! end; ! ! procedure TestTInstantCurrency.TestAsFloat; ! begin ! FInstantCurrency.AsFloat := 89.45; ! AssertEquals(89.45, FInstantCurrency.Value); ! AssertEquals(89.45, FInstantCurrency.AsFloat); ! end; ! ! procedure TestTInstantCurrency.TestAsInteger; ! begin ! FInstantCurrency.AsInteger := 89; ! AssertEquals(89.0, FInstantCurrency.Value); ! AssertEquals(89.0, FInstantCurrency.AsInteger); ! end; ! ! procedure TestTInstantCurrency.TestAssign; var vSource: TInstantCurrency; + vCurr: Currency; begin ! AssertEquals(1.3, FInstantCurrency.Value); vSource := TInstantCurrency.Create; try ! vCurr := 4.3; ! VSource.Value := vCurr; FInstantCurrency.Assign(vSource); ! AssertEquals(vCurr, FInstantCurrency.Value); finally vSource.Free; *************** *** 55,91 **** end; ! procedure TTestInstantCurrency.TestReset; begin ! AssertNotNull('Metadata is nil!', FInstantCurrency.Metadata); // Metadata.DefaultValue is ''; FInstantCurrency.Reset; ! AssertEquals('Reset value is incorrect!', 1.3, FInstantCurrency.Value); FInstantCurrency.Metadata.DefaultValue := '15' + DecimalSeparator + '7'; FInstantCurrency.Reset; ! AssertEquals('Reset value is incorrect!', 15.7, FInstantCurrency.Value); FInstantCurrency.Metadata := nil; ! AssertNull('Metadata is not nil!', FInstantCurrency.Metadata); FInstantCurrency.Reset; ! AssertEquals('Reset value is incorrect!', 0.0, FInstantCurrency.Value); end; ! procedure TTestInstantCurrency.TestValue; var ! c: Currency; begin ! c := 123456789012.12345; ! FInstantCurrency.AsCurrency := c; ! AssertEquals(c, FInstantCurrency.Value); ! AssertEquals(c, FInstantCurrency.AsCurrency); ! c := c + 0.0001; ! AssertFalse('Precision limit', c = FInstantCurrency.Value); ! FInstantCurrency.AsCurrency := c; ! c := c + 0.00001; ! AssertEquals('Out of precision limit', c, FInstantCurrency.Value); ! c := -0.0001; ! FInstantCurrency.AsCurrency := c; ! AssertEquals(c, FInstantCurrency.Value); AssertFalse(0 = FInstantCurrency.Value); end; --- 89,141 ---- end; ! procedure TestTInstantCurrency.TestAsString; begin ! FInstantCurrency.AsString := '15' + DecimalSeparator + '7'; ! AssertEquals(15.7, FInstantCurrency.Value); ! AssertEquals('15' + DecimalSeparator + '7', FInstantCurrency.AsString); ! end; ! ! procedure TestTInstantCurrency.TestAsVariant; ! begin ! FInstantCurrency.AsVariant := 15.1; ! AssertEquals(15.1, FInstantCurrency.Value); ! AssertEquals(15.1, FInstantCurrency.AsVariant); ! end; ! ! procedure TestTInstantCurrency.TestReset; ! begin ! AssertNotNull(FInstantCurrency.Metadata); // Metadata.DefaultValue is ''; FInstantCurrency.Reset; ! AssertEquals(1.3, FInstantCurrency.Value); FInstantCurrency.Metadata.DefaultValue := '15' + DecimalSeparator + '7'; FInstantCurrency.Reset; ! AssertEquals(15.7, FInstantCurrency.Value); FInstantCurrency.Metadata := nil; ! AssertNull(FInstantCurrency.Metadata); FInstantCurrency.Reset; ! AssertEquals(0.0, FInstantCurrency.Value); end; ! procedure TestTInstantCurrency.TestValue; var ! vCurr: Currency; begin ! AssertEquals(1.3, FInstantCurrency.Value); ! ! vCurr := 123456789012.12345; ! FInstantCurrency.AsCurrency := vCurr; ! AssertEquals(vCurr, FInstantCurrency.Value); ! AssertEquals(vCurr, FInstantCurrency.AsCurrency); ! vCurr := vCurr + 0.0001; ! AssertFalse('Precision limit', vCurr = FInstantCurrency.Value); ! FInstantCurrency.AsCurrency := vCurr; ! vCurr := vCurr + 0.00001; ! AssertEquals('Out of precision limit', vCurr, FInstantCurrency.Value); ! vCurr := -0.0001; ! FInstantCurrency.AsCurrency := vCurr; ! AssertEquals(vCurr, FInstantCurrency.Value); AssertFalse(0 = FInstantCurrency.Value); end; *************** *** 93,97 **** initialization // Register any test cases with the test runner ! RegisterTests([TTestInstantCurrency]); end. --- 143,150 ---- initialization // Register any test cases with the test runner ! {$IFNDEF CURR_TESTS} ! RegisterTests([TestTInstantCurrency]); ! {$ENDIF} end. + \ No newline at end of file Index: TestInstantNumeric.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantNumeric.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantNumeric.pas 8 May 2005 20:18:25 -0000 1.2 --- TestInstantNumeric.pas 10 May 2005 05:31:08 -0000 1.3 *************** *** 52,61 **** begin FInstantNumeric.AsBoolean := True; ! AssertEquals('Set AsBoolean is incorrect!', 1, FInstantNumeric.Value); ! AssertTrue('Get AsBoolean is false!', FInstantNumeric.AsBoolean); FInstantNumeric.AsBoolean := False; ! AssertEquals('Set AsBoolean is incorrect!', 0, FInstantNumeric.Value); ! AssertFalse('Get AsBoolean is true!', FInstantNumeric.AsBoolean); end; --- 52,61 ---- begin FInstantNumeric.AsBoolean := True; ! AssertEquals(1, FInstantNumeric.Value); ! AssertTrue(FInstantNumeric.AsBoolean); FInstantNumeric.AsBoolean := False; ! AssertEquals(0, FInstantNumeric.Value); ! AssertFalse(FInstantNumeric.AsBoolean); end; *************** *** 63,69 **** begin FInstantNumeric.AsDateTime := 12.45; ! AssertEquals('Set AsDateTime is incorrect!', 12, FInstantNumeric.Value); ! AssertEquals('Get AsDateTime is incorrect!', 12.0, ! FInstantNumeric.AsDateTime); end; --- 63,68 ---- begin FInstantNumeric.AsDateTime := 12.45; ! AssertEquals(12, FInstantNumeric.Value); ! AssertEquals(12.0, FInstantNumeric.AsDateTime); end; *************** *** 91,111 **** begin FInstantNumeric.Value := 1; ! AssertEquals('DisplayText is incorrect!', '1', FInstantNumeric.DisplayText); FInstantNumeric.Metadata.EditMask := '000'; ! AssertEquals('DisplayText is incorrect!', '001', FInstantNumeric.DisplayText); FInstantNumeric.Value := 1000; FInstantNumeric.Metadata.EditMask := '#,000'; //EditMask don't use ThousandSeparator var ! AssertEquals('DisplayText is incorrect!', '1' + ThousandSeparator + '000', ! FInstantNumeric.DisplayText); end; procedure TestTInstantNumeric.TestIsDefault; begin ! AssertTrue('Value is not default!', FInstantNumeric.IsDefault); FInstantNumeric.Value := 100; ! AssertFalse('Value is default!', FInstantNumeric.IsDefault); end; --- 90,109 ---- begin FInstantNumeric.Value := 1; ! AssertEquals('1', FInstantNumeric.DisplayText); FInstantNumeric.Metadata.EditMask := '000'; ! AssertEquals('001', FInstantNumeric.DisplayText); FInstantNumeric.Value := 1000; FInstantNumeric.Metadata.EditMask := '#,000'; //EditMask don't use ThousandSeparator var ! AssertEquals('1' + ThousandSeparator + '000', FInstantNumeric.DisplayText); end; procedure TestTInstantNumeric.TestIsDefault; begin ! AssertTrue(FInstantNumeric.IsDefault); FInstantNumeric.Value := 100; ! AssertFalse(FInstantNumeric.IsDefault); end; Index: TestInstantScheme.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantScheme.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantScheme.pas 3 May 2005 04:52:37 -0000 1.1 --- TestInstantScheme.pas 10 May 2005 05:31:08 -0000 1.2 *************** *** 44,51 **** procedure TestTInstantRelationalScheme.TestBlobStreamFormat; begin ! AssertTrue('Incorrect BlobStreamFormat!', sfBinary = FInstantRelationalScheme.BlobStreamFormat); FInstantRelationalScheme.BlobStreamFormat := sfXML; ! AssertTrue('Incorrect BlobStreamFormat!', sfXML = FInstantRelationalScheme.BlobStreamFormat); end; --- 44,51 ---- procedure TestTInstantRelationalScheme.TestBlobStreamFormat; begin ! AssertTrue('BlobStreamFormat', sfBinary = FInstantRelationalScheme.BlobStreamFormat); FInstantRelationalScheme.BlobStreamFormat := sfXML; ! AssertTrue('BlobStreamFormat', sfXML = FInstantRelationalScheme.BlobStreamFormat); end; *************** *** 64,86 **** procedure TestTInstantRelationalScheme.TestIdDataType; begin ! AssertTrue('Incorrect IdDataType!', ! dtString = FInstantRelationalScheme.IdDataType); FInstantRelationalScheme.IdDataType := dtInteger; ! AssertTrue('Incorrect IdDataType!', ! dtInteger = FInstantRelationalScheme.IdDataType); end; procedure TestTInstantRelationalScheme.TestIdSize; begin ! AssertEquals('Incorrect IDSize!', InstantDefaultFieldSize, FInstantRelationalScheme.IdSize); FInstantRelationalScheme.IdSize := 10; ! AssertEquals('Incorrect IDSize!', 10, FInstantRelationalScheme.IdSize); end; procedure TestTInstantRelationalScheme.TestTableMetadataCount; begin ! AssertEquals('Incorrect TableMetadataCount!', 8, ! FInstantRelationalScheme.TableMetadataCount); end; --- 64,83 ---- procedure TestTInstantRelationalScheme.TestIdDataType; begin ! AssertTrue('IdDataType', dtString = FInstantRelationalScheme.IdDataType); FInstantRelationalScheme.IdDataType := dtInteger; ! AssertTrue('IdDataType', dtInteger = FInstantRelationalScheme.IdDataType); end; procedure TestTInstantRelationalScheme.TestIdSize; begin ! AssertEquals(InstantDefaultFieldSize, FInstantRelationalScheme.IdSize); FInstantRelationalScheme.IdSize := 10; ! AssertEquals(10, FInstantRelationalScheme.IdSize); end; procedure TestTInstantRelationalScheme.TestTableMetadataCount; begin ! AssertEquals(8, FInstantRelationalScheme.TableMetadataCount); end; *************** *** 90,95 **** begin vReturnValue := FInstantRelationalScheme.TableMetadatas[0]; ! AssertNotNull('TableMetadata is nil!', vReturnValue); ! AssertEquals('', 'Address', vReturnValue.Name); end; --- 87,92 ---- begin vReturnValue := FInstantRelationalScheme.TableMetadatas[0]; ! AssertNotNull(vReturnValue); ! AssertEquals('Address', vReturnValue.Name); end; --- NEW FILE: TestBlobText.txt --- The following notes document the structure of the InstantObjects tree as stored in CVS, explaining what each folder is for. Index: TestInstantString.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantString.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TestInstantString.pas 8 May 2005 20:18:25 -0000 1.3 --- TestInstantString.pas 10 May 2005 05:31:08 -0000 1.4 *************** *** 60,80 **** begin FInstantString.AsBoolean := True; ! AssertEquals('Set AsBoolean is incorrect!', 'True', FInstantString.Value); ! AssertTrue('Get AsBoolean is false!', FInstantString.AsBoolean); FInstantString.AsBoolean := False; ! AssertEquals('Set AsBoolean is incorrect!', 'False', FInstantString.Value); ! AssertFalse('Get AsBoolean is true!', FInstantString.AsBoolean); end; procedure TestTInstantString.TestAsCurrency; var ! c: Currency; begin ! c := 23.45; ! FInstantString.AsCurrency := c; ! AssertEquals('Set AsCurrency is incorrect!', '23' + DecimalSeparator + '45', FInstantString.Value); ! AssertEquals('Get AsCurrency is incorrect!', 23.45, ! FInstantString.AsCurrency); end; --- 60,79 ---- begin FInstantString.AsBoolean := True; ! AssertEquals('True', FInstantString.Value); ! AssertTrue(FInstantString.AsBoolean); FInstantString.AsBoolean := False; ! AssertEquals('False', FInstantString.Value); ! AssertFalse(FInstantString.AsBoolean); end; procedure TestTInstantString.TestAsCurrency; var ! vCurr: Currency; begin ! vCurr := 23.45; ! FInstantString.AsCurrency := vCurr; ! AssertEquals('23' + DecimalSeparator + '45', FInstantString.Value); ! AssertEquals(vCurr, FInstantString.AsCurrency); end; *************** *** 82,89 **** begin FInstantString.AsDateTime := 12.45; ! AssertEquals('Set AsDateTime is incorrect!', DateTimeToStr(12.45), ! FInstantString.Value); ! AssertEquals('Get AsDateTime is incorrect!', 12.45, ! FInstantString.AsDateTime); end; --- 81,86 ---- begin FInstantString.AsDateTime := 12.45; ! AssertEquals(DateTimeToStr(12.45), FInstantString.Value); ! AssertEquals(12.45, FInstantString.AsDateTime); end; *************** *** 91,96 **** begin FInstantString.AsFloat := 89.45; ! AssertEquals('Set AsFloat is incorrect!', '89' + DecimalSeparator + '45', FInstantString.Value); ! AssertEquals('Get AsFloat is incorrect!', 89.45, FInstantString.AsFloat); end; --- 88,93 ---- begin FInstantString.AsFloat := 89.45; ! AssertEquals('89' + DecimalSeparator + '45', FInstantString.Value); ! AssertEquals(89.45, FInstantString.AsFloat); end; *************** *** 98,103 **** begin FInstantString.AsInteger := 100; ! AssertEquals('Set AsInteger is incorrect!', '100', FInstantString.Value); ! AssertEquals('Get AsInteger is incorrect!', 100, FInstantString.AsInteger); end; --- 95,100 ---- begin FInstantString.AsInteger := 100; ! AssertEquals('100', FInstantString.Value); ! AssertEquals(100, FInstantString.AsInteger); end; *************** *** 126,131 **** vSource: TInstantString; begin ! AssertEquals('String value is incorrect!', 'StringValue', ! FInstantString.Value); vSource := TInstantString.Create; --- 123,127 ---- vSource: TInstantString; begin ! AssertEquals('StringValue', FInstantString.Value); vSource := TInstantString.Create; *************** *** 133,138 **** VSource.Value := 'DifferentString'; FInstantString.Assign(vSource); ! AssertEquals('String value is incorrect!', 'DifferentString', ! FInstantString.Value); finally vSource.Free; --- 129,133 ---- VSource.Value := 'DifferentString'; FInstantString.Assign(vSource); ! AssertEquals('DifferentString', FInstantString.Value); finally vSource.Free; *************** *** 143,150 **** begin FInstantString.AsString := 'DifferentString'; ! AssertEquals('Set AsString is incorrect!', 'DifferentString', ! FInstantString.Value); ! AssertEquals('Get AsString is incorrect!', 'DifferentString', ! FInstantString.AsString); end; --- 138,143 ---- begin FInstantString.AsString := 'DifferentString'; ! AssertEquals('DifferentString', FInstantString.Value); ! AssertEquals('DifferentString', FInstantString.AsString); end; *************** *** 152,194 **** begin FInstantString.AsVariant := 'DifferentString'; ! AssertEquals('Set AsVariant is incorrect!', 'DifferentString', ! FInstantString.Value); ! AssertEquals('Get AsVariant is incorrect!', 'DifferentString', ! FInstantString.AsVariant); end; procedure TestTInstantString.TestName; begin ! AssertEquals('Attribute name is incorrect!', 'AttrMetadataName', ! FInstantString.Name); end; procedure TestTInstantString.TestOwner; begin ! AssertSame('Owner is incorrect!', FOwner, FInstantString.Owner); end; procedure TestTInstantString.TestReset; begin ! AssertNotNull('Metadata is nil!', FInstantString.Metadata); // Metadata.DefaultValue is ''; FInstantString.Reset; ! AssertEquals('Reset value is incorrect!', '', FInstantString.Value); FInstantString.Metadata.DefaultValue := '1000'; FInstantString.Reset; ! AssertEquals('Reset value is incorrect!', '1000', FInstantString.Value); FInstantString.Metadata := nil; ! AssertNull('Metadata is not nil!', FInstantString.Metadata); FInstantString.Reset; ! AssertEquals('Reset value is incorrect!', '', FInstantString.Value); end; procedure TestTInstantString.TestValue; begin ! AssertEquals('Value is incorrect!', 'StringValue', FInstantString.Value); FInstantString.Value := 'NewValue'; ! AssertEquals('Value is incorrect!', 'NewValue', FInstantString.Value); end; --- 145,184 ---- begin FInstantString.AsVariant := 'DifferentString'; ! AssertEquals('DifferentString', FInstantString.Value); ! AssertEquals('DifferentString', FInstantString.AsVariant); end; procedure TestTInstantString.TestName; begin ! AssertEquals('AttrMetadataName', FInstantString.Name); end; procedure TestTInstantString.TestOwner; begin ! AssertSame(FOwner, FInstantString.Owner); end; procedure TestTInstantString.TestReset; begin ! AssertNotNull(FInstantString.Metadata); // Metadata.DefaultValue is ''; FInstantString.Reset; ! AssertEquals('', FInstantString.Value); FInstantString.Metadata.DefaultValue := '1000'; FInstantString.Reset; ! AssertEquals('1000', FInstantString.Value); FInstantString.Metadata := nil; ! AssertNull(FInstantString.Metadata); FInstantString.Reset; ! AssertEquals('', FInstantString.Value); end; procedure TestTInstantString.TestValue; begin ! AssertEquals('StringValue', FInstantString.Value); FInstantString.Value := 'NewValue'; ! AssertEquals('NewValue', FInstantString.Value); end; *************** *** 200,202 **** end. ! --- 190,192 ---- end. ! \ No newline at end of file Index: TestInstantInteger.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantInteger.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TestInstantInteger.pas 7 May 2005 04:59:48 -0000 1.3 --- TestInstantInteger.pas 10 May 2005 05:31:08 -0000 1.4 *************** *** 53,61 **** procedure TestTInstantInteger.TestAsCurrency; begin ! FInstantInteger.AsCurrency := 23.45; ! AssertEquals('Set AsCurrency is incorrect!', 23, FInstantInteger.Value); ! AssertEquals('Get AsCurrency is incorrect!', 23.0, ! FInstantInteger.AsCurrency); end; --- 53,63 ---- procedure TestTInstantInteger.TestAsCurrency; + var + vCurr: Currency; begin ! vCurr := 23.45; ! FInstantInteger.AsCurrency := vCurr; ! AssertEquals(23, FInstantInteger.Value); ! AssertEquals(23.0, FInstantInteger.AsCurrency); end; *************** *** 63,68 **** begin FInstantInteger.AsFloat := 89.45; ! AssertEquals('Set AsFloat is incorrect!', 89, FInstantInteger.Value); ! AssertEquals('Get AsFloat is incorrect!', 89.0, FInstantInteger.AsFloat); end; --- 65,70 ---- begin FInstantInteger.AsFloat := 89.4... [truncated message content] |
From: uberto b. <ub...@us...> - 2005-05-08 22:26:48
|
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3626 Modified Files: TestIO.res Log Message: Updated to new fpcunit (changed TTestRunner to TGUITestRunner) Index: TestIO.res =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestIO.res,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Binary files /tmp/cvs2mSZf8 and /tmp/cvsrFWpXh differ |
From: uberto b. <ub...@us...> - 2005-05-08 22:26:31
|
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3561 Modified Files: TestIO.dpr Log Message: Updated to new fpcunit (changed TTestRunner to TGUITestRunner) Index: TestIO.dpr =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestIO.dpr,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** TestIO.dpr 7 May 2005 04:59:48 -0000 1.8 --- TestIO.dpr 8 May 2005 22:26:21 -0000 1.9 *************** *** 44,48 **** begin Application.Initialize; ! Application.CreateForm(TTestRunner, TestRunner); Application.Run; end. --- 44,48 ---- begin Application.Initialize; ! Application.CreateForm(TGUITestRunner, TestRunner); Application.Run; end. |
From: uberto b. <ub...@us...> - 2005-05-08 20:24:07
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9720 Modified Files: InstantFpcUtils.pas Log Message: Added FormatMaskText for fpc Index: InstantFpcUtils.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantFpcUtils.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** InstantFpcUtils.pas 2 May 2005 23:26:33 -0000 1.1 --- InstantFpcUtils.pas 8 May 2005 20:23:59 -0000 1.2 *************** *** 10,17 **** procedure OleCheck(Result: HResult); implementation uses ! typinfo, variants; --- 10,19 ---- procedure OleCheck(Result: HResult); + function FormatMaskText(const EditMask: string; const Value: string): string; + implementation uses ! typinfo, variants, maskedit; *************** *** 38,41 **** --- 40,48 ---- + function FormatMaskText(const EditMask: string; const Value: string): string; + begin + Result := maskedit.FormatMaskText(EditMask, Value); + end; + end. |
From: uberto b. <ub...@us...> - 2005-05-08 20:23:24
|
Update of /cvsroot/instantobjects/Source/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9544 Modified Files: InstantPresentation.pas Log Message: Removed MaskUtils from fpc Index: InstantPresentation.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Core/InstantPresentation.pas,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** InstantPresentation.pas 2 May 2005 23:26:33 -0000 1.16 --- InstantPresentation.pas 8 May 2005 20:23:11 -0000 1.17 *************** *** 643,647 **** QForms, {$ENDIF} ! {$IFDEF D6+}Variants, MaskUtils, FmtBcd,{$ENDIF} InstantClasses, InstantConsts, InstantRtti, InstantDesignHook, InstantAccessors, DbConsts; --- 643,651 ---- QForms, {$ENDIF} ! {$IFDEF D6+} ! Variants, ! {$IFNDEF FPC}MaskUtils,{$ENDIF} ! FmtBcd, ! {$ENDIF} InstantClasses, InstantConsts, InstantRtti, InstantDesignHook, InstantAccessors, DbConsts; |
From: uberto b. <ub...@us...> - 2005-05-08 20:19:21
|
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8660 Modified Files: TestInstantRtti.pas Log Message: Removed MaskUtils from fpc Index: TestInstantRtti.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantRtti.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantRtti.pas 3 May 2005 04:52:37 -0000 1.2 --- TestInstantRtti.pas 8 May 2005 20:19:10 -0000 1.3 *************** *** 7,11 **** InstantRtti, fpcunit, ! MaskUtils, testregistry; --- 7,12 ---- InstantRtti, fpcunit, ! {$IFNDEF FPC}MaskUtils,{$ENDIF} ! {$IFDEF FPC}InstantFpcUtils,{$ENDIF} testregistry; |
From: uberto b. <ub...@us...> - 2005-05-08 20:18:34
|
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8522 Modified Files: TestInstantBoolean.pas TestInstantFloat.pas TestInstantNumeric.pas TestInstantString.pas Log Message: Fixed some locale setting Index: TestInstantNumeric.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantNumeric.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantNumeric.pas 7 May 2005 04:59:48 -0000 1.1 --- TestInstantNumeric.pas 8 May 2005 20:18:25 -0000 1.2 *************** *** 97,101 **** FInstantNumeric.Value := 1000; ! FInstantNumeric.Metadata.EditMask := '#' + ThousandSeparator + '000'; AssertEquals('DisplayText is incorrect!', '1' + ThousandSeparator + '000', FInstantNumeric.DisplayText); --- 97,101 ---- FInstantNumeric.Value := 1000; ! FInstantNumeric.Metadata.EditMask := '#,000'; //EditMask don't use ThousandSeparator var AssertEquals('DisplayText is incorrect!', '1' + ThousandSeparator + '000', FInstantNumeric.DisplayText); Index: TestInstantFloat.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantFloat.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantFloat.pas 7 May 2005 04:59:48 -0000 1.1 --- TestInstantFloat.pas 8 May 2005 20:18:25 -0000 1.2 *************** *** 91,97 **** procedure TestTInstantFloat.TestAsString; begin ! FInstantFloat.AsString := '1.3'; AssertEquals('Set AsString is incorrect!', 1.3, FInstantFloat.Value); ! AssertEquals('Get AsString is incorrect!', '1.3', FInstantFloat.AsString); end; --- 91,97 ---- procedure TestTInstantFloat.TestAsString; begin ! FInstantFloat.AsString := '1' + DecimalSeparator + '3'; AssertEquals('Set AsString is incorrect!', 1.3, FInstantFloat.Value); ! AssertEquals('Get AsString is incorrect!', '1' + DecimalSeparator + '3', FInstantFloat.AsString); end; *************** *** 110,114 **** AssertEquals('Reset value is incorrect!', 1.3, FInstantFloat.Value); ! FInstantFloat.Metadata.DefaultValue := '15.7'; FInstantFloat.Reset; AssertEquals('Reset value is incorrect!', 15.7, FInstantFloat.Value); --- 110,114 ---- AssertEquals('Reset value is incorrect!', 1.3, FInstantFloat.Value); ! FInstantFloat.Metadata.DefaultValue := '15' + DecimalSeparator + '7'; FInstantFloat.Reset; AssertEquals('Reset value is incorrect!', 15.7, FInstantFloat.Value); *************** *** 134,136 **** end. ! \ No newline at end of file --- 134,136 ---- end. ! Index: TestInstantString.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantString.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TestInstantString.pas 7 May 2005 04:59:49 -0000 1.2 --- TestInstantString.pas 8 May 2005 20:18:25 -0000 1.3 *************** *** 69,75 **** procedure TestTInstantString.TestAsCurrency; begin ! FInstantString.AsCurrency := 23.45; ! AssertEquals('Set AsCurrency is incorrect!', '23.45', FInstantString.Value); AssertEquals('Get AsCurrency is incorrect!', 23.45, FInstantString.AsCurrency); --- 69,78 ---- procedure TestTInstantString.TestAsCurrency; + var + c: Currency; begin ! c := 23.45; ! FInstantString.AsCurrency := c; ! AssertEquals('Set AsCurrency is incorrect!', '23' + DecimalSeparator + '45', FInstantString.Value); AssertEquals('Get AsCurrency is incorrect!', 23.45, FInstantString.AsCurrency); *************** *** 88,92 **** begin FInstantString.AsFloat := 89.45; ! AssertEquals('Set AsFloat is incorrect!', '89.45', FInstantString.Value); AssertEquals('Get AsFloat is incorrect!', 89.45, FInstantString.AsFloat); end; --- 91,95 ---- begin FInstantString.AsFloat := 89.45; ! AssertEquals('Set AsFloat is incorrect!', '89' + DecimalSeparator + '45', FInstantString.Value); AssertEquals('Get AsFloat is incorrect!', 89.45, FInstantString.AsFloat); end; *************** *** 197,199 **** end. ! \ No newline at end of file --- 200,202 ---- end. ! Index: TestInstantBoolean.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantBoolean.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantBoolean.pas 7 May 2005 04:59:48 -0000 1.1 --- TestInstantBoolean.pas 8 May 2005 20:18:24 -0000 1.2 *************** *** 70,76 **** procedure TestTInstantBoolean.TestAsCurrency; begin ! FInstantBoolean.AsCurrency := 89.45; AssertTrue('Set AsCurrency is incorrect!', FInstantBoolean.Value); ! AssertEquals('Get AsCurrency is incorrect!', 89.0, FInstantBoolean.AsCurrency); end; --- 70,76 ---- procedure TestTInstantBoolean.TestAsCurrency; begin ! FInstantBoolean.AsCurrency := 1; AssertTrue('Set AsCurrency is incorrect!', FInstantBoolean.Value); ! AssertEquals('Get AsCurrency is incorrect!', 1, FInstantBoolean.AsCurrency); end; *************** *** 97,110 **** procedure TestTInstantBoolean.TestAsFloat; begin ! FInstantBoolean.AsFloat := 89.45; AssertTrue('Set AsFloat is incorrect!', FInstantBoolean.Value); ! AssertEquals('Get AsFloat is incorrect!', 89.0, FInstantBoolean.AsFloat); end; procedure TestTInstantBoolean.TestAsInteger; begin ! FInstantBoolean.AsInteger := 100; AssertTrue('Set AsInteger is incorrect!', FInstantBoolean.Value); ! AssertEquals('Get AsInteger is incorrect!', 100, FInstantBoolean.AsInteger); end; --- 97,110 ---- procedure TestTInstantBoolean.TestAsFloat; begin ! FInstantBoolean.AsFloat := 1; AssertTrue('Set AsFloat is incorrect!', FInstantBoolean.Value); ! AssertEquals('Get AsFloat is incorrect!', 1, FInstantBoolean.AsFloat); end; procedure TestTInstantBoolean.TestAsInteger; begin ! FInstantBoolean.AsInteger := 1; AssertTrue('Set AsInteger is incorrect!', FInstantBoolean.Value); ! AssertEquals('Get AsInteger is incorrect!', 1, FInstantBoolean.AsInteger); end; *************** *** 216,218 **** end. ! \ No newline at end of file --- 216,218 ---- end. ! |
From: uberto b. <ub...@us...> - 2005-05-07 08:18:08
|
Update of /cvsroot/instantobjects/Source/Tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11365 Modified Files: TestInstantCurrency.pas Log Message: Simplyfied the tests and added some corner case. Index: TestInstantCurrency.pas =================================================================== RCS file: /cvsroot/instantobjects/Source/Tests/TestInstantCurrency.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TestInstantCurrency.pas 7 May 2005 04:59:48 -0000 1.1 --- TestInstantCurrency.pas 7 May 2005 08:17:32 -0000 1.2 *************** *** 8,27 **** // Test methods for class TInstantCurrency ! TestTInstantCurrency = class(TTestCase) private FAttrMetadata: TInstantAttributeMetadata; - FConn: TInstantMockConnector; FInstantCurrency: TInstantCurrency; - FOwner: TInstantObject; public procedure SetUp; override; procedure TearDown; override; published - procedure TestAsCurrency; - procedure TestAsFloat; - procedure TestAsInteger; procedure TestAssign; - procedure TestAsString; - procedure TestAsVariant; procedure TestReset; procedure TestValue; --- 8,20 ---- // Test methods for class TInstantCurrency ! TTestInstantCurrency = class(TTestCase) private FAttrMetadata: TInstantAttributeMetadata; FInstantCurrency: TInstantCurrency; public procedure SetUp; override; procedure TearDown; override; published procedure TestAssign; procedure TestReset; procedure TestValue; *************** *** 32,78 **** uses SysUtils, testregistry, InstantClasses; ! procedure TestTInstantCurrency.SetUp; begin - FConn := TInstantMockConnector.Create(nil); - FConn.BrokerClass := TInstantMockBroker; - FOwner := TInstantObject.Create(FConn); FAttrMetadata := TInstantAttributeMetadata.Create(nil); FAttrMetadata.AttributeClass := TInstantCurrency; FAttrMetadata.Name := 'AttrMetadataName'; ! FInstantCurrency := TInstantCurrency.Create(FOwner, FAttrMetadata); FInstantCurrency.Value := 1.3; end; ! procedure TestTInstantCurrency.TearDown; begin FreeAndNil(FInstantCurrency); FreeAndNil(FAttrMetadata); - FreeAndNil(FOwner); - FreeAndNil(FConn); - end; - - procedure TestTInstantCurrency.TestAsCurrency; - begin - FInstantCurrency.AsCurrency := 23.45; - AssertEquals('Set AsCurrency is incorrect!', 23.45, FInstantCurrency.Value); - AssertEquals('Get AsCurrency is incorrect!', 23.45, - FInstantCurrency.AsCurrency); - end; - - procedure TestTInstantCurrency.TestAsFloat; - begin - FInstantCurrency.AsFloat := 89.45; - AssertEquals('Set AsFloat is incorrect!', 89.45, FInstantCurrency.Value); - AssertEquals('Get AsFloat is incorrect!', 89.45, FInstantCurrency.AsFloat); end; ! procedure TestTInstantCurrency.TestAsInteger; ! begin ! FInstantCurrency.AsInteger := 89; ! AssertEquals('Set AsInteger is incorrect!', 89.0, FInstantCurrency.Value); ! AssertEquals('Get AsInteger is incorrect!', 89.0, FInstantCurrency.AsInteger); ! end; ! ! procedure TestTInstantCurrency.TestAssign; var vSource: TInstantCurrency; --- 25,44 ---- uses SysUtils, testregistry, InstantClasses; ! procedure TTestInstantCurrency.SetUp; begin FAttrMetadata := TInstantAttributeMetadata.Create(nil); FAttrMetadata.AttributeClass := TInstantCurrency; FAttrMetadata.Name := 'AttrMetadataName'; ! FInstantCurrency := TInstantCurrency.Create(nil, FAttrMetadata); FInstantCurrency.Value := 1.3; end; ! procedure TTestInstantCurrency.TearDown; begin FreeAndNil(FInstantCurrency); FreeAndNil(FAttrMetadata); end; ! procedure TTestInstantCurrency.TestAssign; var vSource: TInstantCurrency; *************** *** 89,107 **** end; ! procedure TestTInstantCurrency.TestAsString; ! begin ! FInstantCurrency.AsString := '1.3'; ! AssertEquals('Set AsString is incorrect!', 1.3, FInstantCurrency.Value); ! AssertEquals('Get AsString is incorrect!', '1.3', FInstantCurrency.AsString); ! end; ! ! procedure TestTInstantCurrency.TestAsVariant; ! begin ! FInstantCurrency.AsVariant := 15.1; ! AssertEquals('Set AsVariant is incorrect!', 15.1, FInstantCurrency.Value); ! AssertEquals('Get AsVariant is incorrect!', 15.1, FInstantCurrency.AsVariant); ! end; ! ! procedure TestTInstantCurrency.TestReset; begin AssertNotNull('Metadata is nil!', FInstantCurrency.Metadata); --- 55,59 ---- end; ! procedure TTestInstantCurrency.TestReset; begin AssertNotNull('Metadata is nil!', FInstantCurrency.Metadata); *************** *** 110,114 **** AssertEquals('Reset value is incorrect!', 1.3, FInstantCurrency.Value); ! FInstantCurrency.Metadata.DefaultValue := '15.7'; FInstantCurrency.Reset; AssertEquals('Reset value is incorrect!', 15.7, FInstantCurrency.Value); --- 62,66 ---- AssertEquals('Reset value is incorrect!', 1.3, FInstantCurrency.Value); ! FInstantCurrency.Metadata.DefaultValue := '15' + DecimalSeparator + '7'; FInstantCurrency.Reset; AssertEquals('Reset value is incorrect!', 15.7, FInstantCurrency.Value); *************** *** 120,136 **** end; ! procedure TestTInstantCurrency.TestValue; begin ! AssertEquals('Value is incorrect!', 1.3, FInstantCurrency.Value); ! FInstantCurrency.Value := 97.2; ! AssertEquals('Value is incorrect!', 97.2, FInstantCurrency.Value); end; initialization // Register any test cases with the test runner ! {$IFNDEF CURR_TESTS} ! RegisterTests([TestTInstantCurrency]); ! {$ENDIF} end. - \ No newline at end of file --- 72,97 ---- end; ! procedure TTestInstantCurrency.TestValue; ! var ! c: Currency; begin ! c := 123456789012.12345; ! FInstantCurrency.AsCurrency := c; ! AssertEquals(c, FInstantCurrency.Value); ! AssertEquals(c, FInstantCurrency.AsCurrency); ! c := c + 0.0001; ! AssertFalse('Precision limit', c = FInstantCurrency.Value); ! FInstantCurrency.AsCurrency := c; ! c := c + 0.00001; ! AssertEquals('Out of precision limit', c, FInstantCurrency.Value); ! c := -0.0001; ! FInstantCurrency.AsCurrency := c; ! AssertEquals(c, FInstantCurrency.Value); ! AssertFalse(0 = FInstantCurrency.Value); end; initialization // Register any test cases with the test runner ! RegisterTests([TTestInstantCurrency]); end. |