├── CodeCoverage ├── dcov_paths.lst ├── dcov_units.lst ├── CodeCoverage.exe ├── DelphiCodeCoverageWizard.exe ├── dcov_execute.bat └── Output │ ├── CodeCoverage_summary.html │ └── Core.Card(Core.Card.pas).html ├── README.md ├── DUnitX_And_CodeCoverage.rc ├── DUnitX_And_CodeCoverage.rsb ├── .gitignore ├── Tests └── Core.CardTests.pas ├── Core └── Core.Card.pas ├── DUnitX_And_CodeCoverage_Group.groupproj ├── DUnitX_And_CodeCoverage.dpr ├── Build └── BuildTests.fbp8 ├── DUnitX_And_CodeCoverage.mes ├── LICENSE └── DUnitX_And_CodeCoverage.dproj /CodeCoverage/dcov_paths.lst: -------------------------------------------------------------------------------- 1 | ..\Core\ 2 | -------------------------------------------------------------------------------- /CodeCoverage/dcov_units.lst: -------------------------------------------------------------------------------- 1 | Core.Card 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DelphiCodeCoverageExample 2 | An example of how to run code coverage in Delphi 3 | -------------------------------------------------------------------------------- /DUnitX_And_CodeCoverage.rc: -------------------------------------------------------------------------------- 1 | MAINICON ICON "C:\\Program Files (x86)\\Embarcadero\\Studio\\15.0\\bin\\delphi_PROJECTICON.ico" 2 | -------------------------------------------------------------------------------- /DUnitX_And_CodeCoverage.rsb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VSoftTechnologies/DelphiCodeCoverageExample/HEAD/DUnitX_And_CodeCoverage.rsb -------------------------------------------------------------------------------- /CodeCoverage/CodeCoverage.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VSoftTechnologies/DelphiCodeCoverageExample/HEAD/CodeCoverage/CodeCoverage.exe -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Win32/ 2 | */__history 3 | *.log 4 | *.local 5 | *.dsk 6 | *.identcache 7 | *.res 8 | *.fbl8 9 | *.fbpInf 10 | *.fbpbrk 11 | *.~dsk 12 | -------------------------------------------------------------------------------- /CodeCoverage/DelphiCodeCoverageWizard.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VSoftTechnologies/DelphiCodeCoverageExample/HEAD/CodeCoverage/DelphiCodeCoverageWizard.exe -------------------------------------------------------------------------------- /CodeCoverage/dcov_execute.bat: -------------------------------------------------------------------------------- 1 | "CodeCoverage.exe" -e "..\Win32\CI\DUnitX_And_CodeCoverage.exe" -m "..\Win32\CI\DUnitX_And_CodeCoverage.map" -ife -uf dcov_units.lst -spf dcov_paths.lst -od ".\Output\" -lt -html -------------------------------------------------------------------------------- /Tests/Core.CardTests.pas: -------------------------------------------------------------------------------- 1 | unit Core.CardTests; 2 | 3 | interface 4 | 5 | uses 6 | DUnitX.TestFramework; 7 | 8 | type 9 | {$M+} 10 | [TestFixture] 11 | TCardTest = class 12 | published 13 | [Test] 14 | procedure A_Card_FacingUp_Once_Flipped_Is_Facing_Down; 15 | end; 16 | 17 | implementation 18 | 19 | uses 20 | Core.Card; 21 | 22 | { TCardTest } 23 | 24 | procedure TCardTest.A_Card_FacingUp_Once_Flipped_Is_Facing_Down; 25 | var 26 | sutCard : ICard; 27 | begin 28 | //CREATE: Create the card under test 29 | sutCard := TCard.Create; 30 | //TEST: The flip call is being tested, so we call it. 31 | sutCard.Flip; 32 | //ASSERT: The card should now be facing Down 33 | Assert.AreEqual(False, sutCard.FacingUp); 34 | end; 35 | 36 | initialization 37 | 38 | TDUnitX.RegisterTestFixture(TCardTest); 39 | 40 | end. 41 | -------------------------------------------------------------------------------- /Core/Core.Card.pas: -------------------------------------------------------------------------------- 1 | unit Core.Card; 2 | 3 | interface 4 | 5 | type 6 | ICard = interface 7 | ['{1BD19858-F354-498C-AF3D-E363122019A3}'] 8 | function GetFacingUp : boolean; 9 | 10 | function Flip : boolean; 11 | property FacingUp : boolean read GetFacingUp; 12 | end; 13 | 14 | TCard = class(TInterfacedObject, ICard) 15 | private 16 | FFacingUp : boolean; 17 | public 18 | constructor Create; 19 | function GetFacingUp : boolean; 20 | function Flip : boolean; 21 | function TurnFaceDown : boolean; 22 | end; 23 | 24 | implementation 25 | 26 | { TCard } 27 | 28 | constructor TCard.Create; 29 | begin 30 | inherited; 31 | //By default the card is facing up. 32 | FFacingUp := True; 33 | end; 34 | 35 | function TCard.Flip: boolean; 36 | begin 37 | //Change the card from facing the way it is to the facing the other way. 38 | //A card can either be facing up, or down. 39 | FFacingUp := not FFacingUp; 40 | 41 | //Return the current facing up status. 42 | result := FFacingUp; 43 | end; 44 | 45 | function TCard.GetFacingUp: boolean; 46 | begin 47 | //Return whether the card is facing up or not. 48 | result := FFacingUp; 49 | end; 50 | 51 | function TCard.TurnFaceDown: boolean; 52 | begin 53 | //Make the card face down. 54 | FFacingUp := false; 55 | //Return the current facing up status. 56 | result := FFacingUp; 57 | end; 58 | 59 | end. 60 | -------------------------------------------------------------------------------- /DUnitX_And_CodeCoverage_Group.groupproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {AE98A464-D391-4744-BAC3-36C17EC5EE94} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Default.Personality.12 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /DUnitX_And_CodeCoverage.dpr: -------------------------------------------------------------------------------- 1 | program DUnitX_And_CodeCoverage; 2 | 3 | {$IFNDEF TESTINSIGHT} 4 | {$APPTYPE CONSOLE} 5 | {$ENDIF} 6 | 7 | {$R *.res} 8 | 9 | uses 10 | DUnitX.TestFramework, 11 | DUnitX.Loggers.Console, 12 | DUnitX.Windows.Console, 13 | DUnitX.Loggers.XML.NUnit, 14 | {$IFDEF TESTINSIGHT} 15 | TestInsight.DUnitX, 16 | {$ENDIF } 17 | System.SysUtils, 18 | Core.Card in 'Core\Core.Card.pas', 19 | Core.CardTests in 'Tests\Core.CardTests.pas'; 20 | 21 | var 22 | runner : ITestRunner; 23 | results : IRunResults; 24 | logger : ITestLogger; 25 | nunitLogger : ITestLogger; 26 | begin 27 | {$IFDEF TESTINSIGHT} 28 | try 29 | TestInsight.DUnitX.RunRegisteredTests; 30 | except 31 | on e : Exception do 32 | begin 33 | Writeln(e.Message); 34 | ReadLn; 35 | end; 36 | end; 37 | 38 | exit; 39 | {$ENDIF} 40 | try 41 | try 42 | //Create the runner 43 | TDUnitX.CheckCommandLine; 44 | runner := TDUnitX.CreateRunner; 45 | runner.UseRTTI := True; 46 | runner.FailsOnNoAsserts := true; 47 | 48 | //tell the runner how we will log things 49 | logger := TDUnitXConsoleLogger.Create(false); 50 | runner.AddLogger(logger); 51 | nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile); 52 | runner.AddLogger(nunitLogger); 53 | 54 | //Run tests 55 | results := runner.Execute; 56 | 57 | //Let the CI Server know that something failed. 58 | if results.AllPassed then 59 | System.ExitCode := 0 60 | else 61 | System.ExitCode := EXIT_ERRORS; 62 | 63 | System.Writeln; 64 | except 65 | on E: Exception do 66 | Writeln(E.ClassName, ': ', E.Message); 67 | end; 68 | 69 | finally 70 | {$IFNDEF CI} 71 | if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause then 72 | begin 73 | System.Write('Done.. press key to quit.'); 74 | System.Readln; 75 | end; 76 | {$ENDIF} 77 | end; 78 | end. 79 | -------------------------------------------------------------------------------- /CodeCoverage/Output/CodeCoverage_summary.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Delphi CodeCoverage Coverage Report 6 | 32 | 33 | 34 |

Summary Coverage Report

35 |

Generated at 6/11/2015 11:19:07 AM by DelphiCodeCoverage - an open source tool for Delphi Code Coverage.

36 |

Aggregate statistics for all modules

37 | 38 | 39 | 40 | 41 |
Unit NameNumber of covered linesNumber of lines (which generated code)Percent(s) covered
Core.Card111573%
Aggregated for all units111573%
42 | 43 | 44 | -------------------------------------------------------------------------------- /Build/BuildTests.fbp8: -------------------------------------------------------------------------------- 1 | project 2 | begin 3 | projectid = {E0AFBA9C-BAE2-4BEB-B0CD-5A7CE0A6DF8C} 4 | target 5 | begin 6 | name = Default 7 | targetid = {F4BEED01-A008-447E-9718-8290488BA938} 8 | rootaction 9 | begin 10 | action.delphi.build 11 | begin 12 | allowimplicitimport = true 13 | alwaysuseconditionalsfromdof = true 14 | autoincbuild = false 15 | autoupdatefileversion = true 16 | autoupdateproductversion = false 17 | buildall = true 18 | buildversion = 0 19 | codepage = 1252 20 | compileprojectresources = false 21 | compileridl = true 22 | configname = CI 23 | debugversionnumbers = false 24 | delphiversion = DelphiXE7 25 | eurekalogverboselogging = false 26 | frameworktype = VCL 27 | hintsaserror = false 28 | iconfile = $(BDS)\\bin\\delphi_PROJECTICON.ico 29 | id = {A727BB52-C907-4922-922C-04D3B7A07E4F} 30 | includecompiledate = false 31 | includemanifest = false 32 | includeverinfo = false 33 | isdebug = false 34 | isdll = false 35 | isprerelease = false 36 | isprivate = false 37 | isspecial = false 38 | keepcfg = false 39 | linkproductversiontofileversion = true 40 | locale = 1033 41 | majorversion = 1 42 | minorversion = 0 43 | platform = Win32 44 | projectfile = %FBPROJECTDIR%\\..\\DUnitX_And_CodeCoverage.dpr 45 | regenerateresource = true 46 | releaseversion = 0 47 | resourcecompilertype = rcBorland 48 | startingdir = %FBPROJECTDIR%\\..\\ 49 | updatedoffile = false 50 | updatepackagesource = false 51 | updateversioninfokeys = false 52 | useeurekalogcompiler = false 53 | useprojectsettings = [usPackages,usCompiler,usLinker,usDirectories,usVersionInfo] 54 | usepropertyset = false 55 | useversionfromdof = false 56 | versioninfokeys = "CompanyName\=" + 57 | "FileDescription\=" + 58 | "FileVersion\=1.0.0.0" + 59 | "InternalName\=" + 60 | "LegalCopyright\=" + 61 | "LegalTrademarks\=" + 62 | "OriginalFilename\=" + 63 | "ProductName\=" + 64 | "ProductVersion\=1.0.0.0" + 65 | "Comments\=" + 66 | "" 67 | warningsaserror = false 68 | workaroundd5bug = false 69 | delphi.compileroptions 70 | begin 71 | alwaysuseconditionalsfromdof = true 72 | alwaysusedelphilibrarypath = true 73 | alwaysusedofsearchpath = true 74 | assertions = true 75 | assignableconst = false 76 | booleval = false 77 | conditionals = DEBUG;madExcept;CI 78 | consoleapp = true 79 | debuginfo = true 80 | definitionsonly = true 81 | emitruntimetypeinformation = false 82 | exportallsymbols = false 83 | extendedsyntax = true 84 | externaltd32 = false 85 | frameworktype = None 86 | generatedocumentation = false 87 | generatehpp = false 88 | hugestrings = true 89 | imagebase = 4194304 90 | includenamespaces = false 91 | includeremotesymbols = false 92 | includetd32 = true 93 | inlining = inOn 94 | iochecking = true 95 | librarypath = "c:\\program files (x86)\\embarcadero\\studio\\15.0\\lib\\Win32\\release;C:\\Users\\jason\\Documents\\Embarcadero\\Studio\\15.0\\Imports;c:\\program files (x86)\\embarcadero\\studio\\15.0\\Imports;C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\15.0\\Dcp;c:\\program files (x86)\\embarcadero\\studio\\15.0\\include;C:\\Program Files (x86)\\madCollection\\madBasic\\BDS15\\win32;C:\\Program Files (x86)\\madCollection\\madDisAsm\\BDS15\\win32;C:\\Program Files (x86)\\madCollection\\madExcept\\BDS15\\win32;C:\\Program Files (x86)\\madCollection\\Plugins\\win32;C:\\Program Files (x86)\\madCollection\\madRemote\\BDS15\\win32;C:\\Program Files (x86)\\madCollection\\madKernel\\BDS15\\win32;C:\\Program Files (x86)\\madCollection\\madCodeHook\\BDS15\\win32;C:\\Program Files (x86)\\madCollection\\madSecurity\\BDS15\\win32;C:\\Program Files (x86)\\madCollection\\madShell\\BDS15\\win32;C:\\Program Files (x86)\\Raize\\RC6\\Lib\\RS-XE7\\Win32;c:\\documents and settings\\all users\\documents\\rad studio\\9.0\\dcp;I:\\OpenSource\\SourceForge\\FastMM\\;C:\\Program Files (x86)\\ddobjects.de\\DDDebug\\Lib\\DelphiXE7\\$(Platform);C:\\Program Files (x86)\\TestInsight\\Source;$(TestInsight)" 96 | linkeroutput = 0 97 | localsymbols = true 98 | mapfile = 3 99 | maxstacksize = 1048576 100 | minstacksize = 16384 101 | namespaceprefixes = System;Xml;Data;Datasnap;Web;Soap;Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde; 102 | openstrings = true 103 | optimisation = false 104 | outputdir = .\\$(Platform)\\$(Config) 105 | overflowchecking = false 106 | packages = madbasic_;nxgridrun_dxe7;fbmisccomponents;bindcompfmx;dbxsqlitedriver;addict4_d21;dwwin7controls;restbackendcomponents;fmx;raizecomponentsvcldb;rtl;dbrtl;dbxclientdriver;indysystem;tethering;bindcomp;inetdb;fixinsight_xe7;raizecomponentsvcl;dbxinterbasedriver;fbdreamruntime;maddisasm_;xmlrtl;svnui;dbxcommondriver;vclimg;indyprotocols;dbxcds;dbxmysqldriver;sptbxlib_d21;metropolisuilivetile;nxcommondsgn_dxe7;soaprtl;vclactnband;bindengine;vcldb;bindcompdbx;vcldsnap;bindcompvcl;vspager;nxcommonrun_dxe7;fbformdesigner;vclie;madexcept_;vcltouch;emsclient;customiptransport;frameviewerxe7;vclribbon;vclsmp;dsnap;indyipserver;vclrestcomponents;nxgriddsgn_dxe7;fmxase;vcl;indycore;synedit_rxe7;indyipcommon;cloudservice;dsnapcon;kwizardr;inet;fmxobj;fbsynedithighlighters;soapserver;soapmidas;vclx;inetdbxpress;lmdrtdocking;svn;dcef_xe7;dsnapxml;fmxdae;restcomponents;jsdialogpack;tb2k;virtualtreesr;lmdrtl;adortl;dbexpress;indyipclient 107 | rangechecking = false 108 | recordfieldalign = fa8 109 | referenceinfo = true 110 | safedivide = false 111 | searchpath = $(DUNITX) 112 | showhints = true 113 | showwarnings = true 114 | stackframes = true 115 | stringchecks = true 116 | typedpointers = false 117 | unitaliases = WinTypes\=Windows;WinProcs\=Windows;DbiTypes\=BDE;DbiProcs\=BDE;DbiErrs\=BDE 118 | unitoutputdir = .\\$(Platform)\\$(Config) 119 | usedebugdcu = false 120 | usepackages = false 121 | varstringchecks = true 122 | end 123 | end 124 | end 125 | end 126 | end -------------------------------------------------------------------------------- /DUnitX_And_CodeCoverage.mes: -------------------------------------------------------------------------------- 1 | [GeneralSettings] 2 | MesVersion=4 3 | HandleExceptions=0 4 | LinkInCode=1 5 | AppendMapFileToBinary=1 6 | NoOwnMadExceptSettings=0 7 | CheckFileCrc=1 8 | CheckForFrozenMainThread=0 9 | FreezeTimeout=60000 10 | ReportLeaks=0 11 | WindowsLogo=0 12 | CrashOnBuffer=0 13 | CrashOnUnderrun=0 14 | AutomaticallySaveBugReport=1 15 | AutoSaveBugReportIfNotSent=1 16 | AutomaticallyMailBugReport=0 17 | AutoMailProgressBox=0 18 | CopyBugReportToClipboard=0 19 | SuspendAllRunningThreads=0 20 | ShowPleaseWaitBox=1 21 | PleaseWaitIcon=plwait1 22 | AutomaticallyContinueApplication=0 23 | AutomaticallyRestartApplication=0 24 | AutomaticallyCloseApplication=0 25 | SendInBackground=1 26 | SendHelper=196608 27 | Send32Icon=send321 28 | UploadViaHttp=0 29 | HttpServer= 30 | HttpSsl=0 31 | HttpPort=0 32 | HttpAccount= 33 | HttpPassword= 34 | UploadToFogBugz=0 35 | UploadToBugZilla=0 36 | UploadToMantis=0 37 | BugTrackerAccount= 38 | BugTrackerPassword= 39 | BugTrackerProject= 40 | BugTrackerArea= 41 | BugTrackerAssignTo= 42 | MailAsSmtpServer=0 43 | MailAsSmtpClient=0 44 | SmtpServer= 45 | SmtpSsl=0 46 | SmtpTls=0 47 | SmtpPort=0 48 | SmtpAccount= 49 | SmtpPassword= 50 | MailViaMapi=1 51 | MailViaMailto=1 52 | MailAddress= 53 | BugReportFile=bugreport.txt 54 | AttachBugReport=1 55 | AttachBugReportFile=1 56 | DeleteBugReportFile=1 57 | BugReportSendAs=bugreport.txt 58 | BugReportZip= 59 | ScreenShotDepth=8 60 | ScreenShotAppOnly=0 61 | ScreenShotSendAs=screenshot.png 62 | ScreenShotZip= 63 | AdditionalAttachments= 64 | AppendBugReports=1 65 | BugReportFileSize=100000 66 | DontSaveDuplicateExceptions=1 67 | DontSaveDuplicateFreezings=1 68 | DuplicateExceptionDefinition=1 69 | DuplicateFreezeDefinition=2 70 | ShowExceptionBox=1 71 | OkBtnText=&OK 72 | DetailsBtnText=&Details 73 | PleaseWaitTitle=Information 74 | PleaseWaitText=Please wait a moment... 75 | BugTrackerTitle=%25appname%25, %25exceptMsg%25 76 | BugTrackerDescr=error details: %0d%0a%25errorDetails%25 77 | MailSubject=bug report 78 | MailBody=please find the bug report attached 79 | SendBoxTitle=Sending bug report... 80 | PrepareAttachMsg=Preparing attachments... 81 | MxLookupMsg=Searching for mail server... 82 | ConnectMsg=Connecting to server... 83 | SendMailMsg=Sending mail... 84 | FieldsMsg=Setting fields... 85 | SendAttachMsg=Sending attachments... 86 | SendFinalizeMsg=Finalizing... 87 | MailFailureMsg=Sorry, sending the bug report didn't work. 88 | VersionVariable= 89 | [ExceptionBox] 90 | ShowButtonMailBugReport=1 91 | ShowButtonSaveBugReport=0 92 | ShowButtonPrintBugReport=0 93 | ShowButtonShowBugReport=1 94 | ShowButtonContinueApplication=1 95 | ShowButtonRestartApplication=1 96 | ShowButtonCloseApplication=1 97 | IconButtonSendBugReport=send1 98 | IconButtonSaveBugReport=save1 99 | IconButtonPrintBugReport=print1 100 | IconButtonShowBugReport=show1 101 | IconButtonContinueApplication=continue1 102 | IconButtonCantContinueApplication=cantContinue1 103 | IconButtonRestartApplication=restart1 104 | IconButtonCloseApplication=close1 105 | FocusedButton=0 106 | SendAssistant=SendAssistant 107 | SaveAssistant=SaveAssistant 108 | PrintAssistant=PrintAssistant 109 | AutomaticallyShowBugReport=0 110 | NoOwnerDrawButtons=0 111 | BigExceptionIcon=big1 112 | TitleBar=%25appname%25 113 | ExceptionMessage=An error occurred in the application. 114 | FrozenMessage=The application seems to be frozen. 115 | BitFaultMsg=The file "%25modname%25" seems to be corrupt! 116 | MailBugReportText=send bug report 117 | SaveBugReportText=save bug report 118 | PrintBugReportText=print bug report 119 | ShowBugReportText=show bug report 120 | ContinueApplicationText=continue application 121 | RestartApplicationText=restart application 122 | CloseApplicationText=close application 123 | [BugReport] 124 | ListThreads=1 125 | ListModules=1 126 | ListHardware=1 127 | ShowCpuRegisters=1 128 | ShowStackDump=1 129 | Disassembly=1 130 | HideUglyItems=0 131 | ShowRelativeAddrs=1 132 | ShowRelativeLines=1 133 | FormatDisassembly=0 134 | LimitDisassembly=5 135 | EnabledPlugins=modules|processes|hardware 136 | [Filters] 137 | Filter1ExceptionClasses=EDBEditError 138 | Filter1DontCreateBugReport=1 139 | Filter1DontCreateScreenshot=1 140 | Filter1DontSuspendThreads=1 141 | Filter1DontCallHandlers=1 142 | Filter1ShowBox=3 143 | Filter1Assis= 144 | Filter2ExceptionClasses= 145 | Filter2DontCreateBugReport=0 146 | Filter2DontCreateScreenshot=0 147 | Filter2DontSuspendThreads=0 148 | Filter2DontCallHandlers=0 149 | Filter2ShowBox=0 150 | Filter2Assis= 151 | GeneralDontCreateBugReport=0 152 | GeneralDontCreateScreenshot=0 153 | GeneralDontSuspendThreads=0 154 | GeneralDontCallHandlers=0 155 | GeneralShowBox=0 156 | GeneralAssis= 157 | [Assistants] 158 | Assistant1=SendAssistant|Send Assistant|ContactForm|DetailsForm|ScrShotForm 159 | Assistant2=SaveAssistant|Save Assistant|ContactForm|DetailsForm 160 | Assistant3=PrintAssistant|Print Assistant|ContactForm|DetailsForm 161 | 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 162 | 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%00what were you doing when the error occurred?%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 163 | 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 164 | -------------------------------------------------------------------------------- /CodeCoverage/Output/Core.Card(Core.Card.pas).html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Delphi CodeCoverage Coverage Report 6 | 32 | 33 | 34 |

Coverage report for Core.Card (I:\Examples\DUnitX_CodeCoverage\Core\Core.Card.pas).

35 |

Generated at 6/11/2015 11:19:07 AM by DelphiCodeCoverage - an open source tool for Delphi Code Coverage.

36 |

Statistics for I:\Examples\DUnitX_CodeCoverage\Core\Core.Card.pas

37 |
Number of lines covered11
Number of lines with code gen15
Line coverage73%
38 |

39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 |
1
unit Core.Card;
2
3
interface
4
5
type
6
  ICard = interface
7
    ['{1BD19858-F354-498C-AF3D-E363122019A3}']
8
    function GetFacingUp : boolean;
9
10
    function Flip : boolean;
11
    property FacingUp : boolean read GetFacingUp;
12
  end;
13
14
  TCard = class(TInterfacedObject, ICard)
15
  private
16
    FFacingUp : boolean;
17
  public
18
    constructor Create;
19
    function GetFacingUp : boolean;
20
    function Flip : boolean;
21
    function TurnFaceDown : boolean;
22
  end;
23
24
implementation
25
26
{ TCard }
27
28
constructor TCard.Create;
29
begin
30
  inherited;
31
  //By default the card is facing up.
32
  FFacingUp := True;
33
end;
34
35
function TCard.Flip: boolean;
36
begin
37
  //Change the card from facing the way it is to the facing the other way.
38
  //A card can either be facing up, or down.
39
  FFacingUp := not FFacingUp;
40
41
  //Return the current facing up status.
42
  result := FFacingUp;
43
end;
44
45
function TCard.GetFacingUp: boolean;
46
begin
47
  //Return whether the card is facing up or not.
48
  result := FFacingUp;
49
end;
50
51
function TCard.TurnFaceDown: boolean;
52
begin
53
  //Make the card face down.
54
  FFacingUp := false;
55
  //Return the current facing up status.
56
  result := FFacingUp;
57
end;
58
59
end.
100 | 101 | 102 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /DUnitX_And_CodeCoverage.dproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | {80FC2920-4C2D-4865-987E-7366455EACD1} 4 | 16.1 5 | None 6 | DUnitX_And_CodeCoverage.dpr 7 | True 8 | CI 9 | Win32 10 | 1 11 | Console 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Cfg_1 39 | true 40 | true 41 | 42 | 43 | true 44 | Cfg_1 45 | true 46 | true 47 | 48 | 49 | true 50 | Cfg_3 51 | true 52 | true 53 | true 54 | 55 | 56 | true 57 | Cfg_1 58 | true 59 | true 60 | 61 | 62 | true 63 | Cfg_4 64 | true 65 | true 66 | true 67 | 68 | 69 | true 70 | Base 71 | true 72 | 73 | 74 | $(BDS)\bin\default_app.manifest 75 | 3081 76 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= 77 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 78 | DUnitX_And_CodeCoverage 79 | .\$(Platform)\$(Config) 80 | .\$(Platform)\$(Config) 81 | false 82 | false 83 | false 84 | false 85 | false 86 | 87 | 88 | bindcompfmx;DBXSqliteDriver;RESTBackendComponents;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;tethering;bindcomp;inetdb;DBXInterBaseDriver;xmlrtl;DbxCommonDriver;IndyProtocols;dbxcds;DBXMySQLDriver;soaprtl;bindengine;bindcompdbx;emsclient;CustomIPTransport;dsnap;IndyIPServer;fmxase;IndyCore;IndyIPCommon;CloudService;inet;fmxobj;soapserver;soapmidas;inetdbxpress;dsnapxml;fmxdae;RESTComponents;dbexpress;IndyIPClient;$(DCC_UsePackage) 89 | true 90 | 91 | 92 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 93 | madBasic_;NxGridRun_dxe7;FBMiscComponents;bindcompfmx;DBXSqliteDriver;addict4_d21;dwWin7Controls;RESTBackendComponents;fmx;RaizeComponentsVclDb;rtl;dbrtl;DbxClientDriver;IndySystem;tethering;bindcomp;inetdb;FixInsight_XE7;RaizeComponentsVcl;DBXInterBaseDriver;FBDreamRuntime;madDisAsm_;xmlrtl;svnui;DbxCommonDriver;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;SpTBXLib_d21;MetropolisUILiveTile;NxCommonDsgn_dxe7;soaprtl;vclactnband;bindengine;vcldb;bindcompdbx;vcldsnap;bindcompvcl;VSPageR;NxCommonRun_dxe7;FBFormDesigner;vclie;madExcept_;vcltouch;emsclient;CustomIPTransport;FrameViewerXE7;vclribbon;VclSmp;dsnap;IndyIPServer;VCLRESTComponents;NxGridDsgn_dxe7;fmxase;vcl;IndyCore;SynEdit_RXE7;IndyIPCommon;CloudService;dsnapcon;KWizardR;inet;fmxobj;FBSynEditHighlighters;soapserver;soapmidas;vclx;inetdbxpress;lmdrtdocking;svn;DCEF_XE7;dsnapxml;fmxdae;RESTComponents;JSDialogPack;tb2k;VirtualTreesR;lmdrtl;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage) 94 | 1033 95 | CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= 96 | true 97 | 98 | 99 | NxGridRun_dxe7;bindcompfmx;DBXSqliteDriver;RESTBackendComponents;fmx;RaizeComponentsVclDb;rtl;dbrtl;DbxClientDriver;IndySystem;tethering;bindcomp;inetdb;RaizeComponentsVcl;DBXInterBaseDriver;xmlrtl;DbxCommonDriver;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;MetropolisUILiveTile;NxCommonDsgn_dxe7;soaprtl;vclactnband;bindengine;vcldb;bindcompdbx;vcldsnap;bindcompvcl;NxCommonRun_dxe7;vclie;vcltouch;emsclient;CustomIPTransport;vclribbon;VclSmp;dsnap;IndyIPServer;VCLRESTComponents;NxGridDsgn_dxe7;fmxase;vcl;IndyCore;IndyIPCommon;CloudService;dsnapcon;inet;fmxobj;soapserver;soapmidas;vclx;inetdbxpress;lmdrtdocking;dsnapxml;fmxdae;RESTComponents;VirtualTreesR;lmdrtl;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage) 100 | true 101 | 102 | 103 | $(DUNITX);$(DCC_UnitSearchPath) 104 | DEBUG;$(DCC_Define) 105 | true 106 | false 107 | true 108 | true 109 | true 110 | 111 | 112 | madExcept;$(DCC_Define) 113 | 1 114 | 3 115 | 1033 116 | false 117 | 118 | 119 | $(TestInsight);$(DCC_UnitSearchPath) 120 | 121 | 122 | TESTINSIGHT;$(DCC_Define) 123 | 1 124 | 3 125 | 1033 126 | 127 | 128 | CI;$(DCC_Define) 129 | 130 | 131 | 3 132 | 1033 133 | 134 | 135 | false 136 | RELEASE;$(DCC_Define) 137 | 0 138 | 0 139 | 140 | 141 | 142 | MainSource 143 | 144 | 145 | 146 | 147 | Cfg_2 148 | Base 149 | 150 | 151 | Cfg_4 152 | Cfg_1 153 | 154 | 155 | Cfg_3 156 | Cfg_1 157 | 158 | 159 | Base 160 | 161 | 162 | Cfg_1 163 | Base 164 | 165 | 166 | 167 | Delphi.Personality.12 168 | Application 169 | 170 | 171 | 172 | DUnitX_And_CodeCoverage.dpr 173 | 174 | 175 | 176 | 177 | 178 | DUnitX_And_CodeCoverage.exe 179 | true 180 | 181 | 182 | 183 | 184 | DUnitX_And_CodeCoverage.exe 185 | true 186 | 187 | 188 | 189 | 190 | true 191 | 192 | 193 | true 194 | 195 | 196 | 197 | 198 | 1 199 | .dylib 200 | 201 | 202 | 0 203 | .bpl 204 | 205 | 206 | Contents\MacOS 207 | 1 208 | .dylib 209 | 210 | 211 | 1 212 | .dylib 213 | 214 | 215 | 216 | 217 | 1 218 | .dylib 219 | 220 | 221 | 0 222 | .dll;.bpl 223 | 224 | 225 | Contents\MacOS 226 | 1 227 | .dylib 228 | 229 | 230 | 1 231 | .dylib 232 | 233 | 234 | 235 | 236 | 1 237 | 238 | 239 | 1 240 | 241 | 242 | 243 | 244 | Contents 245 | 1 246 | 247 | 248 | 249 | 250 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 251 | 1 252 | 253 | 254 | 255 | 256 | res\drawable-normal 257 | 1 258 | 259 | 260 | 261 | 262 | library\lib\x86 263 | 1 264 | 265 | 266 | 267 | 268 | 1 269 | 270 | 271 | 1 272 | 273 | 274 | 275 | 276 | ../ 277 | 1 278 | 279 | 280 | 281 | 282 | library\lib\armeabi-v7a 283 | 1 284 | 285 | 286 | 287 | 288 | 1 289 | 290 | 291 | 1 292 | 293 | 294 | 295 | 296 | res\drawable-xlarge 297 | 1 298 | 299 | 300 | 301 | 302 | res\drawable-xhdpi 303 | 1 304 | 305 | 306 | 307 | 308 | 1 309 | 310 | 311 | 1 312 | 313 | 314 | 315 | 316 | res\drawable-xxhdpi 317 | 1 318 | 319 | 320 | 321 | 322 | library\lib\mips 323 | 1 324 | 325 | 326 | 327 | 328 | res\drawable 329 | 1 330 | 331 | 332 | 333 | 334 | Contents\MacOS 335 | 1 336 | 337 | 338 | 1 339 | 340 | 341 | 0 342 | 343 | 344 | 345 | 346 | Contents\MacOS 347 | 1 348 | .framework 349 | 350 | 351 | 0 352 | 353 | 354 | 355 | 356 | res\drawable-small 357 | 1 358 | 359 | 360 | 361 | 362 | ../ 363 | 1 364 | 365 | 366 | 367 | 368 | Contents\MacOS 369 | 1 370 | 371 | 372 | 1 373 | 374 | 375 | Contents\MacOS 376 | 0 377 | 378 | 379 | 380 | 381 | classes 382 | 1 383 | 384 | 385 | 386 | 387 | 1 388 | 389 | 390 | 1 391 | 392 | 393 | 394 | 395 | 1 396 | 397 | 398 | 1 399 | 400 | 401 | 402 | 403 | res\drawable 404 | 1 405 | 406 | 407 | 408 | 409 | Contents\Resources 410 | 1 411 | 412 | 413 | 414 | 415 | 1 416 | 417 | 418 | 419 | 420 | 1 421 | 422 | 423 | 1 424 | 425 | 426 | 427 | 428 | 1 429 | 430 | 431 | library\lib\armeabi-v7a 432 | 1 433 | 434 | 435 | 0 436 | 437 | 438 | Contents\MacOS 439 | 1 440 | 441 | 442 | 1 443 | 444 | 445 | 446 | 447 | library\lib\armeabi 448 | 1 449 | 450 | 451 | 452 | 453 | res\drawable-large 454 | 1 455 | 456 | 457 | 458 | 459 | 0 460 | 461 | 462 | 0 463 | 464 | 465 | 0 466 | 467 | 468 | Contents\MacOS 469 | 0 470 | 471 | 472 | 0 473 | 474 | 475 | 476 | 477 | 1 478 | 479 | 480 | 1 481 | 482 | 483 | 484 | 485 | res\drawable-ldpi 486 | 1 487 | 488 | 489 | 490 | 491 | res\values 492 | 1 493 | 494 | 495 | 496 | 497 | 1 498 | 499 | 500 | 1 501 | 502 | 503 | 504 | 505 | res\drawable-mdpi 506 | 1 507 | 508 | 509 | 510 | 511 | res\drawable-hdpi 512 | 1 513 | 514 | 515 | 516 | 517 | 1 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 | 528 | False 529 | True 530 | False 531 | 532 | 533 | 12 534 | 535 | 536 | 537 | 538 | 539 | --------------------------------------------------------------------------------