From 24ce12fdc5557f798ae9d2ee72e22ee0b53b1019 Mon Sep 17 00:00:00 2001 From: Mark van Renswoude Date: Mon, 10 Mar 2008 16:04:46 +0000 Subject: [PATCH] Added: base for unit tests Changed: extended type mapping for future improvements --- Tests/Source/ObjectMappingTests.pas | 40 +++++++ Tests/X2XMLDataBindingTests.cfg | 41 +++++++ Tests/X2XMLDataBindingTests.dof | 148 ++++++++++++++++++++++++ Tests/X2XMLDataBindingTests.dpr | 10 ++ Units/DelphiXMLDataBindingGenerator.pas | 77 ++++++++++-- X2XMLDataBindingCmdLine.cfg | 7 +- X2XMLDataBindingCmdLine.dpr | 5 - X2XMLDataBindingCmdLine.mes | 144 +++++++++++++++++++++++ 8 files changed, 455 insertions(+), 17 deletions(-) create mode 100644 Tests/Source/ObjectMappingTests.pas create mode 100644 Tests/X2XMLDataBindingTests.cfg create mode 100644 Tests/X2XMLDataBindingTests.dof create mode 100644 Tests/X2XMLDataBindingTests.dpr create mode 100644 X2XMLDataBindingCmdLine.mes diff --git a/Tests/Source/ObjectMappingTests.pas b/Tests/Source/ObjectMappingTests.pas new file mode 100644 index 0000000..55c3927 --- /dev/null +++ b/Tests/Source/ObjectMappingTests.pas @@ -0,0 +1,40 @@ +unit ObjectMappingTests; + +interface +uses + TestFramework; + + +type + TObjectMappingTests = class(TAbstractTest, ITest) + protected + procedure RunTest(testResult: TTestResult); override; + public + class function Suite: ITestSuite; + end; + + +implementation + +{ TObjectMappingTests } +class function TObjectMappingTests.Suite: ITestSuite; +begin + Result := TTestSuite.Create(Self.ClassName); + + { Add tests for all .xsd files which have a corresponding .expected file } + Result.AddTest(Self.Create('Test')); +end; + + +procedure TObjectMappingTests.RunTest(testResult: TTestResult); +begin + testResult.AddFailure(Self, nil, 'Oeps!'); +end; + + + +initialization + RegisterTest(TObjectMappingTests.Suite); + +end. + diff --git a/Tests/X2XMLDataBindingTests.cfg b/Tests/X2XMLDataBindingTests.cfg new file mode 100644 index 0000000..d636d14 --- /dev/null +++ b/Tests/X2XMLDataBindingTests.cfg @@ -0,0 +1,41 @@ +-$A8 +-$B- +-$C- +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$Y+ +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\" +-N"..\Lib" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/Tests/X2XMLDataBindingTests.dof b/Tests/X2XMLDataBindingTests.dof new file mode 100644 index 0000000..bd84db2 --- /dev/null +++ b/Tests/X2XMLDataBindingTests.dof @@ -0,0 +1,148 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=0 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=2 +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=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir=..\ +UnitOutputDir=..\Lib +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;vcldb;dsnapcon;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;CLXIB;ibxpress;VCLIB;teeui;teedb;tee;dss;vclactnband;vclshlctrls;dclOfficeXP;Indy70;cxLibraryVCLD7;dxBarD7;dxComnD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxsbD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxPageControlVCLD7;cxGridVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;cxVerticalGridVCLD7;cxSpreadSheetVCLD7;dxNavBarD7;cxWebD7;cxWebPascalScriptD7;cxWebSnapD7;cxWebTeeChartD7;dxMasterViewD7;dxmdsD7;dxdbtrD7;dxtrmdD7;dxorgcD7;dxdborD7;dxFlowChartD7;dxLayoutControlD7;dxLayoutControlcxEditAdaptersD7;dxPSCoreD7;dxPSTeeChartD7;dxPsPrVwAdvD7;dxPSLnksD7;dxPSdxOCLnkD7;dxPSdxMVLnkD7;dxPSdxLCLnkD7;dxPSdxFCLnkD7;dxPSdxDBTVLnkD7;dxPSdxDBOCLnkD7;dxPSDBTeeChartD7;dxPScxCommonD7;dxPScxTLLnkD7;dxPScxSSLnkD7;dxPScxPCProdD7;dxPScxGridLnkD7;dxPScxExtCommonD7;dxPScxVGridLnkD7;fo_d7;xtx_d7;Rave50CLX;Rave50VCL;pngimaged7;dxGDIPlusD7;UnRegDxPNG;unageneral_d7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Program Files\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=0 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1043 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=0.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion= +Comments= +[Excluded Packages] +C:\Program Files\Borland\Indy\D7\dclIndy70.bpl=Internet Direct (Indy) for D7 Property and Component Editors +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlUnitOutputDirectory] +Count=2 +Item0=..\Lib +Item1=Lib +[HistoryLists\hlOutputDirectorry] +Count=1 +Item0=..\ diff --git a/Tests/X2XMLDataBindingTests.dpr b/Tests/X2XMLDataBindingTests.dpr new file mode 100644 index 0000000..943065c --- /dev/null +++ b/Tests/X2XMLDataBindingTests.dpr @@ -0,0 +1,10 @@ +program X2XMLDataBindingTests; + +uses + GUITestRunner, + ObjectMappingTests in 'Source\ObjectMappingTests.pas'; + +begin + RunRegisteredTests; +end. + diff --git a/Units/DelphiXMLDataBindingGenerator.pas b/Units/DelphiXMLDataBindingGenerator.pas index 1da1eb2..21425e4 100644 --- a/Units/DelphiXMLDataBindingGenerator.pas +++ b/Units/DelphiXMLDataBindingGenerator.pas @@ -58,7 +58,7 @@ type implementation uses - SysUtils; + SysUtils, Dialogs; const @@ -122,12 +122,70 @@ const ); - SimpleTypeMapping: array[0..3, 0..1] of String = +type + // #ToDo1 (MvR) 10-3-2008: check handling for floats and booleans maybe? + TTypeHandling = (thNone, thDateTime); + + TTypeMapping = record + SchemaName: String; + DelphiName: String; + Handling: TTypeHandling; + end; + + +const + SimpleTypeMapping: array[0..9] of TTypeMapping = ( - ('int', 'Integer'), - ('float', 'Double'), - ('boolean', 'Boolean'), - ('string', 'WideString') + ( + SchemaName: 'int'; + DelphiName: 'Integer'; + Handling: thNone + ), + ( + SchemaName: 'integer'; + DelphiName: 'Integer'; + Handling: thNone + ), + ( + SchemaName: 'short'; + DelphiName: 'Smallint'; + Handling: thNone + ), + ( + SchemaName: 'date'; + DelphiName: 'TDateTime'; + Handling: thDateTime + ), + ( + SchemaName: 'time'; + DelphiName: 'TDateTime'; + Handling: thDateTime + ), + ( + SchemaName: 'dateTime'; + DelphiName: 'TDateTime'; + Handling: thDateTime + ), + ( + SchemaName: 'float'; + DelphiName: 'Double'; + Handling: thNone + ), + ( + SchemaName: 'double'; + DelphiName: 'Extended'; + Handling: thNone + ), + ( + SchemaName: 'boolean'; + DelphiName: 'Boolean'; + Handling: thNone + ), + ( + SchemaName: 'string'; + DelphiName: 'WideString'; + Handling: thNone + ) ); @@ -202,12 +260,15 @@ begin dataTypeName := ADataType.Name; for mappingIndex := Low(SimpleTypeMapping) to High(SimpleTypeMapping) do - if SimpleTypeMapping[mappingIndex][0] = dataTypeName then + if SimpleTypeMapping[mappingIndex].SchemaName = dataTypeName then begin - Result := SimpleTypeMapping[mappingIndex][1]; + Result := SimpleTypeMapping[mappingIndex].DelphiName; Break; end; end; + +// if Result = 'Variant' then +// ShowMessage('Unknown type: ' + ADataType.Name); end; diff --git a/X2XMLDataBindingCmdLine.cfg b/X2XMLDataBindingCmdLine.cfg index cfeaedd..f8bbbd6 100644 --- a/X2XMLDataBindingCmdLine.cfg +++ b/X2XMLDataBindingCmdLine.cfg @@ -32,10 +32,9 @@ -M -$M16384,1048576 -K$00400000 --N0"Lib" --LE"C:\Documents and Settings\PsychoMark\My Documents\Borland Studio Projects\Bpl" --LN"C:\Documents and Settings\PsychoMark\My Documents\Borland Studio Projects\Bpl" --DmadExcept +-N"Lib" +-LE"c:\program files\borland\delphi7\Projects\Bpl" +-LN"c:\program files\borland\delphi7\Projects\Bpl" -w-UNSAFE_TYPE -w-UNSAFE_CODE -w-UNSAFE_CAST diff --git a/X2XMLDataBindingCmdLine.dpr b/X2XMLDataBindingCmdLine.dpr index 2ac3810..4e84c45 100644 --- a/X2XMLDataBindingCmdLine.dpr +++ b/X2XMLDataBindingCmdLine.dpr @@ -1,11 +1,6 @@ program X2XMLDataBindingCmdLine; uses - madExcept, - madLinkDisAsm, - madListHardware, - madListProcesses, - madListModules, ActiveX, SysUtils, DelphiXMLDataBindingGenerator in 'Units\DelphiXMLDataBindingGenerator.pas', diff --git a/X2XMLDataBindingCmdLine.mes b/X2XMLDataBindingCmdLine.mes new file mode 100644 index 0000000..3f36614 --- /dev/null +++ b/X2XMLDataBindingCmdLine.mes @@ -0,0 +1,144 @@ +[GeneralSettings] +HandleExceptions=0 +AppendMapFileToBinary=1 +NoOwnMadExceptSettings=0 +CheckFileCrc=1 +CheckForFrozenMainThread=0 +FreezeTimeout=60000 +AutomaticallySaveBugReport=1 +AutoSaveBugReportIfNotSent=1 +AutomaticallyMailBugReport=0 +AutoMailProgressBox=0 +CopyBugReportToClipboard=0 +SuspendAllRunningThreads=0 +ShowPleaseWaitBox=1 +PleaseWaitIcon=plwait1 +AutomaticallyContinueApplication=0 +AutomaticallyRestartApplication=0 +AutomaticallyCloseApplication=0 +MailAddress= +SendInBackground=1 +Send32Icon=send321 +MailAsSmtpServer=0 +MailAsSmtpClient=0 +UploadViaHttp=0 +MailViaMapi=1 +MailViaMailto=1 +SmtpServer= +SmtpPort=25 +SmtpAccount= +SmtpPassword= +HttpServer= +HttpPort=80 +HttpAccount= +HttpPassword= +BugReportFile=bugreport.txt +AttachBugReport=1 +AttachBugReportFile=1 +DeleteBugReportFile=1 +BugReportSendAs=bugreport.txt +BugReportZip= +ScreenShotDepth=8 +ScreenShotAppOnly=0 +ScreenShotSendAs=screenshot.png +ScreenShotZip= +AdditionalAttachments= +AppendBugReports=1 +BugReportFileSize=100000 +DontSaveDuplicateExceptions=1 +DontSaveDuplicateFreezings=1 +DuplicateExceptionDefinition=1 +DuplicateFreezeDefinition=2 +ShowExceptionBox=1 +OkBtnText=&OK +DetailsBtnText=&Details +PleaseWaitTitle=Information +PleaseWaitText=Please wait a moment... +MailSubject=bug report +MailBody=please find the bug report attached +SendBoxTitle=Sending bug report... +PrepareAttachMsg=Preparing attachments... +MxLookupMsg=Searching for mail server... +ConnectMsg=Connecting to server... +AuthMsg=Authentication... +SendMailMsg=Sending mail... +FieldsMsg=Setting fields... +SendAttachMsg=Sending attachments... +SendFinalizeMsg=Finalizing... +MailFailureMsg=Sorry, sending the bug report didn't work. +VersionVariable= +[ExceptionBox] +ShowButtonMailBugReport=1 +ShowButtonSaveBugReport=0 +ShowButtonPrintBugReport=0 +ShowButtonShowBugReport=1 +ShowButtonContinueApplication=1 +ShowButtonRestartApplication=1 +ShowButtonCloseApplication=1 +IconButtonSendBugReport=send1 +IconButtonSaveBugReport=save1 +IconButtonPrintBugReport=print1 +IconButtonShowBugReport=show1 +IconButtonContinueApplication=continue1 +IconButtonCantContinueApplication=cantContinue1 +IconButtonRestartApplication=restart1 +IconButtonCloseApplication=close1 +FocusedButton=0 +SendAssistant=SendAssistant +SaveAssistant=SaveAssistant +PrintAssistant=PrintAssistant +AutomaticallyShowBugReport=0 +NoOwnerDrawButtons=0 +BigExceptionIcon=big1 +TitleBar=%25appname%25 +ExceptionMessage=An error occurred in the application. +FrozenMessage=The application seems to be frozen. +BitFaultMsg=The file "%25modname%25" seems to be corrupt! +MailBugReportText=send bug report +SaveBugReportText=save bug report +PrintBugReportText=print bug report +ShowBugReportText=show bug report +ContinueApplicationText=continue application +RestartApplicationText=restart application +CloseApplicationText=close application +[BugReport] +ListThreads=1 +ListModules=1 +ListHardware=1 +ShowCpuRegisters=1 +ShowStackDump=1 +Disassembly=1 +HideUglyItems=0 +ShowRelativeAddrs=1 +ShowRelativeLines=1 +FormatDisassembly=0 +LimitDisassembly=5 +EnabledPlugins=modules|processes|hardware +[Filters] +Filter1ExceptionClasses=EDBEditError +Filter1DontCreateBugReport=1 +Filter1DontCreateScreenshot=1 +Filter1DontSuspendThreads=1 +Filter1DontCallHandlers=1 +Filter1ShowBox=3 +Filter1Assis= +Filter2ExceptionClasses= +Filter2DontCreateBugReport=0 +Filter2DontCreateScreenshot=0 +Filter2DontSuspendThreads=0 +Filter2DontCallHandlers=0 +Filter2ShowBox=0 +Filter2Assis= +GeneralDontCreateBugReport=0 +GeneralDontCreateScreenshot=0 +GeneralDontSuspendThreads=0 +GeneralDontCallHandlers=0 +GeneralShowBox=0 +GeneralAssis= +[Assistants] +Assistant1=SendAssistant|Send Assistant|ContactForm|DetailsForm|ScrShotForm +Assistant2=SaveAssistant|Save Assistant|ContactForm|DetailsForm +Assistant3=PrintAssistant|Print Assistant|ContactForm|DetailsForm +Forms1=TPF0%0eTMEContactForm%0bContactForm%07Message%0c%13%00%00%00Contact Information%08MinWidth%04%00%00%00%00%08OnAction%0c%1b%00%00%00madExcept.HandleContactForm%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c%0a%00%00%00your name:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%08NameEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%09%0aOutputName%0c%0c%00%00%00contact name%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%08INVLabel%06Label2%07Caption%0c%0b%00%00%00your email:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%09EmailEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00contact email%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%0bINVCheckBox%08MemCheck%07Caption%0c%0b%00%00%00remember me%07Checked%08%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%00 +Forms2=TPF0%0eTMEDetailsForm%0bDetailsForm%07Message%0c%0d%00%00%00Error Details%08MinWidth%04%00%00%00%00%08OnAction%0c%00%00%00%00%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c'%00%00%00in which situation did the error occur?%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%0bDetailsMemo%07Colored%09%07Enabled%09%05Lines%04%09%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00error details%0aOutputType%07%0dnvoOwnSection%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%00 +Forms3=TPF0%0eTMEScrShotForm%0bScrShotForm%0dActiveControl%07%0bContinueBtn%07Message%0c%18%00%00%00Screenshot Configuration%08MinWidth%04%00%00%00%00%08OnAction%0c%1e%00%00%00madExcept.HandleScreenshotForm%05Timer%04%fa%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%0bINVCheckBox%0bAttachCheck%07Caption%0c%25%00%00%00attach a screenshot to the bug report%07Checked%09%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%08INVImage%0aScrShotImg%06Border%09%09Clickable%09%07Enabled%09%04File%0c%00%00%00%00%06Height%04%00%00%00%00%07Spacing%04%00%00%00%00%05Width%04%00%00%00%00%00%00%08INVLabel%06Label1%07Caption%0c%15%00%00%00(click to edit image)%07Enabled%09%07Spacing%04%00%00%00%00%00%00%00