Showing preview only (7,157K chars total). Download the full file or copy to clipboard to get everything.
Repository: SpaceGroupUCL/depthmapX
Branch: master
Commit: 02ceaec01545
Files: 592
Total size: 29.1 MB
Directory structure:
gitextract_8mx2ef4h/
├── .gitignore
├── .mailmap
├── .travis.yml
├── CMakeLists.txt
├── GuiUnitTest/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── main.cpp
│ ├── testsettings.cpp
│ └── testviewhelpers.cpp
├── README.md
├── RegressionTest/
│ ├── BaselineBinaries/
│ │ ├── Darwin/
│ │ │ └── depthmapXcli
│ │ └── Linux/
│ │ └── depthmapXcli
│ ├── RegressionTestRunner.py
│ ├── cmdlinewrapper.py
│ ├── config.py
│ ├── depthmaprunner.py
│ ├── performance_regression.json
│ ├── performanceregressionconfig.py
│ ├── performancerunner.py
│ ├── regressionconfig.json
│ ├── regressionconfig_agents.json
│ ├── runhelpers.py
│ └── test/
│ ├── context.py
│ ├── disposablefile.py
│ ├── fail/
│ │ └── test_fail.py
│ ├── pass/
│ │ └── test_pass.py
│ ├── test_RegressionTestRunner.py
│ ├── test_cmdlinewrapper.py
│ ├── test_config.py
│ ├── test_depthmaprunner.py
│ ├── test_disposablefile.py
│ ├── test_main.py
│ ├── test_performanceregressionconfig.py
│ ├── test_performancerunner.py
│ ├── test_runhelpers.py
│ └── test_test_main.py
├── ThirdParty/
│ ├── Catch/
│ │ └── catch.hpp
│ └── FakeIt/
│ └── Catch/
│ └── fakeit.hpp
├── ci/
│ ├── .gitattributes
│ └── build.sh
├── cliTest/
│ ├── CMakeLists.txt
│ ├── argumentholder.h
│ ├── main.cpp
│ ├── selfcleaningfile.h
│ ├── testagentparser.cpp
│ ├── testargumentholder.cpp
│ ├── testaxialparser.cpp
│ ├── testcommandlineparser.cpp
│ ├── testexportparser.cpp
│ ├── testimportparser.cpp
│ ├── testisovistparser.cpp
│ ├── testlinkparser.cpp
│ ├── testmapconvertparser.cpp
│ ├── testparsingutils.cpp
│ ├── testperformancewriter.cpp
│ ├── testradiusconverter.cpp
│ ├── testsegmentparser.cpp
│ ├── testselfcleaningfile.cpp
│ ├── testsimpletimer.cpp
│ ├── teststepdepthparser.cpp
│ ├── testvgaparser.cpp
│ └── testvisprepparser.cpp
├── depthmapX/
│ ├── CMakeLists.txt
│ ├── GraphDoc.cpp
│ ├── GraphDoc.h
│ ├── UI/
│ │ ├── AboutDlg.ui
│ │ ├── AgentAnalysisDlg.ui
│ │ ├── AttributeChooserDlg.ui
│ │ ├── AttributeSummary.ui
│ │ ├── AxialAnalysisOptionsDlg.ui
│ │ ├── ColourScaleDlg.ui
│ │ ├── ColourScaleDlg.ui.bak
│ │ ├── ColumnPropertiesDlg.ui
│ │ ├── ConvertShapesDlg.ui
│ │ ├── DepthmapAlert.ui
│ │ ├── DepthmapOptionsDlg.ui
│ │ ├── EditConnectionsDlg.ui
│ │ ├── FewestLineOptionsDlg.ui
│ │ ├── FilePropertiesDlg.ui
│ │ ├── FindLocDlg.ui
│ │ ├── GridDialog.ui
│ │ ├── InsertColumnDlg.ui
│ │ ├── IsovistPathDlg.ui
│ │ ├── LayerChooserDlg.ui
│ │ ├── LicenceDialog.ui
│ │ ├── MakeLayerDlg.ui
│ │ ├── MakeOptionsDlg.ui
│ │ ├── NewLayerDlg.ui
│ │ ├── OptionsDlg.ui
│ │ ├── PromptReplace.ui
│ │ ├── PushDialog.ui
│ │ ├── RenameObjectDlg.ui
│ │ ├── SegmentAnalysisDlg.ui
│ │ ├── TopoMetDlg.ui
│ │ ├── doAll.sh
│ │ └── licenseagreement.ui
│ ├── compatibilitydefines.h
│ ├── coreapplication.cpp
│ ├── coreapplication.h
│ ├── dialogs/
│ │ ├── AboutDlg.cpp
│ │ ├── AboutDlg.h
│ │ ├── AgentAnalysisDlg.cpp
│ │ ├── AgentAnalysisDlg.h
│ │ ├── AttributeChooserDlg.cpp
│ │ ├── AttributeChooserDlg.h
│ │ ├── AttributeSummary.cpp
│ │ ├── AttributeSummary.h
│ │ ├── AxialAnalysisOptionsDlg.cpp
│ │ ├── AxialAnalysisOptionsDlg.h
│ │ ├── CMakeLists.txt
│ │ ├── ColourScaleDlg.cpp
│ │ ├── ColourScaleDlg.h
│ │ ├── ColumnPropertiesDlg.cpp
│ │ ├── ColumnPropertiesDlg.h
│ │ ├── ConvertShapesDlg.cpp
│ │ ├── ConvertShapesDlg.h
│ │ ├── EditConnectionsDlg.cpp
│ │ ├── EditConnectionsDlg.h
│ │ ├── FewestLineOptionsDlg.cpp
│ │ ├── FewestLineOptionsDlg.h
│ │ ├── FilePropertiesDlg.cpp
│ │ ├── FilePropertiesDlg.h
│ │ ├── FindLocDlg.cpp
│ │ ├── FindLocDlg.h
│ │ ├── GridDialog.cpp
│ │ ├── GridDialog.h
│ │ ├── InsertColumnDlg.cpp
│ │ ├── InsertColumnDlg.h
│ │ ├── IsovistPathDlg.cpp
│ │ ├── IsovistPathDlg.h
│ │ ├── LayerChooserDlg.cpp
│ │ ├── LayerChooserDlg.h
│ │ ├── LicenceDialog.cpp
│ │ ├── LicenceDialog.h
│ │ ├── MakeLayerDlg.cpp
│ │ ├── MakeLayerDlg.h
│ │ ├── MakeOptionsDlg.cpp
│ │ ├── MakeOptionsDlg.h
│ │ ├── NewLayerDlg.cpp
│ │ ├── NewLayerDlg.h
│ │ ├── OptionsDlg.cpp
│ │ ├── OptionsDlg.h
│ │ ├── PromptReplace.cpp
│ │ ├── PromptReplace.h
│ │ ├── PushDialog.cpp
│ │ ├── PushDialog.h
│ │ ├── RenameObjectDlg.cpp
│ │ ├── RenameObjectDlg.h
│ │ ├── SegmentAnalysisDlg.cpp
│ │ ├── SegmentAnalysisDlg.h
│ │ ├── TopoMetDlg.cpp
│ │ ├── TopoMetDlg.h
│ │ ├── licenseagreement.cpp
│ │ ├── licenseagreement.h
│ │ └── settings/
│ │ ├── generalpage.cpp
│ │ ├── generalpage.h
│ │ ├── interfacepage.cpp
│ │ ├── interfacepage.h
│ │ ├── settingsdialog.cpp
│ │ ├── settingsdialog.h
│ │ ├── settingsdialog.qrc
│ │ └── settingspage.h
│ ├── icons/
│ │ ├── depthmapX.icns
│ │ └── graph.icns
│ ├── icons.rc
│ ├── imainwindowmodule.h
│ ├── imainwindowmodulefactory.h
│ ├── indexWidget.cpp
│ ├── indexWidget.h
│ ├── main.cpp
│ ├── mainwindow.cpp
│ ├── mainwindow.h
│ ├── mainwindowfactory.cpp
│ ├── mainwindowfactory.h
│ ├── mainwindowhelpers.cpp
│ ├── mainwindowhelpers.h
│ ├── mainwindowmodulefactory.cpp
│ ├── mainwindowmoduleregistry.cpp
│ ├── mainwindowmoduleregistry.hpp
│ ├── make_version_header.bat
│ ├── make_version_header.sh
│ ├── mdichild.cpp
│ ├── mdichild.h
│ ├── qrc_mdi.cpp
│ ├── renderthread.cpp
│ ├── resource.qrc
│ ├── resources/
│ │ └── Info.plist
│ ├── settings.h
│ ├── settingsimpl.cpp
│ ├── settingsimpl.h
│ ├── treeWindow.cpp
│ ├── treeWindow.h
│ └── views/
│ ├── 3dview/
│ │ ├── 3dview.cpp
│ │ ├── 3dview.h
│ │ └── glureimpl.h
│ ├── CMakeLists.txt
│ ├── depthmapview/
│ │ ├── depthmapview.cpp
│ │ └── depthmapview.h
│ ├── glview/
│ │ ├── gldynamicline.cpp
│ │ ├── gldynamicline.h
│ │ ├── gldynamicrect.cpp
│ │ ├── gldynamicrect.h
│ │ ├── gllines.cpp
│ │ ├── gllines.h
│ │ ├── gllinesuniform.cpp
│ │ ├── gllinesuniform.h
│ │ ├── glpointmap.cpp
│ │ ├── glpointmap.h
│ │ ├── glpolygons.cpp
│ │ ├── glpolygons.h
│ │ ├── glrastertexture.cpp
│ │ ├── glrastertexture.h
│ │ ├── glregularpolygons.cpp
│ │ ├── glregularpolygons.h
│ │ ├── glshapegraph.cpp
│ │ ├── glshapegraph.h
│ │ ├── glshapemap.cpp
│ │ ├── glshapemap.h
│ │ ├── gltriangles.cpp
│ │ ├── gltriangles.h
│ │ ├── gltrianglesuniform.cpp
│ │ ├── gltrianglesuniform.h
│ │ ├── glutriangulator.cpp
│ │ ├── glutriangulator.h
│ │ ├── glview.cpp
│ │ └── glview.h
│ ├── mapview.cpp
│ ├── mapview.h
│ ├── plotview/
│ │ ├── plotview.cpp
│ │ └── plotview.h
│ ├── tableview/
│ │ ├── tableview.cpp
│ │ └── tableview.h
│ ├── viewhelpers.cpp
│ └── viewhelpers.h
├── depthmapXTest/
│ ├── CMakeLists.txt
│ ├── main.cpp
│ ├── testgllines.cpp
│ ├── testgllinesuniform.cpp
│ └── testglrastertexture.cpp
├── depthmapXcli/
│ ├── CMakeLists.txt
│ ├── agentparser.cpp
│ ├── agentparser.h
│ ├── axialparser.cpp
│ ├── axialparser.h
│ ├── commandlineparser.cpp
│ ├── commandlineparser.h
│ ├── exceptions.h
│ ├── exportparser.cpp
│ ├── exportparser.h
│ ├── imodeparser.h
│ ├── imodeparserfactory.h
│ ├── importparser.cpp
│ ├── importparser.h
│ ├── isovistparser.cpp
│ ├── isovistparser.h
│ ├── linkparser.cpp
│ ├── linkparser.h
│ ├── main.cpp
│ ├── mapconvertparser.cpp
│ ├── mapconvertparser.h
│ ├── modeparserregistry.cpp
│ ├── modeparserregistry.h
│ ├── parsingutils.cpp
│ ├── parsingutils.h
│ ├── performancesink.h
│ ├── performancewriter.cpp
│ ├── performancewriter.h
│ ├── printcommunicator.cpp
│ ├── printcommunicator.h
│ ├── radiusconverter.cpp
│ ├── radiusconverter.h
│ ├── runmethods.cpp
│ ├── runmethods.h
│ ├── segmentparser.cpp
│ ├── segmentparser.h
│ ├── simpletimer.h
│ ├── stepdepthparser.cpp
│ ├── stepdepthparser.h
│ ├── vgaparser.cpp
│ ├── vgaparser.h
│ ├── visprepparser.cpp
│ └── visprepparser.h
├── docs/
│ ├── about.md
│ ├── building.md
│ ├── commandline.md
│ ├── formatting.md
│ ├── gui.md
│ ├── howdoi.md
│ └── index.md
├── genlib/
│ ├── CMakeLists.txt
│ ├── bsptree.cpp
│ ├── bsptree.h
│ ├── comm.h
│ ├── containerutils.h
│ ├── exceptions.h
│ ├── lgpl.txt
│ ├── linreg.h
│ ├── p2dpoly.cpp
│ ├── p2dpoly.h
│ ├── pafmath.cpp
│ ├── pafmath.h
│ ├── pflipper.h
│ ├── readwritehelpers.h
│ ├── simplematrix.h
│ ├── stringutils.cpp
│ ├── stringutils.h
│ ├── xmlparse.cpp
│ └── xmlparse.h
├── genlibTest/
│ ├── CMakeLists.txt
│ ├── main.cpp
│ ├── testbspnode.cpp
│ ├── testcontainerutils.cpp
│ ├── testreadwritehelpers.cpp
│ ├── testsimplematrix.cpp
│ └── teststringutils.cpp
├── mgraph440/
│ ├── CMakeLists.txt
│ ├── attr.cpp
│ ├── attr.h
│ ├── attributes.cpp
│ ├── attributes.h
│ ├── axialmap.cpp
│ ├── axialmap.h
│ ├── bspnode.h
│ ├── comm.h
│ ├── connector.cpp
│ ├── connector.h
│ ├── containerutils.h
│ ├── datalayer.cpp
│ ├── datalayer.h
│ ├── displayparams.h
│ ├── exceptions.h
│ ├── fileproperties.h
│ ├── legacyconverters.h
│ ├── mapinfodata.h
│ ├── mgraph.cpp
│ ├── mgraph.h
│ ├── mgraph_consts.h
│ ├── ngraph.cpp
│ ├── ngraph.h
│ ├── options.h
│ ├── p2dpoly.cpp
│ ├── p2dpoly.h
│ ├── pafcolor.cpp
│ ├── pafcolor.h
│ ├── pafmath.cpp
│ ├── pafmath.h
│ ├── paftl.h
│ ├── pixelbase.cpp
│ ├── pixelbase.h
│ ├── pixelref.h
│ ├── point.cpp
│ ├── point.h
│ ├── pointmap.cpp
│ ├── pointmap.h
│ ├── salaprogram.cpp
│ ├── salaprogram.h
│ ├── shapemap.cpp
│ ├── shapemap.h
│ ├── spacepix.cpp
│ ├── spacepix.h
│ ├── stringutils.cpp
│ └── stringutils.h
├── mgraph440Test/
│ ├── CMakeLists.txt
│ ├── main.cpp
│ ├── testcontainers.cpp
│ └── testconverters.cpp
├── moduleTest/
│ ├── CMakeLists.txt
│ └── main.cpp
├── modules/
│ ├── CMakeLists.txt
│ └── segmentshortestpaths/
│ ├── CMakeLists.txt
│ ├── RegressionTest/
│ │ └── regressionconfig.json
│ ├── cli/
│ │ ├── CMakeLists.txt
│ │ ├── segmentshortestpathparser.cpp
│ │ └── segmentshortestpathparser.h
│ ├── cliTest/
│ │ ├── CMakeLists.txt
│ │ └── segmentshortestpathparsertest.cpp
│ ├── core/
│ │ ├── CMakeLists.txt
│ │ ├── segmmetricshortestpath.cpp
│ │ ├── segmmetricshortestpath.h
│ │ ├── segmtopologicalshortestpath.cpp
│ │ ├── segmtopologicalshortestpath.h
│ │ ├── segmtulipshortestpath.cpp
│ │ └── segmtulipshortestpath.h
│ ├── coreTest/
│ │ ├── CMakeLists.txt
│ │ └── segmentpathscoretest.cpp
│ └── gui/
│ ├── CMakeLists.txt
│ ├── segmentpathsmainwindow.cpp
│ ├── segmentpathsmainwindow.h
│ └── uictrigger.cpp
├── releases/
│ ├── README.txt
│ ├── gplv3.txt
│ ├── lgplv3.txt
│ └── licenses.txt
├── salaTest/
│ ├── CMakeLists.txt
│ ├── main.cpp
│ ├── testattributetable.cpp
│ ├── testattributetablehelpers.cpp
│ ├── testattributetableindex.cpp
│ ├── testattributetableview.cpp
│ ├── testdxfp.cpp
│ ├── testentityparsing.cpp
│ ├── testgeometrygenerators.cpp
│ ├── testgridproperties.cpp
│ ├── testisovist.cpp
│ ├── testisovistdef.cpp
│ ├── testlayermanager.cpp
│ ├── testlinkutils.cpp
│ ├── testmapconversion.cpp
│ ├── testmapinfodata.cpp
│ ├── testmgraph.cpp
│ ├── testpointinpoly.cpp
│ ├── testpointmap.cpp
│ ├── testpushvalues.cpp
│ ├── testsalaprogram.cpp
│ ├── testshapegraphs.cpp
│ ├── testshapemaps.cpp
│ ├── testshaperemove.cpp
│ ├── testsparksieve.cpp
│ └── teststructsizes.cpp
├── salalib/
│ ├── CMakeLists.txt
│ ├── agents/
│ │ ├── CMakeLists.txt
│ │ ├── agent.cpp
│ │ ├── agent.h
│ │ ├── agentengine.cpp
│ │ ├── agentengine.h
│ │ ├── agentga.cpp
│ │ ├── agentga.h
│ │ ├── agenthelpers.h
│ │ ├── agentprogram.cpp
│ │ ├── agentprogram.h
│ │ ├── agentset.cpp
│ │ └── agentset.h
│ ├── alllinemap.cpp
│ ├── alllinemap.h
│ ├── attributetable.cpp
│ ├── attributetable.h
│ ├── attributetablehelpers.h
│ ├── attributetableindex.cpp
│ ├── attributetableindex.h
│ ├── attributetableview.cpp
│ ├── attributetableview.h
│ ├── axialmap.cpp
│ ├── axialmap.h
│ ├── axialminimiser.cpp
│ ├── axialminimiser.h
│ ├── axialmodules/
│ │ ├── CMakeLists.txt
│ │ ├── axialintegration.cpp
│ │ ├── axialintegration.h
│ │ ├── axialstepdepth.cpp
│ │ └── axialstepdepth.h
│ ├── axialpolygons.cpp
│ ├── axialpolygons.h
│ ├── connector.cpp
│ ├── connector.h
│ ├── displayparams.h
│ ├── entityparsing.cpp
│ ├── entityparsing.h
│ ├── fileproperties.h
│ ├── geometrygenerators.cpp
│ ├── geometrygenerators.h
│ ├── gridproperties.cpp
│ ├── gridproperties.h
│ ├── ianalysis.h
│ ├── iaxial.h
│ ├── importtypedefs.h
│ ├── importutils.cpp
│ ├── importutils.h
│ ├── isegment.h
│ ├── isovist.cpp
│ ├── isovist.h
│ ├── isovistdef.h
│ ├── ivga.h
│ ├── layermanager.h
│ ├── layermanagerimpl.cpp
│ ├── layermanagerimpl.h
│ ├── linkutils.cpp
│ ├── linkutils.h
│ ├── mapconverter.cpp
│ ├── mapconverter.h
│ ├── mgraph.cpp
│ ├── mgraph.h
│ ├── mgraph_consts.h
│ ├── ngraph.cpp
│ ├── ngraph.h
│ ├── options.h
│ ├── pafcolor.cpp
│ ├── pafcolor.h
│ ├── parsers/
│ │ ├── CMakeLists.txt
│ │ ├── dxfp.cpp
│ │ ├── dxfp.h
│ │ ├── mapinfodata.cpp
│ │ ├── mapinfodata.h
│ │ ├── ntfp.cpp
│ │ ├── ntfp.h
│ │ ├── tigerp.cpp
│ │ └── tigerp.h
│ ├── pixelref.h
│ ├── point.cpp
│ ├── point.h
│ ├── pointdata.cpp
│ ├── pointdata.h
│ ├── salaprogram.cpp
│ ├── salaprogram.h
│ ├── segmmodules/
│ │ ├── CMakeLists.txt
│ │ ├── segmangular.cpp
│ │ ├── segmangular.h
│ │ ├── segmhelpers.h
│ │ ├── segmmetric.cpp
│ │ ├── segmmetric.h
│ │ ├── segmmetricpd.cpp
│ │ ├── segmmetricpd.h
│ │ ├── segmtopological.cpp
│ │ ├── segmtopological.h
│ │ ├── segmtopologicalpd.cpp
│ │ ├── segmtopologicalpd.h
│ │ ├── segmtulip.cpp
│ │ ├── segmtulip.h
│ │ ├── segmtulipdepth.cpp
│ │ └── segmtulipdepth.h
│ ├── shapemap.cpp
│ ├── shapemap.h
│ ├── spacepix.cpp
│ ├── spacepix.h
│ ├── spacepixfile.cpp
│ ├── spacepixfile.h
│ ├── sparksieve2.cpp
│ ├── sparksieve2.h
│ ├── tidylines.cpp
│ ├── tidylines.h
│ ├── tolerances.h
│ └── vgamodules/
│ ├── CMakeLists.txt
│ ├── vgaangular.cpp
│ ├── vgaangular.h
│ ├── vgaangulardepth.cpp
│ ├── vgaangulardepth.h
│ ├── vgaisovist.cpp
│ ├── vgaisovist.h
│ ├── vgametric.cpp
│ ├── vgametric.h
│ ├── vgametricdepth.cpp
│ ├── vgametricdepth.h
│ ├── vgathroughvision.cpp
│ ├── vgathroughvision.h
│ ├── vgavisualglobal.cpp
│ ├── vgavisualglobal.h
│ ├── vgavisualglobaldepth.cpp
│ ├── vgavisualglobaldepth.h
│ ├── vgavisuallocal.cpp
│ └── vgavisuallocal.h
├── testdata/
│ ├── all_line_noncont_keys.graph
│ ├── axmap_noncont_keys.graph
│ ├── barnsbury_axial.RT1
│ ├── barnsbury_axial.graph
│ ├── barnsbury_drawing.graph
│ ├── barnsbury_extended1.dxf
│ ├── barnsbury_extended1_axial.csv
│ ├── barnsbury_extended1_axial.graph
│ ├── barnsbury_extended1_axial.tsv
│ ├── barnsbury_extended1_segment.graph
│ ├── barnsbury_extended2.dxf
│ ├── barnsbury_extended2_axial.graph
│ ├── barnsbury_extended2_drawing.graph
│ ├── barnsbury_segment.graph
│ ├── barnsbury_segment_lines.mid
│ ├── barnsbury_segment_lines.mif
│ ├── barnsbury_segment_pline.mid
│ ├── barnsbury_segment_pline.mif
│ ├── gallery.dxf
│ ├── gallery_connected.graph
│ ├── gallery_connected_merge_links.txt
│ ├── gallery_connected_with_isovist.graph
│ ├── gallery_empty.graph
│ ├── gallery_graph_vga.txt
│ ├── gallery_two_pointmaps.graph
│ ├── isovists.csv
│ ├── polygons_drawing.graph
│ ├── polywall.graph
│ ├── rect1x1.graph
│ ├── rooms.dxf
│ ├── simple_axial_lines.ntf
│ ├── simple_axlines.graph
│ ├── simple_axlines.mid
│ ├── simple_axlines.mif
│ ├── simple_axlines_pline.mid
│ ├── simple_axlines_pline.mif
│ ├── turns.dxf
│ └── turns_connected.graph
├── tools/
│ ├── build_and_upload.sh
│ ├── graph.grammar
│ └── storePerformanceTest.php
├── version.h
└── version_defs.h.in
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.idea
.DS_Store
depthmapX-build
build
build-*
RegressionTest/rundir
__pycache__
CMakeLists.txt.user
*_BACKUP_*
*_BASE_*
*_LOCAL_*
*_REMOTE_*
================================================
FILE: .mailmap
================================================
Petros Koutsolampros <2184600+pklampros@users.noreply.github.com> <2184600+orange-vertex@users.noreply.github.com>
Petros Koutsolampros <2184600+pklampros@users.noreply.github.com> Petros Koutsolampros <orange-vertex@users.noreply.github.com>
Petros Koutsolampros <2184600+pklampros@users.noreply.github.com> Petros <orange-vertex@users.noreply.github.com>
================================================
FILE: .travis.yml
================================================
sudo: required
dist: xenial
language: c++
services:
- docker
notifications:
slack: depthmapx:B3CKNlNDLrNz1vSOU5yoQQqA
webhooks:
urls:
- "https://scalar.vector.im/api/neb/services/hooks/dHJhdmlzLWNpLyU0MG9yYW5nZS12ZXJ0ZXglM0FtYXRyaXgub3JnLyUyMUVZQUZRaEVrV3lDZm1hcm9QaCUzQW1hdHJpeC5vcmc"
on_success: always # always|never|change
on_failure: always
on_start: never
script:
- docker run --security-opt seccomp:unconfined --user $UID -v $PWD:/mnt/code blackseamonster/depthmapx-buildenv:0.3 bash -c ci/build.sh
================================================
FILE: CMakeLists.txt
================================================
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum macOS deployment version")
project(depthmapX)
cmake_minimum_required(VERSION 3.13.0)
set(CMAKE_CXX_STANDARD 17)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR
"${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(warnings "-Wall -Wextra")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(warnings "/W4 /EHsc")
execute_process(COMMAND make_version_header.bat WORKING_DIRECTORY depthmapX)
endif()
# policy for target sources - we don't expect any old CMakes
cmake_policy(SET CMP0076 NEW)
include_directories(".")
# Get the current working branch
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE APP_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get the latest abbreviated commit hash of the working branch
execute_process(
COMMAND git log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE APP_COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# generate version_defs.h
include_directories(${CMAKE_BINARY_DIR})
configure_file("${CMAKE_SOURCE_DIR}/version_defs.h.in" "${CMAKE_BINARY_DIR}/version_defs.h" @ONLY)
string(TIMESTAMP APP_DATE %Y-%m-%d)
set(modules_core "" CACHE INTERNAL "modules_core" FORCE)
set(MODULES_GUI FALSE)
set(MODULES_CLI FALSE)
set(MODULES_CLI_TEST FALSE)
set(MODULES_CORE TRUE)
set(MODULES_CORE_TEST FALSE)
add_subdirectory(genlib)
add_subdirectory(genlibTest)
add_subdirectory(salalib)
add_subdirectory(modules) # only the core modules are loaded here
add_subdirectory(mgraph440)
add_subdirectory(mgraph440Test)
add_subdirectory(salaTest)
add_subdirectory(depthmapXcli)
add_subdirectory(cliTest)
add_subdirectory(depthmapXTest)
add_subdirectory(depthmapX)
add_subdirectory(GuiUnitTest)
add_subdirectory(moduleTest)
================================================
FILE: GuiUnitTest/.gitignore
================================================
# This file is used to ignore files which are generated
# ----------------------------------------------------------------------------
*~
*.autosave
*.a
*.core
*.moc
*.o
*.obj
*.orig
*.rej
*.so
*.so.*
*_pch.h.cpp
*_resource.rc
*.qm
.#*
*.*#
core
!core/
tags
.DS_Store
.directory
*.debug
Makefile*
*.prl
*.app
moc_*.cpp
ui_*.h
qrc_*.cpp
Thumbs.db
*.res
*.rc
/.qmake.cache
/.qmake.stash
# qtcreator generated files
*.pro.user*
# xemacs temporary files
*.flc
# Vim temporary files
.*.swp
# Visual Studio generated files
*.ib_pdb_index
*.idb
*.ilk
*.pdb
*.sln
*.suo
*.vcproj
*vcproj.*.*.user
*.ncb
*.sdf
*.opensdf
*.vcxproj
*vcxproj.*
# MinGW generated files
*.Debug
*.Release
# Python byte code
*.pyc
# Binaries
# --------
*.dll
*.exe
================================================
FILE: GuiUnitTest/CMakeLists.txt
================================================
set(GuiUnitTest GuiUnitTest)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Find the QtWidgets library
find_package(Qt5 COMPONENTS Core Widgets Gui OpenGL REQUIRED)
# Instruct CMake to run moc automatically when needed
set(CMAKE_AUTOMOC ON)
set(guiUnitTest_SRCS
main.cpp
testviewhelpers.cpp
testsettings.cpp
../depthmapX/settingsimpl.cpp
../depthmapX/views/viewhelpers.cpp)
include_directories("../ThirdParty/Catch" "../ThirdParty/FakeIt" "../depthmapX")
set(LINK_LIBS salalib genlib mgraph440 Qt5::Core)
add_executable(${GuiUnitTest} ${guiUnitTest_SRCS})
target_link_libraries(${GuiUnitTest} ${LINK_LIBS})
================================================
FILE: GuiUnitTest/main.cpp
================================================
// Copyright (C) 2017 Christian Sailer
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
================================================
FILE: GuiUnitTest/testsettings.cpp
================================================
// Copyright (C) 2017 Christian Sailer
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include <catch.hpp>
#include <../cliTest/selfcleaningfile.h>
#include <../depthmapX/settingsimpl.h>
class TestSettingsFactory : public QSettingsFactory
{
public:
TestSettingsFactory(const QString &filename) : mFilename(filename)
{}
virtual std::unique_ptr<QSettings> getSettings() const
{
return std::unique_ptr<QSettings>(new QSettings(mFilename, QSettings::IniFormat));
}
private:
QString mFilename;
};
TEST_CASE("Test simple settings")
{
SelfCleaningFile scf("./test.ini");
SettingsImpl settings(new TestSettingsFactory(scf.Filename().c_str()));
REQUIRE(settings.readSetting("test1", "bar").toString().toStdString() == "bar");
settings.writeSetting("test1", "foo");
REQUIRE(settings.readSetting("test1", "bar").toString().toStdString() == "foo");
}
TEST_CASE("Test settings transaction")
{
SelfCleaningFile scf("./test.ini");
SettingsImpl settings(new TestSettingsFactory(scf.Filename().c_str()));
REQUIRE(settings.readSetting("test1", "bar").toString() == "bar");
{
auto transaction = settings.getTransaction();
transaction->writeSetting("test1", "foo");
}
REQUIRE(settings.readSetting("test1", "bar").toString() == "foo");
}
================================================
FILE: GuiUnitTest/testviewhelpers.cpp
================================================
// Copyright (C) 2017 Christian Sailer
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "depthmapX/views/viewhelpers.h"
#include "catch.hpp"
#include <time.h>
#include <sstream>
#include <iomanip>
TEST_CASE("Calculating the new center", "[calculateCenter]"){
auto point = QPoint(100, 100);
auto oldCenter = QPoint(200,200);
auto newCenter = Point2f(150,150);
REQUIRE(ViewHelpers::calculateCenter(point, oldCenter, 0.5) == newCenter);
newCenter.x = 300;
newCenter.y = 300;
REQUIRE(ViewHelpers::calculateCenter(point, oldCenter, 2.0) == newCenter);
}
TEST_CASE("Date string format", "[getCurrentDate]"){
auto now = time(NULL);
const tm* ltime = localtime(&now);
std::stringstream sstream;
sstream << ltime->tm_year + 1900 << "/" <<
std::setfill('0') << std::setw(2) << ltime->tm_mon + 1 << "/" <<
std::setfill('0') << std::setw(2) << ltime->tm_mday << std::flush;
REQUIRE(ViewHelpers::getCurrentDate() == sstream.str().c_str());
}
================================================
FILE: README.md
================================================
## depthmapX - multi-platform spatial network analyses software
This is the home for the development of depthmapX.
Latest releases can be found at the [releases page](https://github.com/SpaceGroupUCL/depthmapX/releases)
For any issues/bugs/crashes please create [a new issue](https://github.com/SpaceGroupUCL/depthmapX/issues/new)
For more information please check the [documentation](./docs/index.md) and the [wiki](https://github.com/SpaceGroupUCL/depthmapX/wiki)
[About depthmapX](./docs/about.md)
##
depthmapX is licensed under the [GPLv3](http://www.gnu.org/licenses/gpl-3.0.html) licence.
depthmapX uses [Qt5](http://www.qt.io) as UI toolkit and build system, [Catch](https://github.com/philsquared/catch) as unit testing framework and [FakeIt](https://github.com/eranpeer/FakeIt) for test mocks.
Please join the depthmapX mail distribution list at www.jiscmail.ac.uk/lists/DEPTHMAP.html for updates.
The developers and users of depthmapX can also be found on matrix for more direct and extended discussions in the following channels:
- [depthmapX-users](https://matrix.to/#/#depthmapX-users:matrix.org) - for general discussion, and questions about using depthmapX
- [depthmapX-devel](https://matrix.to/#/#depthmapX-devel:matrix.org) - for development discussion
================================================
FILE: RegressionTest/RegressionTestRunner.py
================================================
import runhelpers
import config
import depthmaprunner
import performancerunner
import os
import sys
defaultConfigFile = "regressionconfig.json"
class RegressionTestRunner():
def __init__(self, configfile, runfunc):
self.config = config.RegressionConfig(configfile)
self.testBinary = runhelpers.getTestExecutable(self.config.testbinlocation)
print("Binary under test is " + self.testBinary)
self.baseBinary = runhelpers.getExecutable(self.config.basebinlocation)
print("Baseline binary is " + self.baseBinary)
self.runfunc = runfunc
def run(self):
if not os.path.exists(self.config.rundir):
os.makedirs(self.config.rundir)
if self.config.performanceRegression.enabled:
print("Performance regression runs enabled")
runner = performancerunner.PerformanceRunner(self.runfunc, self.baseBinary, self.testBinary, self.config.rundir,self.config.performanceRegression )
else:
print("Default regression runs - no performance")
runner = depthmaprunner.DepthmapRegressionRunner( self.runfunc, self.baseBinary, self.testBinary, self.config.rundir )
good = True
for name, case in self.config.testcases.items():
print("Running test case " + name)
success, output = runner.runTestCase(name, case)
if not success:
good = False
print ("Failed:\n" + output)
else:
print("ok")
return good
if __name__ == "__main__":
print("Starting up RegressionTestRunner")
configFile = defaultConfigFile
if len(sys.argv) == 2:
configFile = sys.argv[1]
print("Config file in use is: " + configFile)
r = RegressionTestRunner(configFile, runhelpers.runExecutable)
print("Setup complete, starting run")
if not r.run():
exit(-1)
================================================
FILE: RegressionTest/cmdlinewrapper.py
================================================
class CommandLineError(Exception):
def __init__(self, message):
self.message = message
class DepthmapCmd():
def __init__(self):
self.infile = None
self.outfile = None
self.simpleMode = False
self.mode = None
self.extraArgs = {}
self.timingFile = None
def toCmdArray(self):
if self.infile == None:
raise CommandLineError("infile must be defined")
if self.outfile == None:
raise CommandLineError("outfile must be defined")
if self.mode == None:
raise CommandLineError("mode must be defined")
args = ["-f", self.infile, "-o", self.outfile, "-m", self.mode]
if self.simpleMode:
args.append("-s")
if self.timingFile:
args.extend(["-t", self.timingFile])
for key, value in self.extraArgs.items():
if isinstance(value, list):
for v in value:
args.append(key)
args.append(v)
else:
args.append(key)
if value:
args.append(value)
return args
================================================
FILE: RegressionTest/config.py
================================================
import json
import os.path
import cmdlinewrapper
from performanceregressionconfig import PerformanceRegressionConfig
class ConfigError(Exception):
def __init__(self, message):
self.message = message
def buildCmd(testcaseSet):
cmds = [];
for testcase in testcaseSet:
cmd = cmdlinewrapper.DepthmapCmd()
cmd.infile = testcase["infile"]
cmd.outfile = testcase["outfile"]
cmd.mode = testcase["mode"]
if "simple" in testcase and not testcase["simple"] == "false":
cmd.simpleMode = True
cmd.extraArgs = testcase.get("extraArgs", {})
cmds.append(cmd)
return cmds
class RegressionConfig():
def __init__(self, filename):
with open(filename, "r") as f:
config = json.load(f)
configdir = os.path.dirname(filename)
self.rundir = config["rundir"]
self.basebinlocation = config["basebinlocation"]
self.testbinlocation = config["testbinlocation"]
self.performanceRegression = PerformanceRegressionConfig(config.get("performance", None))
self.testcases = {}
for (name, tc) in config["testcases"].items():
self.testcases[name] = buildCmd(tc)
================================================
FILE: RegressionTest/depthmaprunner.py
================================================
import os.path
import cmdlinewrapper
import difflib
import pprint
import runhelpers
class DepthmapRunner():
def __init__(self, runFunc, binary ):
self.__runFunc = runFunc
self.__binary = binary
def runDepthmap(self, cmdWrapper, runDir):
args = [self.__binary]
args.extend(cmdWrapper.toCmdArray())
return self.__runFunc(runDir, args)
def diffBinaryFiles(file1, file2):
with open(file1, "rb") as f:
content1 = f.read()
with open(file2, "rb") as f:
content2 = f.read()
gen = difflib.diff_bytes(difflib.unified_diff, [content1], [content2])
return not(list(gen))
class DepthmapRegressionRunner():
def __init__(self, runFunc, baseBinary, testBinary, workingDir):
self.__baseRunner = DepthmapRunner(runFunc, baseBinary)
self.__testRunner = DepthmapRunner(runFunc, testBinary)
self.__workingDir = workingDir
def makeBaseDir(self, name):
return os.path.join(self.__workingDir, name + "_base")
def makeTestDir(self, name):
return os.path.join(self.__workingDir, name + "_test")
def runTestCase(self, name, cmds):
runhelpers.prepareDirectory(self.makeBaseDir(name))
runhelpers.prepareDirectory(self.makeTestDir(name))
return self.runTestCaseImpl(name, cmds)
def runTestCaseImpl(self, name, cmds):
baseDir = self.makeBaseDir(name)
for step,cmd in enumerate(cmds):
(baseSuccess, baseOut) = self.__baseRunner.runDepthmap(cmd, baseDir)
if not baseSuccess:
print("Baseline run failed at step " + str(step) + " with arguments " + pprint.pformat(cmd.toCmdArray()))
print(baseOut)
return (False, "Baseline run failed at step: " + str(step))
testDir = self.makeTestDir(name)
for step,cmd in enumerate(cmds):
(testSuccess, testOut) = self.__testRunner.runDepthmap(cmd, testDir)
if not testSuccess:
print("Test run failed at step " + str(step) + " with arguments " + pprint.pformat(cmd.toCmdArray()))
print(testOut)
return (False, "Test run failed at step: " + str(step))
baseFile = os.path.join(baseDir, cmds[-1].outfile)
testFile = os.path.join(testDir, cmds[-1].outfile)
if not os.path.exists(baseFile):
message = "Baseline output {0} does not exist".format(baseFile)
print (message)
return (False, message)
if not os.path.exists(testFile):
message = "Test output {0} does not exist".format(testFile)
print(message)
return (False, message)
if not diffBinaryFiles(baseFile, testFile):
message = "Test outputs differ"
print (message)
return (False, message)
return (True, "")
================================================
FILE: RegressionTest/performance_regression.json
================================================
{
"rundir": "rundir",
"basebinlocation": "../../BaselineBinaries",
"testbinlocation": "../../../build",
"performance":{},
"testcases": {
"vis_prep_dense_pointmap":[{
"infile": "../../../testdata/rect1x1.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pg": "0.02",
"-pp": "0.5,0.5"
}
}],
"visibility_local": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "visibility",
"-vl": ""
}
}],
"vga_isovist": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "isovist"
}
}],
"vga_angular": [{
"infile": "../../../testdata/turns_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "angular"
}
}],
"vga_metric": [{
"infile": "../../../testdata/turns_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "metric",
"-vr": "n"
}
}],
"vga_thru_vision": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "thruvision"
}
}],
"isovist_args": [{
"infile": "../../../testdata/gallery_empty.graph",
"outfile": "out.graph",
"mode": "ISOVIST",
"extraArgs":
{
"-ii": ["1.77,6.6,90,30", "3.1,5.6,270,90" ]
}
}],
"visibility_global_n": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "visibility",
"-vg": "1",
"-vr": "n"
}
}],
"axial_makelines": [{
"infile": "../../../testdata/gallery_empty.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs":{
"-xl": "3,5",
"-xf": ""
}
}],
"axial_rn": [{
"infile": "../../../testdata/barnsbury_extended2_axial.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n"
}
}],
"axial_rn_choice": [{
"infile": "../../../testdata/barnsbury_extended2_axial.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n",
"-xac": ""
}
}],
"axial_rn_local": [{
"infile": "../../../testdata/barnsbury_extended2_axial.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n",
"-xal": ""
}
}],
"segment_tulip_1024_rn_steps": [{
"infile": "../../../testdata/barnsbury_extended1_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "n",
"-srt": "steps"
}
}],
"segment_tulip_1024_rn_steps_choice": [{
"infile": "../../../testdata/barnsbury_extended1_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "n",
"-srt": "steps",
"-sic": ""
}
}],
"segment_tulip_1024_rn_steps_weighted": [{
"infile": "../../../testdata/barnsbury_extended1_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "n",
"-srt": "steps",
"-swa": "Segment Length"
}
}],
"segment_topological_rn": [{
"infile": "../../../testdata/barnsbury_extended1_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "topological",
"-sr": "n"
}
}],
"segment_metric_rn": [{
"infile": "../../../testdata/barnsbury_extended1_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "metric",
"-sr": "n"
}
}],
"convert_drawing_axial":[{
"infile": "../../../testdata/barnsbury_extended2_drawing.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "axial",
"-con": "Axial Map Test"
}
}],
"convert_axial_segment":[{
"infile": "../../../testdata/barnsbury_extended2_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "segment",
"-con": "Segment Map Test"
}
}]
}
}
================================================
FILE: RegressionTest/performanceregressionconfig.py
================================================
class PerformanceRegressionConfig:
""" Encapsulate performance regression config
This takes an optional performance regression config. All Elements
in the performance regression config are optional. If it is None
completly, performance regresssion will be disabled
"peformanceRegression":
{
enabled = 1, <- enabling performance regression - only required if nothing else is set, the existence of a non null config will turn on performance regression
runsPerInstance = 3, <- how many runs of each run def to run and average over
relativeThresholdInPercent = 1.5, <- how many percent can the new version be slower without failing
absoluteThresholdInSeconds = 2.3, <- how many seconds the new version can be slower without failing
of the two above, breaching the lower one will lead to failure.
}
"""
def __init__(self, perfConfig):
if None == perfConfig or ("enabled" in perfConfig and perfConfig["enabled"] not in ["True", "true", "1", "yes"]):
self.enabled = False
return
self.enabled = True;
self.runsPerInstance = int(perfConfig.get("runsPerInstance", 3))
self.relativeThresholdInPercent = float(perfConfig.get("relativeThresholdInPercent", 1))
self.absoluteThresholdInSeconds = float(perfConfig.get("absoluteThresholdInSeconds",1))
================================================
FILE: RegressionTest/performancerunner.py
================================================
from statistics import mean
from collections import OrderedDict
import depthmaprunner
import os
import csv
import runhelpers
from performanceregressionconfig import PerformanceRegressionConfig
def checkPerformance(baseFile, testFile, relativeThreshold, absoluteThreshold):
"""
Check the performance of 2 depthmap runs against each other
This function expects the timing from a base and test run and parses them
as CSV. For now, it expects the entries to be the same. It will return an
error message if
* one or both of the files are missing
* the number of lines or the labels don't match
* the test run is more than 5 seconds or 5% slower than the baseline
(whatever is greater)
"""
if not os.path.exists(baseFile):
return "Base performance timing file {0} is missing".format(baseFile)
if not os.path.exists(testFile):
return "Test performance timing file {0} is missing".format(testFile)
with open(baseFile) as baseHandle, open(testFile) as testHandle:
baseReader = csv.DictReader(baseHandle)
testReader = csv.DictReader(testHandle)
baseDone = False
testDone = False
while True:
try:
baseLine = next(baseReader)
except StopIteration:
baseDone = True
try:
testLine = next(testReader)
except StopIteration:
testDone = True
if baseDone and testDone:
return ""
if baseDone and not testDone:
return "baseline performance file {0} has fewer lines than the test one {1}".format(baseFile, testFile)
if testDone and not baseDone:
return "baseline performance file {0} has more lines than the test one {1}".format(baseFile, testFile)
if not baseLine["action"] == testLine["action"]:
return "performance line mismatch: base '{0}', test '{1}'".format(baseLine["action"], testLine["action"])
baseTime = float(baseLine["average"])
testTime = float(testLine["average"])
allowance = max(absoluteThreshold, baseTime * relativeThreshold / 100 )
if testTime > baseTime + allowance:
return "Performance regression: {0} took {1}s instead of {2}s".format(baseLine["action"], testLine["average"], baseLine["average"])
def aggregatePerformanceStats(dir, numRuns, numCmds, filenameTemplate ):
data = OrderedDict()
totalValues = []
for i in range(numRuns):
for j in range(numCmds):
with open(os.path.join(dir, filenameTemplate.format(i, j)), "r") as f:
reader = csv.DictReader(f)
total = 0
for line in reader:
if not line["action"] in data:
data[line["action"]] = []
data[line["action"]].append(float(line["duration"]))
total = total + float(line["duration"])
totalValues.append(total)
data["total"] = totalValues
outputFile =os.path.join(dir, filenameTemplate.format("", "all"))
with open(outputFile, "w+") as f:
writer = csv.DictWriter(f, ["action", "min", "max", "average"])
writer.writeheader()
for key, val in data.items():
rowDict = {"action": key, "min": min(val), "max": max(val), "average": mean(val)}
writer.writerow(rowDict)
return outputFile
class PerformanceRunner(depthmaprunner.DepthmapRegressionRunner):
def __init__(self, runFunc, baseBinary, testBinary, workingDir, perfConfig):
depthmaprunner.DepthmapRegressionRunner.__init__(self,runFunc,baseBinary,testBinary,workingDir)
self.perfConfig = perfConfig
def runTestCase(self, name, cmds):
runhelpers.prepareDirectory(self.makeBaseDir(name))
runhelpers.prepareDirectory(self.makeTestDir(name))
nameTemplate = "timings_{0}_{1}.csv"
for i in range(self.perfConfig.runsPerInstance):
print ("Running test case {0}, run {1} of {2}".format(name, i, self.perfConfig.runsPerInstance))
for j in range(len(cmds)):
cmds[j].timingFile = nameTemplate.format(i,j)
result, message = self.runTestCaseImpl(name, cmds)
if not result:
return (False, "Run {0} failed with message: {1}".format(i, message))
testFile = aggregatePerformanceStats(self.makeTestDir(name),self.perfConfig.runsPerInstance, len(cmds), nameTemplate)
baseFile = aggregatePerformanceStats(self.makeBaseDir(name),self.perfConfig.runsPerInstance, len(cmds), nameTemplate)
message = checkPerformance(testFile, baseFile, self.perfConfig.relativeThresholdInPercent, self.perfConfig.absoluteThresholdInSeconds)
if message:
return (False, message)
return (True, "")
================================================
FILE: RegressionTest/regressionconfig.json
================================================
{
"rundir": "rundir",
"basebinlocation": "../../BaselineBinaries",
"testbinlocation": "../../../build",
"testcases": {
"links_pointmap_manual": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "LINK",
"extraArgs": {
"-lnk": ["1.32,7.24,4.88,5.24","1.16,5.28,3.28,7.12"]
}
}],
"links_pointmap_file": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "LINK",
"extraArgs": {
"-lf": "../../../testdata/gallery_connected_merge_links.txt"
}
}],
"unlinks_shapegraph_coords": [{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "LINK",
"extraArgs": {
"-lmt": "shapegraphs",
"-lm": "unlink",
"-lt": "coords",
"-lnk": "530797,184255"
}
}],
"unlinks_shapegraph_refs": [{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "LINK",
"extraArgs": {
"-lmt": "shapegraphs",
"-lm": "unlink",
"-lt": "refs",
"-lnk": "18,24"
}
}],
"links_shapegraph_coords": [{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "LINK",
"extraArgs": {
"-lmt": "shapegraphs",
"-lm": "link",
"-lt": "coords",
"-lnk": "530684,184098,531388,184353"
}
}],
"links_shapegraph_refs": [{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "LINK",
"extraArgs": {
"-lmt": "shapegraphs",
"-lm": "link",
"-lt": "refs",
"-lnk": "1,41"
}
}],
"links_shapegraph_refs_non_cont_keys": [{
"infile": "../../../testdata/axmap_noncont_keys.graph",
"outfile": "out.graph",
"mode": "LINK",
"extraArgs": {
"-lmt": "shapegraphs",
"-lm": "link",
"-lt": "refs",
"-lnk": "17,11"
}
}],
"visibility_local": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "visibility",
"-vl": ""
}
}],
"visibility_local_only_map": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "visibility",
"-vl": ""
}
},{
"infile": "out.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "pointmap-data-csv"
}
}],
"visibility_global_with_multiple_pointmaps": [{
"infile": "../../../testdata/gallery_two_pointmaps.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "visibility",
"-vg": "",
"-vr": "3"
}
}],
"visibility_global_3": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "visibility",
"-vg": "",
"-vr": "3"
}
}],
"visibility_global_3_only_map": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "visibility",
"-vg": "",
"-vr": "3"
}
},{
"infile": "out.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "pointmap-data-csv"
}
}],
"pointmap_export_links": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "pointmap-links-csv"
}
}],
"axial_export_map_csv": [{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "shapegraph-map-csv"
}
}],
"axial_export_map_mif_given_mif": [{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.mif",
"mode": "EXPORT",
"extraArgs": {
"-em": "shapegraph-map-mif"
}
}],
"axial_export_map_mif_given_mid": [{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.mid",
"mode": "EXPORT",
"extraArgs": {
"-em": "shapegraph-map-mif"
}
}],
"visibility_global_n": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "visibility",
"-vg": "",
"-vr": "n"
}
}],
"visibility_global_n_only_map": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "visibility",
"-vg": "",
"-vr": "n"
}
},{
"infile": "out.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "pointmap-data-csv"
}
}],
"vga_isovist": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "isovist"
}
}],
"vga_isovist_only_map": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "isovist"
}
},{
"infile": "out.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "pointmap-data-csv"
}
}],
"vga_angular": [{
"infile": "../../../testdata/turns_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "angular"
}
}],
"vga_angular_only_map": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "angular"
}
},{
"infile": "out.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "pointmap-data-csv"
}
}],
"vga_metric": [{
"infile": "../../../testdata/turns_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "metric",
"-vr": "n"
}
}],
"vga_metric_only_map": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "metric",
"-vr": "n"
}
},{
"infile": "out.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "pointmap-data-csv"
}
}],
"vga_thru_vision": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "thruvision"
}
}],
"vga_thru_vision_only_map": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "VGA",
"extraArgs": {
"-vm": "thruvision"
}
},{
"infile": "out.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "pointmap-data-csv"
}
}],
"vga_visual_step_depth": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "STEPDEPTH",
"extraArgs":{
"-sdp": "3,5",
"-sdt": "visual"
}
}],
"vga_metric_step_depth": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "STEPDEPTH",
"extraArgs":{
"-sdp": "3,5",
"-sdt": "metric"
}
}],
"vga_angular_step_depth": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "STEPDEPTH",
"extraArgs":{
"-sdp": "3,5",
"-sdt": "angular"
}
}],
"isovist_args": [{
"infile": "../../../testdata/gallery_empty.graph",
"outfile": "out.graph",
"mode": "ISOVIST",
"extraArgs":
{
"-ii": ["1.77,6.6,90,30", "3.1,5.6,270,90" ]
}
}],
"isovist_file": [{
"infile": "../../../testdata/gallery_empty.graph",
"outfile": "out.graph",
"mode": "ISOVIST",
"extraArgs":
{
"-if": "../../../testdata/isovists.csv"
}
}],
"axial_makelines": [{
"infile": "../../../testdata/gallery_empty.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs":{
"-xl": "3,5",
"-xf": ""
}
}],
"axial_makelines_polywall": [{
"infile": "../../../testdata/polywall.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs":{
"-xl": "4300,1500"
}
}],
"axial_makelines_rooms": [{
"infile": "../../../testdata/rooms.dxf",
"outfile": "out.graph",
"mode": "IMPORT",
"extraArgs":{}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs":{
"-xl": "7.5,7.5",
"-xf": ""
}
}],
"axial_rn": [{
"infile": "../../../testdata/simple_axlines.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n"
}
}],
"axial_r3": [{
"infile": "../../../testdata/simple_axlines.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "3"
}
}],
"axial_rn_length_weighted": [{
"infile": "../../../testdata/simple_axlines.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n",
"-xaw": "Line Length"
}
}],
"axial_rn_rra": [{
"infile": "../../../testdata/simple_axlines.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n",
"-xar": ""
}
}],
"axial_rn_choice": [{
"infile": "../../../testdata/simple_axlines.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n",
"-xac": ""
}
}],
"axial_rn_local": [{
"infile": "../../../testdata/simple_axlines.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n",
"-xal": ""
}
}],
"axial_rn_noncont_keys": [{
"infile": "../../../testdata/axmap_noncont_keys.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n"
}
}],
"axial_r3_noncont_keys": [{
"infile": "../../../testdata/axmap_noncont_keys.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "3"
}
}],
"axial_rn_rra_noncont_keys": [{
"infile": "../../../testdata/axmap_noncont_keys.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n",
"-xar": ""
}
}],
"axial_rn_choice_noncont_keys": [{
"infile": "../../../testdata/axmap_noncont_keys.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n",
"-xac": ""
}
}],
"axial_rn_local_noncont_keys": [{
"infile": "../../../testdata/axmap_noncont_keys.graph",
"outfile": "out.graph",
"mode": "AXIAL",
"extraArgs": {
"-xa": "n",
"-xal": ""
}
}],
"segment_tulip_1024_rn_steps": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "n",
"-srt": "steps"
}
}],
"segment_tulip_1024_rn_steps_choice": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "n",
"-srt": "steps",
"-sic": ""
}
}],
"segment_tulip_1024_rn_steps_weighted": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "n",
"-srt": "steps",
"-swa": "Segment Length"
}
}],
"segment_tulip_512_rn_steps": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "512",
"-sr": "n",
"-srt": "steps"
}
}],
"segment_tulip_123_rn_steps": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "123",
"-sr": "n",
"-srt": "steps"
}
}],
"segment_tulip_4_rn_steps": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "4",
"-sr": "n",
"-srt": "steps"
}
}],
"segment_tulip_1024_r5_steps": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "5",
"-srt": "steps"
}
}],
"segment_tulip_1024_rn_r5_steps": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "5,n",
"-srt": "steps"
}
}],
"segment_tulip_1024_r500_metric": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "500",
"-srt": "metric"
}
}],
"segment_tulip_1024_r180_angular": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "tulip",
"-stb": "1024",
"-sr": "500",
"-srt": "metric"
}
}],
"segment_angular_rn": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "angular",
"-sr": "n"
}
}],
"segment_topological_rn": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "topological",
"-sr": "n"
}
}],
"segment_metric_rn": [{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "SEGMENT",
"extraArgs": {
"-st": "metric",
"-sr": "n"
}
}],
"import_dxf_to_drawing":[{
"infile": "../../../testdata/barnsbury_extended1.dxf",
"outfile": "out.graph",
"mode": "IMPORT",
"extraArgs": {}
}],
"import_csv_to_drawing":[{
"infile": "../../../testdata/barnsbury_extended1_axial.csv",
"outfile": "out.graph",
"mode": "IMPORT",
"extraArgs": {}
}],
"import_tsv_to_data":[{
"infile": "../../../testdata/barnsbury_extended1_axial.tsv",
"outfile": "out.graph",
"mode": "IMPORT",
"extraArgs": {
"-it": "data"
}
}],
"convert_drawing_axial":[{
"infile": "../../../testdata/barnsbury_drawing.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "axial",
"-con": "Axial Map Test"
}
}],
"convert_drawing_segment":[{
"infile": "../../../testdata/barnsbury_drawing.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "segment",
"-con": "Segment Map Test"
}
}],
"convert_drawing_segment_only_map":[{
"infile": "../../../testdata/barnsbury_drawing.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "segment",
"-con": "Segment Map Test"
}
},{
"infile": "out.graph",
"outfile": "out.csv",
"mode": "EXPORT",
"extraArgs": {
"-em": "shapegraph-map-csv"
}
}],
"convert_drawing_convex":[{
"infile": "../../../testdata/polygons_drawing.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "convex",
"-con": "Convex Map Test"
}
}],
"convert_drawing_data_convex":[{
"infile": "../../../testdata/polygons_drawing.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test"
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "convex",
"-con": "Convex Map Test"
}
}],
"convert_drawing_data_drawing_polygons":[{
"infile": "../../../testdata/polygons_drawing.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test"
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "drawing",
"-con": "Drawing Map Test"
}
}],
"convert_drawing_data_drawing_lines":[{
"infile": "../../../testdata/barnsbury_drawing.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test"
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "drawing",
"-con": "Drawing Map Test"
}
}],
"convert_axial_data":[{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test"
}
}],
"convert_axial_data_copy_attributes":[{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test",
"-coc":""
}
}],
"convert_axial_drawing":[{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "drawing",
"-con": "Drawing Map Test"
}
}],
"convert_axial_segment":[{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "segment",
"-con": "Segment Map Test"
}
}],
"convert_axial_segment_remove_input":[{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "segment",
"-con": "Segment Map Test",
"-cir":""
}
}],
"convert_axial_segment_trim_lines":[{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "segment",
"-con": "Segment Map Test",
"-crsl":"40"
}
}],
"convert_axial_segment_copy_attributes":[{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "segment",
"-con": "Segment Map Test",
"-coc": ""
}
}],
"convert_axial_segment_copy_attributes_non_cont_keys":[{
"infile": "../../../testdata/axmap_noncont_keys.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "segment",
"-con": "Segment Map Test",
"-coc": ""
}
}],
"convert_axial_data_axial":[{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test"
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "axial",
"-con": "Axial Map Test"
}
}],
"convert_axial_data_axial_copy_attributes":[{
"infile": "../../../testdata/barnsbury_axial.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test",
"-coc": ""
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "axial",
"-con": "Axial Map Test",
"-coc": ""
}
}],
"convert_segment_data":[{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test"
}
}],
"convert_segment_data_segment":[{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test"
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "axial",
"-con": "Segment Map Test"
}
}],
"convert_segment_data_segment_copy_attributes":[{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "data",
"-con": "Data Map Test",
"-coc": ""
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "axial",
"-con": "Segment Map Test",
"-coc": ""
}
}],
"convert_segment_drawing":[{
"infile": "../../../testdata/barnsbury_segment.graph",
"outfile": "out.graph",
"mode": "MAPCONVERT",
"extraArgs": {
"-co": "drawing",
"-con": "Drawing Map Test"
}
}],
"pointmap_create_fill_make_one_operation": [{
"infile": "../../../testdata/gallery_empty.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pg": "0.04",
"-pp": "1.32,7.24,4.88,5.24",
"-pm": ""
}
}],
"dense_pointmap_create_fill_make":[{
"infile": "../../../testdata/rect1x1.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pg": "0.02",
"-pp": "0.5,0.5"
}
}],
"pointmap_create_fill_make_unmake": [{
"infile": "../../../testdata/gallery_empty.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pg": "0.04"
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pp": "1.32,7.24,4.88,5.24"
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pm": ""
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pu": ""
}
}],
"pointmap_create_fill_make_link_unmake": [{
"infile": "../../../testdata/gallery_empty.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pg": "0.04",
"-pp": "1.32,7.24,4.88,5.24",
"-pm": ""
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "LINK",
"extraArgs": {
"-lnk": ["1.32,7.24,4.88,5.24","1.16,5.28,3.28,7.12"]
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pu": ""
}
}],
"pointmap_create_fill_make_link_unmake_unlink": [{
"infile": "../../../testdata/gallery_empty.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pg": "0.04",
"-pp": "1.32,7.24,4.88,5.24",
"-pm": ""
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "LINK",
"extraArgs": {
"-lnk": ["1.32,7.24,4.88,5.24","1.16,5.28,3.28,7.12"]
}
},{
"infile": "out.graph",
"outfile": "out.graph",
"mode": "VISPREP",
"extraArgs": {
"-pu": "",
"-pl": ""
}
}]
}
}
================================================
FILE: RegressionTest/regressionconfig_agents.json
================================================
{
"rundir": "rundir",
"basebinlocation": "../../BaselineBinaries",
"testbinlocation": "../../../build",
"testcases": {
"agents_defaults": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "standard",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_line_of_sight_length_look": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "los-length",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_line_of_sight_length_look_only_map": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.tsv",
"mode": "AGENTS",
"extraArgs": {
"-am": "los-length",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0",
"-ot": "gatecounts"
}
}],
"agents_occluded_length_look": [{
"infile": "../../../testdata/gallery_connected_with_isovist.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "occ-length",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_any_occlusion_look": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "occ-any",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_occlusion_group_bins_45_look": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "occ-group-45",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_occlusion_group_bins_60_look": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "occ-group-60",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_furthest_occlusion_per_bin_look": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "occ-furthest",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_per_bin_far_distance_look": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "bin-far-dist",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_per_bin_angle_look": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "bin-angle",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_per_bin_far_distance_and_angle_look": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "bin-far-dist-angle",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_per_bin_memory_look": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.graph",
"mode": "AGENTS",
"extraArgs": {
"-am": "bin-memory",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0"
}
}],
"agents_gatecounts": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.tsv",
"mode": "AGENTS",
"extraArgs": {
"-am": "standard",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "5",
"-ot": "gatecounts"
}
}],
"agents_trails_all": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.cat",
"mode": "AGENTS",
"extraArgs": {
"-am": "standard",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0",
"-atrails": "0",
"-ot": "trails"
}
}],
"agents_trails_1": [{
"infile": "../../../testdata/gallery_connected.graph",
"outfile": "out.cat",
"mode": "AGENTS",
"extraArgs": {
"-am": "standard",
"-ats": "5000",
"-arr": "0.1",
"-afov": "15",
"-asteps": "3",
"-alife": "1000",
"-alocseed": "0",
"-atrails": "1",
"-ot": "trails"
}
}]
}
}
================================================
FILE: RegressionTest/runhelpers.py
================================================
import os
import shutil
import subprocess
import platform
def runTest():
pass
class cd:
"""Context manager for changing the current working directory"""
def __init__(self, newPath):
self.newPath = os.path.expanduser(newPath)
def __enter__(self):
self.savedPath = os.getcwd()
os.chdir(self.newPath)
def __exit__(self, etype, value, traceback):
os.chdir(self.savedPath)
def prepareDirectory(dirname):
if os.path.exists( dirname ):
shutil.rmtree(dirname)
os.makedirs(dirname)
def runExecutable( workingDir, arguments ):
""" Prepares a clean run directoy and runs the process in this """
with cd(workingDir):
with open("out.txt", "w") as outfile:
result = subprocess.run(arguments, stdout = outfile, stderr = subprocess.STDOUT )
output = ""
if os.path.exists( "out.txt"):
with open( "out.txt", "r" ) as f:
output = f.read()
if os.path.exists( "err.txt" ):
with open( "err.txt", "r") as f:
error = f.read();
return (result.returncode == 0, output)
def getExecutable(basedir):
sys = platform.system()
if sys == "Windows":
return os.path.join(basedir, sys, "depthmapXcli.exe")
else:
return os.path.join(basedir, sys, "depthmapXcli")
def getTestExecutable(basedir):
sys = platform.system()
if sys == "Windows":
return os.path.join(basedir, "depthmapXcli", "release", "depthmapXcli.exe")
else:
return os.path.join(basedir, "depthmapXcli", "depthmapXcli")
================================================
FILE: RegressionTest/test/context.py
================================================
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
import cmdlinewrapper
import config
import depthmaprunner
import RegressionTestRunner
import runhelpers
import performanceregressionconfig
import performancerunner
================================================
FILE: RegressionTest/test/disposablefile.py
================================================
import os
import shutil
class DisposableFile:
def __init__( self, filename ):
self.__filename = filename
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
if os.path.exists(self.filename()):
os.remove(self.filename())
def filename(self):
return self.__filename
class DisposableDirectoryError(Exception):
def __init__(self, message):
self.message = message
class DisposableDirectory:
def __init__(self, directoryName, create = False):
if directoryName == ".":
raise DisposableDirectoryError("The disposable directory cannot be the current directory")
if os.path.exists(directoryName):
raise DisposableDirectoryError("You can't make an existing directory disposable")
self.__directoryName = directoryName
if create:
os.makedirs(directoryName)
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, backtrace):
if os.path.exists(self.__directoryName):
shutil.rmtree(self.__directoryName)
def name(self):
return self.__directoryName
================================================
FILE: RegressionTest/test/fail/test_fail.py
================================================
import unittest
class TestFailure(unittest.TestCase):
"""
Test case that always fails to test that we capture failures correctly
"""
def test_fail_this(self):
print("This will always fail and should only be used in tests of the unittest framework")
self.assertTrue(False)
if __name__=="__main__":
unittest.main()
================================================
FILE: RegressionTest/test/pass/test_pass.py
================================================
import unittest
class TestFailure(unittest.TestCase):
"""
Test case that always passes to test that we capture failures correctly
"""
def test_fail_this(self):
print("This will always pass and should only be used in tests of the unittest framework")
self.assertTrue(True)
if __name__=="__main__":
unittest.main()
================================================
FILE: RegressionTest/test/test_RegressionTestRunner.py
================================================
import unittest
from test_config import writeConfig
from RegressionTestRunner import RegressionTestRunner
from disposablefile import DisposableFile, DisposableDirectory
import os
class TestRegressionTestRunner(unittest.TestCase):
def runfunc(self, workingdir, args):
if self.counter >= 0:
self.counter = self.counter - 1
if self.counter == 0:
return (False, "Failed")
if not os.path.exists(workingdir):
os.makedirs(workingdir)
with open(os.path.join(workingdir, "outfile.graph"), "w") as f:
f.write("123")
with open(os.path.join(workingdir, "runtimes.csv"), "w") as f:
f.write("action,duration\n")
return (True, "")
def test_RegressionTestRunnerAllGoesWell(self):
with DisposableFile("testconfig.json") as f, DisposableDirectory("testrundir") as d:
writeConfig(f.filename(), d.name())
runner = RegressionTestRunner(f.filename(), lambda w, a: self.runfunc(w, a))
self.counter = -1
self.assertTrue(runner.run())
def test_RegressionTestRunnerOneRunFails(self):
with DisposableFile("testconfig.json") as f, DisposableDirectory("testrundir") as d:
writeConfig(f.filename(), d.name())
runner = RegressionTestRunner(f.filename(), lambda w, a: self.runfunc(w, a))
self.counter = 2
self.assertFalse(runner.run())
if __name__ == "__main__":
unittest.main()
================================================
FILE: RegressionTest/test/test_cmdlinewrapper.py
================================================
import unittest
import collections
from context import cmdlinewrapper
class TestDepthmapCmd(unittest.TestCase):
def test_correctBehaviour(self):
cmd = cmdlinewrapper.DepthmapCmd()
cmd.infile = "foo"
cmd.outfile = "bar"
cmd.mode = "visibility"
self.assertEqual(cmd.toCmdArray(), ["-f", "foo", "-o", "bar", "-m", "visibility" ])
cmd.simpleMode = True
self.assertEqual(cmd.toCmdArray(), ["-f", "foo", "-o", "bar", "-m", "visibility", "-s" ])
def test_exceptions(self):
cmd = cmdlinewrapper.DepthmapCmd()
with self.assertRaises(cmdlinewrapper.CommandLineError) as cm:
cmd.toCmdArray()
self.assertEqual(cm.exception.message, "infile must be defined")
cmd.infile = "foo"
with self.assertRaises(cmdlinewrapper.CommandLineError) as cm:
cmd.toCmdArray()
self.assertEqual(cm.exception.message, "outfile must be defined")
cmd.outfile = "bar"
with self.assertRaises(cmdlinewrapper.CommandLineError) as cm:
cmd.toCmdArray()
self.assertEqual(cm.exception.message, "mode must be defined")
def test_extraArgs(self):
cmd = cmdlinewrapper.DepthmapCmd()
cmd.infile = "foo"
cmd.outfile = "bar"
cmd.mode = "visibility"
# use ordered dict here for testability
cmd.extraArgs = collections.OrderedDict([("-lnk", ["foo", "bar"]), ("-vm", "metric"), ("-vg", "" )])
self.assertEqual(cmd.toCmdArray(), ["-f", "foo", "-o", "bar", "-m", "visibility", "-lnk", "foo", "-lnk", "bar", "-vm", "metric", "-vg" ])
if __name__ == "__main__":
unittest.main()
================================================
FILE: RegressionTest/test/test_config.py
================================================
import unittest
from context import config
from disposablefile import DisposableFile
import RegressionTestRunner
import os
def writeConfig(filename, rundir):
with open(filename, "w") as f:
f.write('{ "rundir": "'+ rundir +'",\n')
f.write(' "basebinlocation": "../baselineBinaries",\n')
f.write(' "testbinlocation": "../..",\n')
f.write(' "testcases": {\n')
f.write(' "test1": [{\n')
f.write(' "infile": "infile.graph",\n')
f.write(' "outfile": "outfile.graph",\n')
f.write(' "mode": "VGA",\n')
f.write(' "extraArgs": {\n')
f.write(' "-vm": "metric",\n')
f.write(' "-vr": "7"}}]}}')
class TestMethods(unittest.TestCase):
def test_buildCmd(self):
data = [{ "infile": "foo.graph", "outfile": "bar.graph", "mode": "VGA", "extraArgs": { "-vm": "visibility", "-vg": "", "-vr": "5"}}]
cmds = config.buildCmd( data )
self.assertEqual(cmds[0].infile, "foo.graph")
self.assertEqual(cmds[0].outfile, "bar.graph")
self.assertEqual(cmds[0].mode, "VGA")
self.assertEqual(len(cmds[0].extraArgs),3)
def test_configClass(self):
with DisposableFile("test.config") as testfile:
writeConfig(testfile.filename(), "../foo/bar")
conf = config.RegressionConfig(testfile.filename())
self.assertEqual(len(conf.testcases), 1)
self.assertEqual(conf.rundir, "../foo/bar")
self.assertTrue("test1" in conf.testcases)
class TestRealConfig(unittest.TestCase):
def test_realConfig(self):
configFile = os.path.join("..", RegressionTestRunner.defaultConfigFile)
self.assertNotEqual( configFile, "" )
conf = config.RegressionConfig(configFile)
self.assertFalse(conf.performanceRegression.enabled)
if __name__ == "__main__":
unittest.main()
================================================
FILE: RegressionTest/test/test_depthmaprunner.py
================================================
from context import depthmaprunner
import cmdlinewrapper
from cmdlinewrapper import DepthmapCmd
import unittest
from disposablefile import DisposableFile, DisposableDirectory
import os.path
class BinaryDiffTest(unittest.TestCase):
def test_binaryDiff(self):
with DisposableFile( "testfile1.bin" ) as f1, DisposableFile( "testfile2.bin") as f2:
with open( f1.filename(), "wb" ) as f:
f.write( bytes.fromhex( "2000 0839") )
with open( f2.filename(), "wb" ) as f:
f.write( bytes.fromhex( "2000 0838" ))
self.assertTrue(depthmaprunner.diffBinaryFiles(f1.filename(), f1.filename()))
self.assertFalse(depthmaprunner.diffBinaryFiles(f1.filename(), f2.filename()))
class DepthmapRunnerTest(unittest.TestCase):
def runfunc(self, rundir, args):
self.assertEqual(rundir, self.__rundir)
self.assertEqual(args, self.__args)
def testDepthmapRunner(self):
dcmd = DepthmapCmd()
dcmd.infile = "foo"
dcmd.outfile = "bar"
dcmd.mode = "mode"
dcmd.modeLines = []
runner = depthmaprunner.DepthmapRunner(lambda d, a: self.runfunc(d, a), "bin")
self.__args = ["bin", "-f", "foo", "-o", "bar", "-m", "mode"]
self.__rundir = "dir"
runner.runDepthmap(dcmd, "dir")
class DepthmapRegressioRunnerTest(unittest.TestCase):
def getOutfile(self, args):
outputfile = None
for i in range(0, len(args)):
if args[i] == "-o" and i < len(args):
outputfile = args[i+1]
break
self.assertFalse( outputfile == None )
return outputfile
def getTimingsFile(self,args):
timingsFile = None
for i in range(0, len(args)):
if args[i] == "-t" and i < len(args):
timingsFile = args[i+1]
break
return timingsFile
def runfuncSucceedAlwaysSame(self, rundir, args):
outpath = os.path.join(rundir, self.getOutfile(args))
with open (outpath, "w") as f:
f.write("123")
timingsFile = self.getTimingsFile(args)
if timingsFile:
with open (os.path.join(rundir, timingsFile), "w") as f:
f.write('"action","duration"\n')
return (True, "")
def runfuncDifferentResults(self, rundir, args):
outpath = os.path.join(rundir, self.getOutfile(args))
with open (outpath, "w") as f:
f.write(self.__outContent)
self.__outContent = self.__outContent + "x"
return (True, "")
def runfuncWriteNoFile(self, rundir, args, dontWriteFor):
if not args[0] == dontWriteFor:
outpath = os.path.join(rundir, self.getOutfile(args))
with open (outpath, "w") as f:
f.write("123")
return (True, "")
def runfuncFail(self, rundir, args, failFor, shouldOtherRun):
if args[0] == failFor:
return (False, "Boom!")
if shouldOtherRun:
outpath = os.path.join(rundir, self.getOutfile(args))
with open (outpath, "w") as f:
f.write("123")
return (True, "")
else:
self.assertFail("Should not have been called for " + args[0])
def makeCommand(self, infile, outfile, mode):
cmd = cmdlinewrapper.DepthmapCmd()
cmd.infile = infile
cmd.outfile = outfile
cmd.mode = mode
return [cmd]
def testSuccessfullRun(self):
with DisposableDirectory("testdir", True) as dir:
runner = depthmaprunner.DepthmapRegressionRunner(lambda d, a: self.runfuncSucceedAlwaysSame(d,a), "basebin", "testbin", dir.name())
(result, message) = runner.runTestCase("testname", self.makeCommand("infile.graph", "outfile.graph", "visibility"))
self.assertTrue(result)
def testRunWithDiff(self):
self.__outContent = "abc"
with DisposableDirectory("testdir", True) as dir:
runner = depthmaprunner.DepthmapRegressionRunner(lambda d, a: self.runfuncDifferentResults(d,a), "basebin", "testbin", dir.name())
(result, message) = runner.runTestCase("testname", self.makeCommand("infile.graph", "outfile.graph", "visibility"))
self.assertFalse(result)
self.assertEqual(message, "Test outputs differ")
def testBaseRunOutputMissing(self):
with DisposableDirectory("testdir", True) as dir:
runner = depthmaprunner.DepthmapRegressionRunner(lambda d, a: self.runfuncWriteNoFile(d,a, "basebin"), "basebin", "testbin", dir.name())
(result, message) = runner.runTestCase("testname", self.makeCommand("infile.graph", "outfile.graph", "visibility"))
self.assertFalse(result)
self.assertEqual(message, "Baseline output {0} does not exist".format(os.path.join(dir.name(), "testname" + "_base", "outfile.graph")))
def testTestRunOutputMissing(self):
with DisposableDirectory("testdir", True) as dir:
runner = depthmaprunner.DepthmapRegressionRunner(lambda d, a: self.runfuncWriteNoFile(d,a, "testbin"), "basebin", "testbin", dir.name())
(result, message) = runner.runTestCase("testname", self.makeCommand("infile.graph", "outfile.graph", "visibility"))
self.assertFalse(result)
self.assertEqual(message, "Test output {0} does not exist".format(os.path.join(dir.name(), "testname" + "_test", "outfile.graph")))
def testBaseRunFail(self):
with DisposableDirectory("testdir", True) as dir:
runner = depthmaprunner.DepthmapRegressionRunner(lambda d, a: self.runfuncFail(d,a, "basebin", False), "basebin", "testbin", dir.name())
(result, message) = runner.runTestCase("testname", self.makeCommand("infile.graph", "outfile.graph", "visibility"))
self.assertFalse(result)
self.assertEqual(message, "Baseline run failed at step: 0")
def testTestRunFail(self):
with DisposableDirectory("testdir", True) as dir:
runner = depthmaprunner.DepthmapRegressionRunner(lambda d, a: self.runfuncFail(d,a, "testbin", True), "basebin", "testbin", dir.name())
(result, message) = runner.runTestCase("testname", self.makeCommand("infile.graph", "outfile.graph", "visibility"))
self.assertFalse(result)
self.assertEqual(message, "Test run failed at step: 0")
if __name__=="__main__":
unittest.main()
================================================
FILE: RegressionTest/test/test_disposablefile.py
================================================
import disposablefile
import unittest
import os.path
class TestDisposableFile(unittest.TestCase):
def testFileDeletion(self):
with disposablefile.DisposableFile("testfile.xyz") as f:
self.assertEqual(f.filename(), "testfile.xyz")
with open( f.filename(), "w") as tf:
tf.write("foo")
self.assertTrue( os.path.exists(f.filename()))
self.assertFalse( os.path.exists("testfile.xyz"))
class TestDisposableDirectory(unittest.TestCase):
def testLifetime(self):
with disposablefile.DisposableDirectory("testdir1", True) as d:
self.assertEqual("testdir1", d.name())
self.assertTrue(os.path.exists(d.name()))
self.assertTrue(os.path.isdir(d.name()))
with open ( os.path.join(d.name(), "testfile.txt"), "w") as f:
f.write("123")
self.assertTrue(os.path.exists(os.path.join(d.name(), "testfile.txt")))
self.assertFalse(os.path.exists(d.name()))
def testNotAutomaticallyCreated(self):
with disposablefile.DisposableDirectory("testdir1", False) as d:
self.assertEqual("testdir1", d.name())
self.assertFalse(os.path.exists(d.name()))
os.makedirs(d.name())
self.assertTrue(os.path.exists(d.name()))
self.assertTrue(os.path.isdir(d.name()))
with open ( os.path.join(d.name(), "testfile.txt"), "w") as f:
f.write("123")
self.assertTrue(os.path.exists(os.path.join(d.name(), "testfile.txt")))
self.assertFalse(os.path.exists(d.name()))
def testNeverCreated(self):
with disposablefile.DisposableDirectory("testdir1", False) as d:
self.assertEqual("testdir1", d.name())
self.assertFalse(os.path.exists(d.name()))
self.assertFalse(os.path.exists(d.name()))
def testExceptions(self):
with self.assertRaises(disposablefile.DisposableDirectoryError) as cm:
disposablefile.DisposableDirectory(".")
self.assertEqual(cm.exception.message,"The disposable directory cannot be the current directory" )
with disposablefile.DisposableDirectory("testdir1", True) as d:
with self.assertRaises(disposablefile.DisposableDirectoryError) as cm:
disposablefile.DisposableDirectory(d.name())
self.assertEqual( cm.exception.message, "You can't make an existing directory disposable" )
if __name__=="__main__":
unittest.main()
================================================
FILE: RegressionTest/test/test_main.py
================================================
import argparse
import unittest
if __name__ == "__main__":
parser = argparse.ArgumentParser("Find and run all unittest in a folder")
parser.add_argument('--folder', '-f', dest='folder', help='Optional folder to search, defaults to .')
args = parser.parse_args()
if args.folder:
folder = args.folder
else:
folder = '.'
loader = unittest.TestLoader()
suite = loader.discover(folder)
runner = unittest.TextTestRunner()
result = runner.run(suite)
if not result.wasSuccessful():
exit(-1)
================================================
FILE: RegressionTest/test/test_performanceregressionconfig.py
================================================
import unittest
from context import performanceregressionconfig
import disposablefile
class TestDisabledConfig(unittest.TestCase):
def test_missingConfig(self):
p = performanceregressionconfig.PerformanceRegressionConfig(None)
self.assertFalse(p.enabled)
def test_disabledConfig(self):
p = performanceregressionconfig.PerformanceRegressionConfig({"enabled": "0"})
self.assertFalse(p.enabled)
p = performanceregressionconfig.PerformanceRegressionConfig({"enabled": "False"})
self.assertFalse(p.enabled)
p = performanceregressionconfig.PerformanceRegressionConfig({"enabled": "True"})
self.assertTrue(p.enabled)
class TestSuccessfulConfig(unittest.TestCase):
def test_defaultValues(self):
p = performanceregressionconfig.PerformanceRegressionConfig({})
self.assertTrue(p.enabled)
self.assertEqual(p.runsPerInstance, 3)
self.assertEqual(p.relativeThresholdInPercent, 1)
self.assertEqual(p.absoluteThresholdInSeconds, 1)
def test_overrideValues(self):
p = performanceregressionconfig.PerformanceRegressionConfig(
{ "runsPerInstance": "5",
"relativeThresholdInPercent": 1.5,
"absoluteThresholdInSeconds": "4.1"
})
self.assertTrue(p.enabled)
self.assertEqual(p.runsPerInstance, 5)
self.assertEqual(p.relativeThresholdInPercent, 1.5)
self.assertEqual(p.absoluteThresholdInSeconds, 4.1)
if __name__ == "__main__":
unittest.main()
================================================
FILE: RegressionTest/test/test_performancerunner.py
================================================
import csv
import os
import unittest
from disposablefile import DisposableFile, DisposableDirectory
from context import performancerunner
from context import performanceregressionconfig
import test_depthmaprunner
class PerformanceCheckTest(unittest.TestCase):
def test_filesMissing(self):
message = performancerunner.checkPerformance("f1.csv", "f2.csv", 1, 2)
self.assertEqual(message, "Base performance timing file f1.csv is missing")
with DisposableFile("f1.csv") as f1:
with open(f1.filename(), "w") as f:
f.write("action,average\n")
message = performancerunner.checkPerformance("f1.csv", "f2.csv",1 ,2)
self.assertEqual(message, "Test performance timing file f2.csv is missing")
with DisposableFile("f2.csv") as f2:
with open(f2.filename(), "w") as f:
f.write("action,average\n")
message = performancerunner.checkPerformance("f1.csv", "f2.csv", 1, 2)
self.assertEqual(message, "Base performance timing file f1.csv is missing")
def test_fileLineNumberMismatch(self):
with DisposableFile("f1.csv") as f1, DisposableFile("f2.csv") as f2:
with open(f1.filename(), "w") as f:
f.write("action,average\nfoo,10\n")
with open(f2.filename(), "w") as f:
f.write("action,average\n")
message = performancerunner.checkPerformance("f1.csv", "f2.csv", 1, 2)
self.assertEqual(message, "baseline performance file f1.csv has more lines than the test one f2.csv")
with DisposableFile("f1.csv") as f1, DisposableFile("f2.csv") as f2:
with open(f1.filename(), "w") as f:
f.write("action,average\nfoo,10\n")
with open(f2.filename(), "w") as f:
f.write("action,average\nfoo,10\nbar,20\n")
message = performancerunner.checkPerformance("f1.csv", "f2.csv", 1 , 2)
self.assertEqual(message, "baseline performance file f1.csv has fewer lines than the test one f2.csv")
def test_fileLabelMismatch(self):
with DisposableFile("f1.csv") as f1, DisposableFile("f2.csv") as f2:
with open(f1.filename(), "w") as f:
f.write("action,average\nfoo,10\n")
with open(f2.filename(), "w") as f:
f.write("action,average\nbar,10\n")
message = performancerunner.checkPerformance("f1.csv", "f2.csv", 1, 2)
self.assertEqual(message, "performance line mismatch: base 'foo', test 'bar'")
def test_successfulRunEmptyFile(self):
with DisposableFile("f1.csv") as f1, DisposableFile("f2.csv") as f2:
with open(f1.filename(), "w") as f:
f.write("action,average\n")
with open(f2.filename(), "w") as f:
f.write("action,average\n")
message = performancerunner.checkPerformance("f1.csv", "f2.csv", 1, 2)
self.assertEqual(message, "")
def test_successfulRun(self):
with DisposableFile("f1.csv") as f1, DisposableFile("f2.csv") as f2:
with open(f1.filename(), "w") as f:
f.write("action,average\nfoo,10\nbar,21\nbaz,1000\nblub,10\n")
with open(f2.filename(), "w") as f:
f.write("action,average\nfoo,10.9\nbar,10\nbaz,1010\nblub,10\n")
message = performancerunner.checkPerformance("f1.csv", "f2.csv", 1, 2)
self.assertEqual(message, "")
def test_performanceRegression(self):
with DisposableFile("f1.csv") as f1, DisposableFile("f2.csv") as f2:
with open(f1.filename(), "w") as f:
f.write("action,average\nfoo,10\n")
with open(f2.filename(), "w") as f:
f.write("action,average\nfoo,18\n")
message = performancerunner.checkPerformance("f1.csv", "f2.csv", 1, 2)
self.assertEqual(message, "Performance regression: foo took 18s instead of 10s")
class test_PerformanceAggregation(unittest.TestCase):
def test_aggregation(self):
with DisposableDirectory("testdir") as d:
os.makedirs(d.name())
nameTemplate = "test{0}{1}.csv"
with open(os.path.join(d.name(), nameTemplate.format(0,0)), "w") as f:
f.write("action,duration\nt1,3\nt2,2\n")
with open(os.path.join(d.name(), nameTemplate.format(1,0)), "w") as f:
f.write("action,duration\nt1,1.5\nt2,2.5\n")
with open(os.path.join(d.name(), nameTemplate.format(2,0)), "w") as f:
f.write("action,duration\nt1,2\nt2,1.5\n")
resFile = performancerunner.aggregatePerformanceStats(d.name(), 3, 1, nameTemplate)
with open(resFile, "r") as f:
reader = csv.DictReader(f)
line = next(reader)
self.assertEqual(line["action"], "t1")
self.assertEqual(float(line["max"]), 3 )
self.assertEqual(float(line["min"]), 1.5)
self.assertEqual(float(line["average"]), 6.5/3)
line = next(reader)
self.assertEqual(line["action"], "t2")
self.assertEqual(float(line["max"]), 2.5 )
self.assertEqual(float(line["min"]), 1.5)
self.assertEqual(float(line["average"]), 2)
line = next(reader)
self.assertEqual(line["action"], "total")
self.assertEqual(float(line["max"]), 5 )
self.assertEqual(float(line["min"]), 3.5)
self.assertEqual(float(line["average"]), 12.5/3)
class test_PerformanceRunner(test_depthmaprunner.DepthmapRegressioRunnerTest):
def testSuccessfullRun(self):
with DisposableDirectory("testdir", True) as testDir, DisposableDirectory("basedir") as baseDir:
conf = performanceregressionconfig.PerformanceRegressionConfig({})
runner = performancerunner.PerformanceRunner(lambda d, a: self.runfuncSucceedAlwaysSame(d,a), "basebin", "testbin", testDir.name(), conf)
(result, message) = runner.runTestCase("testname", self.makeCommand("infile.graph", "outfile.graph","visibility"))
self.assertTrue(result)
================================================
FILE: RegressionTest/test/test_runhelpers.py
================================================
import unittest
from context import runhelpers
from disposablefile import DisposableDirectory
import os
import platform
import sys
class TestRunHelpers(unittest.TestCase):
def test_prepareDirectory(self):
with DisposableDirectory("testdir", True) as d:
self.assertTrue(os.path.isdir(d.name()))
testfile = os.path.join(d.name(), "testfile.txt")
with open(testfile, "w") as f:
f.write("123")
self.assertTrue(os.path.exists(testfile))
runhelpers.prepareDirectory(d.name())
self.assertTrue(os.path.isdir(d.name()))
self.assertFalse(os.path.exists(testfile))
def test_cd(self):
currentpath = os.getcwd()
with DisposableDirectory("testdir", True) as d:
with runhelpers.cd("testdir"):
self.assertEqual(os.getcwd(), os.path.join(currentpath, d.name()))
self.assertEqual(os.getcwd(), currentpath, d.name())
def test_getBinary(self):
result = runhelpers.getExecutable("foo")
sys = platform.system()
if sys == "Windows":
self.assertEqual( result, "foo\\Windows\\depthmapXcli.exe")
else:
self.assertEqual( result, "foo/" + sys + "/depthmapXcli" )
def test_getTestBinary(self):
result = runhelpers.getTestExecutable("foo")
sys = platform.system()
if sys == "Windows":
self.assertEqual( result, "foo\\depthmapXcli\\release\\depthmapXcli.exe")
else:
self.assertEqual( result, "foo/depthmapXcli/depthmapXcli" )
def test_runExecutable(self):
with DisposableDirectory("testdir", True) as d:
retcode, output = runhelpers.runExecutable( d.name(), [sys.executable, "-c", "print('foo')"])
self.assertTrue(retcode)
self.assertEqual(output, "foo\n")
def test_runExecutableFail(self):
with DisposableDirectory("testdir") as d:
runhelpers.prepareDirectory(d.name())
retcode, output = runhelpers.runExecutable( d.name(), [sys.executable, "-c", "exit(-1)"])
self.assertFalse(retcode)
self.assertEqual(output, "")
def test_runExecutableException(self):
with DisposableDirectory("testdir") as d:
runhelpers.prepareDirectory(d.name())
retcode, output = runhelpers.runExecutable( d.name(), [sys.executable, "-c", "raise Exception()"])
self.assertFalse(retcode)
self.assertEqual(output, 'Traceback (most recent call last):\n File "<string>", line 1, in <module>\nException\n')
if __name__=="__main__":
unittest.main()
================================================
FILE: RegressionTest/test/test_test_main.py
================================================
import unittest
from disposablefile import DisposableDirectory
from context import runhelpers
import sys
class TestUnitTestMain(unittest.TestCase):
def test_capture_pass(self):
with DisposableDirectory("testdir_pass", True) as d:
retcode, output = runhelpers.runExecutable( d.name(), [sys.executable, "../test_main.py", "-f", "../pass"])
if not retcode:
print("printing the underlying test output to help diagnose the issue:")
print(output)
self.assertTrue(retcode)
def test_capture_fail(self):
with DisposableDirectory("testdir_fail", True) as d:
retcode, output = runhelpers.runExecutable( d.name(), [sys.executable, "../test_main.py", "-f", "../fail"])
if retcode:
print("printing the underlying test output to help diagnose the issue:")
print(output)
self.assertFalse(retcode)
if __name__=="__main__":
unittest.main()
================================================
FILE: ThirdParty/Catch/catch.hpp
================================================
/*
* Catch v1.6.1
* Generated: 2017-01-20 12:33:53.497767
* ----------------------------------------------------------
* This file has been merged from multiple headers. Please don't edit it directly
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED
#define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED
#define TWOBLUECUBES_CATCH_HPP_INCLUDED
#ifdef __clang__
# pragma clang system_header
#elif defined __GNUC__
# pragma GCC system_header
#endif
// #included from: internal/catch_suppress_warnings.h
#ifdef __clang__
# ifdef __ICC // icpc defines the __clang__ macro
# pragma warning(push)
# pragma warning(disable: 161 1682)
# else // __ICC
# pragma clang diagnostic ignored "-Wglobal-constructors"
# pragma clang diagnostic ignored "-Wvariadic-macros"
# pragma clang diagnostic ignored "-Wc99-extensions"
# pragma clang diagnostic ignored "-Wunused-variable"
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wpadded"
# pragma clang diagnostic ignored "-Wc++98-compat"
# pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
# pragma clang diagnostic ignored "-Wswitch-enum"
# pragma clang diagnostic ignored "-Wcovered-switch-default"
# endif
#elif defined __GNUC__
# pragma GCC diagnostic ignored "-Wvariadic-macros"
# pragma GCC diagnostic ignored "-Wunused-variable"
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wpadded"
#endif
#if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER)
# define CATCH_IMPL
#endif
#ifdef CATCH_IMPL
# ifndef CLARA_CONFIG_MAIN
# define CLARA_CONFIG_MAIN_NOT_DEFINED
# define CLARA_CONFIG_MAIN
# endif
#endif
// #included from: internal/catch_notimplemented_exception.h
#define TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_H_INCLUDED
// #included from: catch_common.h
#define TWOBLUECUBES_CATCH_COMMON_H_INCLUDED
// #included from: catch_compiler_capabilities.h
#define TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED
// Detect a number of compiler features - mostly C++11/14 conformance - by compiler
// The following features are defined:
//
// CATCH_CONFIG_CPP11_NULLPTR : is nullptr supported?
// CATCH_CONFIG_CPP11_NOEXCEPT : is noexcept supported?
// CATCH_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods
// CATCH_CONFIG_CPP11_IS_ENUM : std::is_enum is supported?
// CATCH_CONFIG_CPP11_TUPLE : std::tuple is supported
// CATCH_CONFIG_CPP11_LONG_LONG : is long long supported?
// CATCH_CONFIG_CPP11_OVERRIDE : is override supported?
// CATCH_CONFIG_CPP11_UNIQUE_PTR : is unique_ptr supported (otherwise use auto_ptr)
// CATCH_CONFIG_CPP11_OR_GREATER : Is C++11 supported?
// CATCH_CONFIG_VARIADIC_MACROS : are variadic macros supported?
// CATCH_CONFIG_COUNTER : is the __COUNTER__ macro supported?
// ****************
// Note to maintainers: if new toggles are added please document them
// in configuration.md, too
// ****************
// In general each macro has a _NO_<feature name> form
// (e.g. CATCH_CONFIG_CPP11_NO_NULLPTR) which disables the feature.
// Many features, at point of detection, define an _INTERNAL_ macro, so they
// can be combined, en-mass, with the _NO_ forms later.
// All the C++11 features can be disabled with CATCH_CONFIG_NO_CPP11
#ifdef __cplusplus
# if __cplusplus >= 201103L
# define CATCH_CPP11_OR_GREATER
# endif
# if __cplusplus >= 201402L
# define CATCH_CPP14_OR_GREATER
# endif
#endif
#ifdef __clang__
# if __has_feature(cxx_nullptr)
# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
# endif
# if __has_feature(cxx_noexcept)
# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
# endif
# if defined(CATCH_CPP11_OR_GREATER)
# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS _Pragma( "clang diagnostic ignored \"-Wparentheses\"" )
# endif
#endif // __clang__
////////////////////////////////////////////////////////////////////////////////
// Borland
#ifdef __BORLANDC__
#endif // __BORLANDC__
////////////////////////////////////////////////////////////////////////////////
// EDG
#ifdef __EDG_VERSION__
#endif // __EDG_VERSION__
////////////////////////////////////////////////////////////////////////////////
// Digital Mars
#ifdef __DMC__
#endif // __DMC__
////////////////////////////////////////////////////////////////////////////////
// GCC
#ifdef __GNUC__
# if __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__)
# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
# endif
# if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) && defined(CATCH_CPP11_OR_GREATER)
# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS _Pragma( "GCC diagnostic ignored \"-Wparentheses\"" )
# endif
// - otherwise more recent versions define __cplusplus >= 201103L
// and will get picked up below
#endif // __GNUC__
////////////////////////////////////////////////////////////////////////////////
// Visual C++
#ifdef _MSC_VER
#if (_MSC_VER >= 1600)
# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
# define CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR
#endif
#if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015))
#define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
#define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
#define CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE
#endif
#endif // _MSC_VER
////////////////////////////////////////////////////////////////////////////////
// Use variadic macros if the compiler supports them
#if ( defined _MSC_VER && _MSC_VER > 1400 && !defined __EDGE__) || \
( defined __WAVE__ && __WAVE_HAS_VARIADICS ) || \
( defined __GNUC__ && __GNUC__ >= 3 ) || \
( !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L )
#define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS
#endif
// Use __COUNTER__ if the compiler supports it
#if ( defined _MSC_VER && _MSC_VER >= 1300 ) || \
( defined __GNUC__ && __GNUC__ >= 4 && __GNUC_MINOR__ >= 3 ) || \
( defined __clang__ && __clang_major__ >= 3 )
#define CATCH_INTERNAL_CONFIG_COUNTER
#endif
////////////////////////////////////////////////////////////////////////////////
// C++ language feature support
// catch all support for C++11
#if defined(CATCH_CPP11_OR_GREATER)
# if !defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR)
# define CATCH_INTERNAL_CONFIG_CPP11_NULLPTR
# endif
# ifndef CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
# define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
# endif
# ifndef CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
# define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
# endif
# ifndef CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM
# define CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM
# endif
# ifndef CATCH_INTERNAL_CONFIG_CPP11_TUPLE
# define CATCH_INTERNAL_CONFIG_CPP11_TUPLE
# endif
# ifndef CATCH_INTERNAL_CONFIG_VARIADIC_MACROS
# define CATCH_INTERNAL_CONFIG_VARIADIC_MACROS
# endif
# if !defined(CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG)
# define CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG
# endif
# if !defined(CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE)
# define CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE
# endif
# if !defined(CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR)
# define CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR
# endif
# if !defined(CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE)
# define CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE
# endif
#endif // __cplusplus >= 201103L
// Now set the actual defines based on the above + anything the user has configured
#if defined(CATCH_INTERNAL_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NO_NULLPTR) && !defined(CATCH_CONFIG_CPP11_NULLPTR) && !defined(CATCH_CONFIG_NO_CPP11)
# define CATCH_CONFIG_CPP11_NULLPTR
#endif
#if defined(CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NO_NOEXCEPT) && !defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_CONFIG_NO_CPP11)
# define CATCH_CONFIG_CPP11_NOEXCEPT
#endif
#if defined(CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_NO_GENERATED_METHODS) && !defined(CATCH_CONFIG_CPP11_GENERATED_METHODS) && !defined(CATCH_CONFIG_NO_CPP11)
# define CATCH_CONFIG_CPP11_GENERATED_METHODS
#endif
#if defined(CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_NO_IS_ENUM) && !defined(CATCH_CONFIG_CPP11_IS_ENUM) && !defined(CATCH_CONFIG_NO_CPP11)
# define CATCH_CONFIG_CPP11_IS_ENUM
#endif
#if defined(CATCH_INTERNAL_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_CPP11_NO_TUPLE) && !defined(CATCH_CONFIG_CPP11_TUPLE) && !defined(CATCH_CONFIG_NO_CPP11)
# define CATCH_CONFIG_CPP11_TUPLE
#endif
#if defined(CATCH_INTERNAL_CONFIG_VARIADIC_MACROS) && !defined(CATCH_CONFIG_NO_VARIADIC_MACROS) && !defined(CATCH_CONFIG_VARIADIC_MACROS)
# define CATCH_CONFIG_VARIADIC_MACROS
#endif
#if defined(CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG) && !defined(CATCH_CONFIG_CPP11_NO_LONG_LONG) && !defined(CATCH_CONFIG_CPP11_LONG_LONG) && !defined(CATCH_CONFIG_NO_CPP11)
# define CATCH_CONFIG_CPP11_LONG_LONG
#endif
#if defined(CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE) && !defined(CATCH_CONFIG_CPP11_NO_OVERRIDE) && !defined(CATCH_CONFIG_CPP11_OVERRIDE) && !defined(CATCH_CONFIG_NO_CPP11)
# define CATCH_CONFIG_CPP11_OVERRIDE
#endif
#if defined(CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) && !defined(CATCH_CONFIG_CPP11_NO_UNIQUE_PTR) && !defined(CATCH_CONFIG_CPP11_UNIQUE_PTR) && !defined(CATCH_CONFIG_NO_CPP11)
# define CATCH_CONFIG_CPP11_UNIQUE_PTR
#endif
// Use of __COUNTER__ is suppressed if __JETBRAINS_IDE__ is #defined (meaning we're being parsed by a JetBrains IDE for
// analytics) because, at time of writing, __COUNTER__ is not properly handled by it.
// This does not affect compilation
#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) && !defined(__JETBRAINS_IDE__)
# define CATCH_CONFIG_COUNTER
#endif
#if defined(CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE) && !defined(CATCH_CONFIG_CPP11_NO_SHUFFLE) && !defined(CATCH_CONFIG_CPP11_SHUFFLE) && !defined(CATCH_CONFIG_NO_CPP11)
# define CATCH_CONFIG_CPP11_SHUFFLE
#endif
#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS)
# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS
#endif
// noexcept support:
#if defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_NOEXCEPT)
# define CATCH_NOEXCEPT noexcept
# define CATCH_NOEXCEPT_IS(x) noexcept(x)
#else
# define CATCH_NOEXCEPT throw()
# define CATCH_NOEXCEPT_IS(x)
#endif
// nullptr support
#ifdef CATCH_CONFIG_CPP11_NULLPTR
# define CATCH_NULL nullptr
#else
# define CATCH_NULL NULL
#endif
// override support
#ifdef CATCH_CONFIG_CPP11_OVERRIDE
# define CATCH_OVERRIDE override
#else
# define CATCH_OVERRIDE
#endif
// unique_ptr support
#ifdef CATCH_CONFIG_CPP11_UNIQUE_PTR
# define CATCH_AUTO_PTR( T ) std::unique_ptr<T>
#else
# define CATCH_AUTO_PTR( T ) std::auto_ptr<T>
#endif
#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line
#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line )
#ifdef CATCH_CONFIG_COUNTER
# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ )
#else
# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ )
#endif
#define INTERNAL_CATCH_STRINGIFY2( expr ) #expr
#define INTERNAL_CATCH_STRINGIFY( expr ) INTERNAL_CATCH_STRINGIFY2( expr )
#include <sstream>
#include <stdexcept>
#include <algorithm>
namespace Catch {
struct IConfig;
struct CaseSensitive { enum Choice {
Yes,
No
}; };
class NonCopyable {
#ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS
NonCopyable( NonCopyable const& ) = delete;
NonCopyable( NonCopyable && ) = delete;
NonCopyable& operator = ( NonCopyable const& ) = delete;
NonCopyable& operator = ( NonCopyable && ) = delete;
#else
NonCopyable( NonCopyable const& info );
NonCopyable& operator = ( NonCopyable const& );
#endif
protected:
NonCopyable() {}
virtual ~NonCopyable();
};
class SafeBool {
public:
typedef void (SafeBool::*type)() const;
static type makeSafe( bool value ) {
return value ? &SafeBool::trueValue : 0;
}
private:
void trueValue() const {}
};
template<typename ContainerT>
inline void deleteAll( ContainerT& container ) {
typename ContainerT::const_iterator it = container.begin();
typename ContainerT::const_iterator itEnd = container.end();
for(; it != itEnd; ++it )
delete *it;
}
template<typename AssociativeContainerT>
inline void deleteAllValues( AssociativeContainerT& container ) {
typename AssociativeContainerT::const_iterator it = container.begin();
typename AssociativeContainerT::const_iterator itEnd = container.end();
for(; it != itEnd; ++it )
delete it->second;
}
bool startsWith( std::string const& s, std::string const& prefix );
bool endsWith( std::string const& s, std::string const& suffix );
bool contains( std::string const& s, std::string const& infix );
void toLowerInPlace( std::string& s );
std::string toLower( std::string const& s );
std::string trim( std::string const& str );
bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis );
struct pluralise {
pluralise( std::size_t count, std::string const& label );
friend std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser );
std::size_t m_count;
std::string m_label;
};
struct SourceLineInfo {
SourceLineInfo();
SourceLineInfo( char const* _file, std::size_t _line );
SourceLineInfo( SourceLineInfo const& other );
# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS
SourceLineInfo( SourceLineInfo && ) = default;
SourceLineInfo& operator = ( SourceLineInfo const& ) = default;
SourceLineInfo& operator = ( SourceLineInfo && ) = default;
# endif
bool empty() const;
bool operator == ( SourceLineInfo const& other ) const;
bool operator < ( SourceLineInfo const& other ) const;
std::string file;
std::size_t line;
};
std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info );
// This is just here to avoid compiler warnings with macro constants and boolean literals
inline bool alwaysTrue( std::size_t = 0 ) { return true; }
inline bool alwaysFalse( std::size_t = 0 ) { return false; }
void throwLogicError( std::string const& message, SourceLineInfo const& locationInfo );
void seedRng( IConfig const& config );
unsigned int rngSeed();
// Use this in variadic streaming macros to allow
// >> +StreamEndStop
// as well as
// >> stuff +StreamEndStop
struct StreamEndStop {
std::string operator+() {
return std::string();
}
};
template<typename T>
T const& operator + ( T const& value, StreamEndStop ) {
return value;
}
}
#define CATCH_INTERNAL_LINEINFO ::Catch::SourceLineInfo( __FILE__, static_cast<std::size_t>( __LINE__ ) )
#define CATCH_INTERNAL_ERROR( msg ) ::Catch::throwLogicError( msg, CATCH_INTERNAL_LINEINFO );
#include <ostream>
namespace Catch {
class NotImplementedException : public std::exception
{
public:
NotImplementedException( SourceLineInfo const& lineInfo );
NotImplementedException( NotImplementedException const& ) {}
virtual ~NotImplementedException() CATCH_NOEXCEPT {}
virtual const char* what() const CATCH_NOEXCEPT;
private:
std::string m_what;
SourceLineInfo m_lineInfo;
};
} // end namespace Catch
///////////////////////////////////////////////////////////////////////////////
#define CATCH_NOT_IMPLEMENTED throw Catch::NotImplementedException( CATCH_INTERNAL_LINEINFO )
// #included from: internal/catch_context.h
#define TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED
// #included from: catch_interfaces_generators.h
#define TWOBLUECUBES_CATCH_INTERFACES_GENERATORS_H_INCLUDED
#include <string>
namespace Catch {
struct IGeneratorInfo {
virtual ~IGeneratorInfo();
virtual bool moveNext() = 0;
virtual std::size_t getCurrentIndex() const = 0;
};
struct IGeneratorsForTest {
virtual ~IGeneratorsForTest();
virtual IGeneratorInfo& getGeneratorInfo( std::string const& fileInfo, std::size_t size ) = 0;
virtual bool moveNext() = 0;
};
IGeneratorsForTest* createGeneratorsForTest();
} // end namespace Catch
// #included from: catch_ptr.hpp
#define TWOBLUECUBES_CATCH_PTR_HPP_INCLUDED
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wpadded"
#endif
namespace Catch {
// An intrusive reference counting smart pointer.
// T must implement addRef() and release() methods
// typically implementing the IShared interface
template<typename T>
class Ptr {
public:
Ptr() : m_p( CATCH_NULL ){}
Ptr( T* p ) : m_p( p ){
if( m_p )
m_p->addRef();
}
Ptr( Ptr const& other ) : m_p( other.m_p ){
if( m_p )
m_p->addRef();
}
~Ptr(){
if( m_p )
m_p->release();
}
void reset() {
if( m_p )
m_p->release();
m_p = CATCH_NULL;
}
Ptr& operator = ( T* p ){
Ptr temp( p );
swap( temp );
return *this;
}
Ptr& operator = ( Ptr const& other ){
Ptr temp( other );
swap( temp );
return *this;
}
void swap( Ptr& other ) { std::swap( m_p, other.m_p ); }
T* get() const{ return m_p; }
T& operator*() const { return *m_p; }
T* operator->() const { return m_p; }
bool operator !() const { return m_p == CATCH_NULL; }
operator SafeBool::type() const { return SafeBool::makeSafe( m_p != CATCH_NULL ); }
private:
T* m_p;
};
struct IShared : NonCopyable {
virtual ~IShared();
virtual void addRef() const = 0;
virtual void release() const = 0;
};
template<typename T = IShared>
struct SharedImpl : T {
SharedImpl() : m_rc( 0 ){}
virtual void addRef() const {
++m_rc;
}
virtual void release() const {
if( --m_rc == 0 )
delete this;
}
mutable unsigned int m_rc;
};
} // end namespace Catch
#ifdef __clang__
#pragma clang diagnostic pop
#endif
#include <memory>
#include <vector>
#include <stdlib.h>
namespace Catch {
class TestCase;
class Stream;
struct IResultCapture;
struct IRunner;
struct IGeneratorsForTest;
struct IConfig;
struct IContext
{
virtual ~IContext();
virtual IResultCapture* getResultCapture() = 0;
virtual IRunner* getRunner() = 0;
virtual size_t getGeneratorIndex( std::string const& fileInfo, size_t totalSize ) = 0;
virtual bool advanceGeneratorsForCurrentTest() = 0;
virtual Ptr<IConfig const> getConfig() const = 0;
};
struct IMutableContext : IContext
{
virtual ~IMutableContext();
virtual void setResultCapture( IResultCapture* resultCapture ) = 0;
virtual void setRunner( IRunner* runner ) = 0;
virtual void setConfig( Ptr<IConfig const> const& config ) = 0;
};
IContext& getCurrentContext();
IMutableContext& getCurrentMutableContext();
void cleanUpContext();
Stream createStream( std::string const& streamName );
}
// #included from: internal/catch_test_registry.hpp
#define TWOBLUECUBES_CATCH_TEST_REGISTRY_HPP_INCLUDED
// #included from: catch_interfaces_testcase.h
#define TWOBLUECUBES_CATCH_INTERFACES_TESTCASE_H_INCLUDED
#include <vector>
namespace Catch {
class TestSpec;
struct ITestCase : IShared {
virtual void invoke () const = 0;
protected:
virtual ~ITestCase();
};
class TestCase;
struct IConfig;
struct ITestCaseRegistry {
virtual ~ITestCaseRegistry();
virtual std::vector<TestCase> const& getAllTests() const = 0;
virtual std::vector<TestCase> const& getAllTestsSorted( IConfig const& config ) const = 0;
};
bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config );
std::vector<TestCase> filterTests( std::vector<TestCase> const& testCases, TestSpec const& testSpec, IConfig const& config );
std::vector<TestCase> const& getAllTestCasesSorted( IConfig const& config );
}
namespace Catch {
template<typename C>
class MethodTestCase : public SharedImpl<ITestCase> {
public:
MethodTestCase( void (C::*method)() ) : m_method( method ) {}
virtual void invoke() const {
C obj;
(obj.*m_method)();
}
private:
virtual ~MethodTestCase() {}
void (C::*m_method)();
};
typedef void(*TestFunction)();
struct NameAndDesc {
NameAndDesc( const char* _name = "", const char* _description= "" )
: name( _name ), description( _description )
{}
const char* name;
const char* description;
};
void registerTestCase
( ITestCase* testCase,
char const* className,
NameAndDesc const& nameAndDesc,
SourceLineInfo const& lineInfo );
struct AutoReg {
AutoReg
( TestFunction function,
SourceLineInfo const& lineInfo,
NameAndDesc const& nameAndDesc );
template<typename C>
AutoReg
( void (C::*method)(),
char const* className,
NameAndDesc const& nameAndDesc,
SourceLineInfo const& lineInfo ) {
registerTestCase
( new MethodTestCase<C>( method ),
className,
nameAndDesc,
lineInfo );
}
~AutoReg();
private:
AutoReg( AutoReg const& );
void operator= ( AutoReg const& );
};
void registerTestCaseFunction
( TestFunction function,
SourceLineInfo const& lineInfo,
NameAndDesc const& nameAndDesc );
} // end namespace Catch
#ifdef CATCH_CONFIG_VARIADIC_MACROS
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \
static void TestName(); \
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); }\
static void TestName()
#define INTERNAL_CATCH_TESTCASE( ... ) \
INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__ )
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); }
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\
namespace{ \
struct TestName : ClassName{ \
void test(); \
}; \
Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestName::test, #ClassName, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); \
} \
void TestName::test()
#define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \
INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, __VA_ARGS__ )
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \
Catch::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) );
#else
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_TESTCASE2( TestName, Name, Desc ) \
static void TestName(); \
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &TestName, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); }\
static void TestName()
#define INTERNAL_CATCH_TESTCASE( Name, Desc ) \
INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), Name, Desc )
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, Name, Desc ) \
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( Name, Desc ), CATCH_INTERNAL_LINEINFO ); }
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_TEST_CASE_METHOD2( TestCaseName, ClassName, TestName, Desc )\
namespace{ \
struct TestCaseName : ClassName{ \
void test(); \
}; \
Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &TestCaseName::test, #ClassName, Catch::NameAndDesc( TestName, Desc ), CATCH_INTERNAL_LINEINFO ); \
} \
void TestCaseName::test()
#define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, TestName, Desc )\
INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, TestName, Desc )
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_REGISTER_TESTCASE( Function, Name, Desc ) \
Catch::AutoReg( Function, CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) );
#endif
// #included from: internal/catch_capture.hpp
#define TWOBLUECUBES_CATCH_CAPTURE_HPP_INCLUDED
// #included from: catch_result_builder.h
#define TWOBLUECUBES_CATCH_RESULT_BUILDER_H_INCLUDED
// #included from: catch_result_type.h
#define TWOBLUECUBES_CATCH_RESULT_TYPE_H_INCLUDED
namespace Catch {
// ResultWas::OfType enum
struct ResultWas { enum OfType {
Unknown = -1,
Ok = 0,
Info = 1,
Warning = 2,
FailureBit = 0x10,
ExpressionFailed = FailureBit | 1,
ExplicitFailure = FailureBit | 2,
Exception = 0x100 | FailureBit,
ThrewException = Exception | 1,
DidntThrowException = Exception | 2,
FatalErrorCondition = 0x200 | FailureBit
}; };
inline bool isOk( ResultWas::OfType resultType ) {
return ( resultType & ResultWas::FailureBit ) == 0;
}
inline bool isJustInfo( int flags ) {
return flags == ResultWas::Info;
}
// ResultDisposition::Flags enum
struct ResultDisposition { enum Flags {
Normal = 0x01,
ContinueOnFailure = 0x02, // Failures fail test, but execution continues
FalseTest = 0x04, // Prefix expression with !
SuppressFail = 0x08 // Failures are reported but do not fail the test
}; };
inline ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs ) {
return static_cast<ResultDisposition::Flags>( static_cast<int>( lhs ) | static_cast<int>( rhs ) );
}
inline bool shouldContinueOnFailure( int flags ) { return ( flags & ResultDisposition::ContinueOnFailure ) != 0; }
inline bool isFalseTest( int flags ) { return ( flags & ResultDisposition::FalseTest ) != 0; }
inline bool shouldSuppressFailure( int flags ) { return ( flags & ResultDisposition::SuppressFail ) != 0; }
} // end namespace Catch
// #included from: catch_assertionresult.h
#define TWOBLUECUBES_CATCH_ASSERTIONRESULT_H_INCLUDED
#include <string>
namespace Catch {
struct AssertionInfo
{
AssertionInfo() {}
AssertionInfo( std::string const& _macroName,
SourceLineInfo const& _lineInfo,
std::string const& _capturedExpression,
ResultDisposition::Flags _resultDisposition );
std::string macroName;
SourceLineInfo lineInfo;
std::string capturedExpression;
ResultDisposition::Flags resultDisposition;
};
struct AssertionResultData
{
AssertionResultData() : resultType( ResultWas::Unknown ) {}
std::string reconstructedExpression;
std::string message;
ResultWas::OfType resultType;
};
class AssertionResult {
public:
AssertionResult();
AssertionResult( AssertionInfo const& info, AssertionResultData const& data );
~AssertionResult();
# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS
AssertionResult( AssertionResult const& ) = default;
AssertionResult( AssertionResult && ) = default;
AssertionResult& operator = ( AssertionResult const& ) = default;
AssertionResult& operator = ( AssertionResult && ) = default;
# endif
bool isOk() const;
bool succeeded() const;
ResultWas::OfType getResultType() const;
bool hasExpression() const;
bool hasMessage() const;
std::string getExpression() const;
std::string getExpressionInMacro() const;
bool hasExpandedExpression() const;
std::string getExpandedExpression() const;
std::string getMessage() const;
SourceLineInfo getSourceInfo() const;
std::string getTestMacroName() const;
protected:
AssertionInfo m_info;
AssertionResultData m_resultData;
};
} // end namespace Catch
// #included from: catch_matchers.hpp
#define TWOBLUECUBES_CATCH_MATCHERS_HPP_INCLUDED
namespace Catch {
namespace Matchers {
namespace Impl {
namespace Generic {
template<typename ExpressionT> class AllOf;
template<typename ExpressionT> class AnyOf;
template<typename ExpressionT> class Not;
}
template<typename ExpressionT>
struct Matcher : SharedImpl<IShared>
{
typedef ExpressionT ExpressionType;
virtual ~Matcher() {}
virtual Ptr<Matcher> clone() const = 0;
virtual bool match( ExpressionT const& expr ) const = 0;
virtual std::string toString() const = 0;
Generic::AllOf<ExpressionT> operator && ( Matcher<ExpressionT> const& other ) const;
Generic::AnyOf<ExpressionT> operator || ( Matcher<ExpressionT> const& other ) const;
Generic::Not<ExpressionT> operator ! () const;
};
template<typename DerivedT, typename ExpressionT>
struct MatcherImpl : Matcher<ExpressionT> {
virtual Ptr<Matcher<ExpressionT> > clone() const {
return Ptr<Matcher<ExpressionT> >( new DerivedT( static_cast<DerivedT const&>( *this ) ) );
}
};
namespace Generic {
template<typename ExpressionT>
class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> {
public:
explicit Not( Matcher<ExpressionT> const& matcher ) : m_matcher(matcher.clone()) {}
Not( Not const& other ) : m_matcher( other.m_matcher ) {}
virtual bool match( ExpressionT const& expr ) const CATCH_OVERRIDE {
return !m_matcher->match( expr );
}
virtual std::string toString() const CATCH_OVERRIDE {
return "not " + m_matcher->toString();
}
private:
Ptr< Matcher<ExpressionT> > m_matcher;
};
template<typename ExpressionT>
class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> {
public:
AllOf() {}
AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
AllOf& add( Matcher<ExpressionT> const& matcher ) {
m_matchers.push_back( matcher.clone() );
return *this;
}
virtual bool match( ExpressionT const& expr ) const
{
for( std::size_t i = 0; i < m_matchers.size(); ++i )
if( !m_matchers[i]->match( expr ) )
return false;
return true;
}
virtual std::string toString() const {
std::ostringstream oss;
oss << "( ";
for( std::size_t i = 0; i < m_matchers.size(); ++i ) {
if( i != 0 )
oss << " and ";
oss << m_matchers[i]->toString();
}
oss << " )";
return oss.str();
}
AllOf operator && ( Matcher<ExpressionT> const& other ) const {
AllOf allOfExpr( *this );
allOfExpr.add( other );
return allOfExpr;
}
private:
std::vector<Ptr<Matcher<ExpressionT> > > m_matchers;
};
template<typename ExpressionT>
class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> {
public:
AnyOf() {}
AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
AnyOf& add( Matcher<ExpressionT> const& matcher ) {
m_matchers.push_back( matcher.clone() );
return *this;
}
virtual bool match( ExpressionT const& expr ) const
{
for( std::size_t i = 0; i < m_matchers.size(); ++i )
if( m_matchers[i]->match( expr ) )
return true;
return false;
}
virtual std::string toString() const {
std::ostringstream oss;
oss << "( ";
for( std::size_t i = 0; i < m_matchers.size(); ++i ) {
if( i != 0 )
oss << " or ";
oss << m_matchers[i]->toString();
}
oss << " )";
return oss.str();
}
AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
AnyOf anyOfExpr( *this );
anyOfExpr.add( other );
return anyOfExpr;
}
private:
std::vector<Ptr<Matcher<ExpressionT> > > m_matchers;
};
} // namespace Generic
template<typename ExpressionT>
Generic::AllOf<ExpressionT> Matcher<ExpressionT>::operator && ( Matcher<ExpressionT> const& other ) const {
Generic::AllOf<ExpressionT> allOfExpr;
allOfExpr.add( *this );
allOfExpr.add( other );
return allOfExpr;
}
template<typename ExpressionT>
Generic::AnyOf<ExpressionT> Matcher<ExpressionT>::operator || ( Matcher<ExpressionT> const& other ) const {
Generic::AnyOf<ExpressionT> anyOfExpr;
anyOfExpr.add( *this );
anyOfExpr.add( other );
return anyOfExpr;
}
template<typename ExpressionT>
Generic::Not<ExpressionT> Matcher<ExpressionT>::operator ! () const {
return Generic::Not<ExpressionT>( *this );
}
namespace StdString {
inline std::string makeString( std::string const& str ) { return str; }
inline std::string makeString( const char* str ) { return str ? std::string( str ) : std::string(); }
struct CasedString
{
CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity )
: m_caseSensitivity( caseSensitivity ),
m_str( adjustString( str ) )
{}
std::string adjustString( std::string const& str ) const {
return m_caseSensitivity == CaseSensitive::No
? toLower( str )
: str;
}
std::string toStringSuffix() const
{
return m_caseSensitivity == CaseSensitive::No
? " (case insensitive)"
: "";
}
CaseSensitive::Choice m_caseSensitivity;
std::string m_str;
};
struct Equals : MatcherImpl<Equals, std::string> {
Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes )
: m_data( str, caseSensitivity )
{}
Equals( Equals const& other ) : m_data( other.m_data ){}
virtual ~Equals();
virtual bool match( std::string const& expr ) const {
return m_data.m_str == m_data.adjustString( expr );;
}
virtual std::string toString() const {
return "equals: \"" + m_data.m_str + "\"" + m_data.toStringSuffix();
}
CasedString m_data;
};
struct Contains : MatcherImpl<Contains, std::string> {
Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes )
: m_data( substr, caseSensitivity ){}
Contains( Contains const& other ) : m_data( other.m_data ){}
virtual ~Contains();
virtual bool match( std::string const& expr ) const {
return m_data.adjustString( expr ).find( m_data.m_str ) != std::string::npos;
}
virtual std::string toString() const {
return "contains: \"" + m_data.m_str + "\"" + m_data.toStringSuffix();
}
CasedString m_data;
};
struct StartsWith : MatcherImpl<StartsWith, std::string> {
StartsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes )
: m_data( substr, caseSensitivity ){}
StartsWith( StartsWith const& other ) : m_data( other.m_data ){}
virtual ~StartsWith();
virtual bool match( std::string const& expr ) const {
return startsWith( m_data.adjustString( expr ), m_data.m_str );
}
virtual std::string toString() const {
return "starts with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix();
}
CasedString m_data;
};
struct EndsWith : MatcherImpl<EndsWith, std::string> {
EndsWith( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes )
: m_data( substr, caseSensitivity ){}
EndsWith( EndsWith const& other ) : m_data( other.m_data ){}
virtual ~EndsWith();
virtual bool match( std::string const& expr ) const {
return endsWith( m_data.adjustString( expr ), m_data.m_str );
}
virtual std::string toString() const {
return "ends with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix();
}
CasedString m_data;
};
} // namespace StdString
} // namespace Impl
// The following functions create the actual matcher objects.
// This allows the types to be inferred
template<typename ExpressionT>
inline Impl::Generic::Not<ExpressionT> Not( Impl::Matcher<ExpressionT> const& m ) {
return Impl::Generic::Not<ExpressionT>( m );
}
template<typename ExpressionT>
inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1,
Impl::Matcher<ExpressionT> const& m2 ) {
return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 );
}
template<typename ExpressionT>
inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<ExpressionT> const& m1,
Impl::Matcher<ExpressionT> const& m2,
Impl::Matcher<ExpressionT> const& m3 ) {
return Impl::Generic::AllOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 );
}
template<typename ExpressionT>
inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1,
Impl::Matcher<ExpressionT> const& m2 ) {
return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 );
}
template<typename ExpressionT>
inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<ExpressionT> const& m1,
Impl::Matcher<ExpressionT> const& m2,
Impl::Matcher<ExpressionT> const& m3 ) {
return Impl::Generic::AnyOf<ExpressionT>().add( m1 ).add( m2 ).add( m3 );
}
inline Impl::StdString::Equals Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) {
return Impl::StdString::Equals( str, caseSensitivity );
}
inline Impl::StdString::Equals Equals( const char* str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) {
return Impl::StdString::Equals( Impl::StdString::makeString( str ), caseSensitivity );
}
inline Impl::StdString::Contains Contains( std::string const& substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) {
return Impl::StdString::Contains( substr, caseSensitivity );
}
inline Impl::StdString::Contains Contains( const char* substr, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes ) {
return Impl::StdString::Contains( Impl::StdString::makeString( substr ), caseSensitivity );
}
inline Impl::StdString::StartsWith StartsWith( std::string const& substr ) {
return Impl::StdString::StartsWith( substr );
}
inline Impl::StdString::StartsWith StartsWith( const char* substr ) {
return Impl::StdString::StartsWith( Impl::StdString::makeString( substr ) );
}
inline Impl::StdString::EndsWith EndsWith( std::string const& substr ) {
return Impl::StdString::EndsWith( substr );
}
inline Impl::StdString::EndsWith EndsWith( const char* substr ) {
return Impl::StdString::EndsWith( Impl::StdString::makeString( substr ) );
}
} // namespace Matchers
using namespace Matchers;
} // namespace Catch
namespace Catch {
struct TestFailureException{};
template<typename T> class ExpressionLhs;
struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison;
struct CopyableStream {
CopyableStream() {}
CopyableStream( CopyableStream const& other ) {
oss << other.oss.str();
}
CopyableStream& operator=( CopyableStream const& other ) {
oss.str("");
oss << other.oss.str();
return *this;
}
std::ostringstream oss;
};
class ResultBuilder {
public:
ResultBuilder( char const* macroName,
SourceLineInfo const& lineInfo,
char const* capturedExpression,
ResultDisposition::Flags resultDisposition,
char const* secondArg = "" );
template<typename T>
ExpressionLhs<T const&> operator <= ( T const& operand );
ExpressionLhs<bool> operator <= ( bool value );
template<typename T>
ResultBuilder& operator << ( T const& value ) {
m_stream.oss << value;
return *this;
}
template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && ( RhsT const& );
template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || ( RhsT const& );
ResultBuilder& setResultType( ResultWas::OfType result );
ResultBuilder& setResultType( bool result );
ResultBuilder& setLhs( std::string const& lhs );
ResultBuilder& setRhs( std::string const& rhs );
ResultBuilder& setOp( std::string const& op );
void endExpression();
std::string reconstructExpression() const;
AssertionResult build() const;
void useActiveException( ResultDisposition::Flags resultDisposition = ResultDisposition::Normal );
void captureResult( ResultWas::OfType resultType );
void captureExpression();
void captureExpectedException( std::string const& expectedMessage );
void captureExpectedException( Matchers::Impl::Matcher<std::string> const& matcher );
void handleResult( AssertionResult const& result );
void react();
bool shouldDebugBreak() const;
bool allowThrows() const;
private:
AssertionInfo m_assertionInfo;
AssertionResultData m_data;
struct ExprComponents {
ExprComponents() : testFalse( false ) {}
bool testFalse;
std::string lhs, rhs, op;
} m_exprComponents;
CopyableStream m_stream;
bool m_shouldDebugBreak;
bool m_shouldThrow;
};
} // namespace Catch
// Include after due to circular dependency:
// #included from: catch_expression_lhs.hpp
#define TWOBLUECUBES_CATCH_EXPRESSION_LHS_HPP_INCLUDED
// #included from: catch_evaluate.hpp
#define TWOBLUECUBES_CATCH_EVALUATE_HPP_INCLUDED
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable:4389) // '==' : signed/unsigned mismatch
#endif
#include <cstddef>
namespace Catch {
namespace Internal {
enum Operator {
IsEqualTo,
IsNotEqualTo,
IsLessThan,
IsGreaterThan,
IsLessThanOrEqualTo,
IsGreaterThanOrEqualTo
};
template<Operator Op> struct OperatorTraits { static const char* getName(){ return "*error*"; } };
template<> struct OperatorTraits<IsEqualTo> { static const char* getName(){ return "=="; } };
template<> struct OperatorTraits<IsNotEqualTo> { static const char* getName(){ return "!="; } };
template<> struct OperatorTraits<IsLessThan> { static const char* getName(){ return "<"; } };
template<> struct OperatorTraits<IsGreaterThan> { static const char* getName(){ return ">"; } };
template<> struct OperatorTraits<IsLessThanOrEqualTo> { static const char* getName(){ return "<="; } };
template<> struct OperatorTraits<IsGreaterThanOrEqualTo>{ static const char* getName(){ return ">="; } };
template<typename T>
inline T& opCast(T const& t) { return const_cast<T&>(t); }
// nullptr_t support based on pull request #154 from Konstantin Baumann
#ifdef CATCH_CONFIG_CPP11_NULLPTR
inline std::nullptr_t opCast(std::nullptr_t) { return nullptr; }
#endif // CATCH_CONFIG_CPP11_NULLPTR
// So the compare overloads can be operator agnostic we convey the operator as a template
// enum, which is used to specialise an Evaluator for doing the comparison.
template<typename T1, typename T2, Operator Op>
class Evaluator{};
template<typename T1, typename T2>
struct Evaluator<T1, T2, IsEqualTo> {
static bool evaluate( T1 const& lhs, T2 const& rhs) {
return bool( opCast( lhs ) == opCast( rhs ) );
}
};
template<typename T1, typename T2>
struct Evaluator<T1, T2, IsNotEqualTo> {
static bool evaluate( T1 const& lhs, T2 const& rhs ) {
return bool( opCast( lhs ) != opCast( rhs ) );
}
};
template<typename T1, typename T2>
struct Evaluator<T1, T2, IsLessThan> {
static bool evaluate( T1 const& lhs, T2 const& rhs ) {
return bool( opCast( lhs ) < opCast( rhs ) );
}
};
template<typename T1, typename T2>
struct Evaluator<T1, T2, IsGreaterThan> {
static bool evaluate( T1 const& lhs, T2 const& rhs ) {
return bool( opCast( lhs ) > opCast( rhs ) );
}
};
template<typename T1, typename T2>
struct Evaluator<T1, T2, IsGreaterThanOrEqualTo> {
static bool evaluate( T1 const& lhs, T2 const& rhs ) {
return bool( opCast( lhs ) >= opCast( rhs ) );
}
};
template<typename T1, typename T2>
struct Evaluator<T1, T2, IsLessThanOrEqualTo> {
static bool evaluate( T1 const& lhs, T2 const& rhs ) {
return bool( opCast( lhs ) <= opCast( rhs ) );
}
};
template<Operator Op, typename T1, typename T2>
bool applyEvaluator( T1 const& lhs, T2 const& rhs ) {
return Evaluator<T1, T2, Op>::evaluate( lhs, rhs );
}
// This level of indirection allows us to specialise for integer types
// to avoid signed/ unsigned warnings
// "base" overload
template<Operator Op, typename T1, typename T2>
bool compare( T1 const& lhs, T2 const& rhs ) {
return Evaluator<T1, T2, Op>::evaluate( lhs, rhs );
}
// unsigned X to int
template<Operator Op> bool compare( unsigned int lhs, int rhs ) {
return applyEvaluator<Op>( lhs, static_cast<unsigned int>( rhs ) );
}
template<Operator Op> bool compare( unsigned long lhs, int rhs ) {
return applyEvaluator<Op>( lhs, static_cast<unsigned int>( rhs ) );
}
template<Operator Op> bool compare( unsigned char lhs, int rhs ) {
return applyEvaluator<Op>( lhs, static_cast<unsigned int>( rhs ) );
}
// unsigned X to long
template<Operator Op> bool compare( unsigned int lhs, long rhs ) {
return applyEvaluator<Op>( lhs, static_cast<unsigned long>( rhs ) );
}
template<Operator Op> bool compare( unsigned long lhs, long rhs ) {
return applyEvaluator<Op>( lhs, static_cast<unsigned long>( rhs ) );
}
template<Operator Op> bool compare( unsigned char lhs, long rhs ) {
return applyEvaluator<Op>( lhs, static_cast<unsigned long>( rhs ) );
}
// int to unsigned X
template<Operator Op> bool compare( int lhs, unsigned int rhs ) {
return applyEvaluator<Op>( static_cast<unsigned int>( lhs ), rhs );
}
template<Operator Op> bool compare( int lhs, unsigned long rhs ) {
return applyEvaluator<Op>( static_cast<unsigned int>( lhs ), rhs );
}
template<Operator Op> bool compare( int lhs, unsigned char rhs ) {
return applyEvaluator<Op>( static_cast<unsigned int>( lhs ), rhs );
}
// long to unsigned X
template<Operator Op> bool compare( long lhs, unsigned int rhs ) {
return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs );
}
template<Operator Op> bool compare( long lhs, unsigned long rhs ) {
return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs );
}
template<Operator Op> bool compare( long lhs, unsigned char rhs ) {
return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs );
}
// pointer to long (when comparing against NULL)
template<Operator Op, typename T> bool compare( long lhs, T* rhs ) {
return Evaluator<T*, T*, Op>::evaluate( reinterpret_cast<T*>( lhs ), rhs );
}
template<Operator Op, typename T> bool compare( T* lhs, long rhs ) {
return Evaluator<T*, T*, Op>::evaluate( lhs, reinterpret_cast<T*>( rhs ) );
}
// pointer to int (when comparing against NULL)
template<Operator Op, typename T> bool compare( int lhs, T* rhs ) {
return Evaluator<T*, T*, Op>::evaluate( reinterpret_cast<T*>( lhs ), rhs );
}
template<Operator Op, typename T> bool compare( T* lhs, int rhs ) {
return Evaluator<T*, T*, Op>::evaluate( lhs, reinterpret_cast<T*>( rhs ) );
}
#ifdef CATCH_CONFIG_CPP11_LONG_LONG
// long long to unsigned X
template<Operator Op> bool compare( long long lhs, unsigned int rhs ) {
return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs );
}
template<Operator Op> bool compare( long long lhs, unsigned long rhs ) {
return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs );
}
template<Operator Op> bool compare( long long lhs, unsigned long long rhs ) {
return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs );
}
template<Operator Op> bool compare( long long lhs, unsigned char rhs ) {
return applyEvaluator<Op>( static_cast<unsigned long>( lhs ), rhs );
}
// unsigned long long to X
template<Operator Op> bool compare( unsigned long long lhs, int rhs ) {
return applyEvaluator<Op>( static_cast<long>( lhs ), rhs );
}
template<Operator Op> bool compare( unsigned long long lhs, long rhs ) {
return applyEvaluator<Op>( static_cast<long>( lhs ), rhs );
}
template<Operator Op> bool compare( unsigned long long lhs, long long rhs ) {
return applyEvaluator<Op>( static_cast<long>( lhs ), rhs );
}
template<Operator Op> bool compare( unsigned long long lhs, char rhs ) {
return applyEvaluator<Op>( static_cast<long>( lhs ), rhs );
}
// pointer to long long (when comparing against NULL)
template<Operator Op, typename T> bool compare( long long lhs, T* rhs ) {
return Evaluator<T*, T*, Op>::evaluate( reinterpret_cast<T*>( lhs ), rhs );
}
template<Operator Op, typename T> bool compare( T* lhs, long long rhs ) {
return Evaluator<T*, T*, Op>::evaluate( lhs, reinterpret_cast<T*>( rhs ) );
}
#endif // CATCH_CONFIG_CPP11_LONG_LONG
#ifdef CATCH_CONFIG_CPP11_NULLPTR
// pointer to nullptr_t (when comparing against nullptr)
template<Operator Op, typename T> bool compare( std::nullptr_t, T* rhs ) {
return Evaluator<T*, T*, Op>::evaluate( nullptr, rhs );
}
template<Operator Op, typename T> bool compare( T* lhs, std::nullptr_t ) {
return Evaluator<T*, T*, Op>::evaluate( lhs, nullptr );
}
#endif // CATCH_CONFIG_CPP11_NULLPTR
} // end of namespace Internal
} // end of namespace Catch
#ifdef _MSC_VER
#pragma warning(pop)
#endif
// #included from: catch_tostring.h
#define TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED
#include <sstream>
#include <iomanip>
#include <limits>
#include <vector>
#include <cstddef>
#ifdef __OBJC__
// #included from: catch_objc_arc.hpp
#define TWOBLUECUBES_CATCH_OBJC_ARC_HPP_INCLUDED
#import <Foundation/Foundation.h>
#ifdef __has_feature
#define CATCH_ARC_ENABLED __has_feature(objc_arc)
#else
#define CATCH_ARC_ENABLED 0
#endif
void arcSafeRelease( NSObject* obj );
id performOptionalSelector( id obj, SEL sel );
#if !CATCH_ARC_ENABLED
inline void arcSafeRelease( NSObject* obj ) {
[obj release];
}
inline id performOptionalSelector( id obj, SEL sel ) {
if( [obj respondsToSelector: sel] )
return [obj performSelector: sel];
return nil;
}
#define CATCH_UNSAFE_UNRETAINED
#define CATCH_ARC_STRONG
#else
inline void arcSafeRelease( NSObject* ){}
inline id performOptionalSelector( id obj, SEL sel ) {
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
#endif
if( [obj respondsToSelector: sel] )
return [obj performSelector: sel];
#ifdef __clang__
#pragma clang diagnostic pop
#endif
return nil;
}
#define CATCH_UNSAFE_UNRETAINED __unsafe_unretained
#define CATCH_ARC_STRONG __strong
#endif
#endif
#ifdef CATCH_CONFIG_CPP11_TUPLE
#include <tuple>
#endif
#ifdef CATCH_CONFIG_CPP11_IS_ENUM
#include <type_traits>
#endif
namespace Catch {
// Why we're here.
template<typename T>
std::string toString( T const& value );
// Built in overloads
std::string toString( std::string const& value );
std::string toString( std::wstring const& value );
std::string toString( const char* const value );
std::string toString( char* const value );
std::string toString( const wchar_t* const value );
std::string toString( wchar_t* const value );
std::string toString( int value );
std::string toString( unsigned long value );
std::string toString( unsigned int value );
std::string toString( const double value );
std::string toString( const float value );
std::string toString( bool value );
std::string toString( char value );
std::string toString( signed char value );
std::string toString( unsigned char value );
#ifdef CATCH_CONFIG_CPP11_LONG_LONG
std::string toString( long long value );
std::string toString( unsigned long long value );
#endif
#ifdef CATCH_CONFIG_CPP11_NULLPTR
std::string toString( std::nullptr_t );
#endif
#ifdef __OBJC__
std::string toString( NSString const * const& nsstring );
std::string toString( NSString * CATCH_ARC_STRONG const& nsstring );
std::string toString( NSObject* const& nsObject );
#endif
namespace Detail {
extern const std::string unprintableString;
struct BorgType {
template<typename T> BorgType( T const& );
};
struct TrueType { char sizer[1]; };
struct FalseType { char sizer[2]; };
TrueType& testStreamable( std::ostream& );
FalseType testStreamable( FalseType );
FalseType operator<<( std::ostream const&, BorgType const& );
template<typename T>
struct IsStreamInsertable {
static std::ostream &s;
static T const&t;
enum { value = sizeof( testStreamable(s << t) ) == sizeof( TrueType ) };
};
#if defined(CATCH_CONFIG_CPP11_IS_ENUM)
template<typename T,
bool IsEnum = std::is_enum<T>::value
>
struct EnumStringMaker
{
static std::string convert( T const& ) { return unprintableString; }
};
template<typename T>
struct EnumStringMaker<T,true>
{
static std::string convert( T const& v )
{
return ::Catch::toString(
static_cast<typename std::underlying_type<T>::type>(v)
);
}
};
#endif
template<bool C>
struct StringMakerBase {
#if defined(CATCH_CONFIG_CPP11_IS_ENUM)
template<typename T>
static std::string convert( T const& v )
{
return EnumStringMaker<T>::convert( v );
}
#else
template<typename T>
static std::string convert( T const& ) { return unprintableString; }
#endif
};
template<>
struct StringMakerBase<true> {
template<typename T>
static std::string convert( T const& _value ) {
std::ostringstream oss;
oss << _value;
return oss.str();
}
};
std::string rawMemoryToString( const void *object, std::size_t size );
template<typename T>
inline std::string rawMemoryToString( const T& object ) {
return rawMemoryToString( &object, sizeof(object) );
}
} // end namespace Detail
template<typename T>
struct StringMaker :
Detail::StringMakerBase<Detail::IsStreamInsertable<T>::value> {};
template<typename T>
struct StringMaker<T*> {
template<typename U>
static std::string convert( U* p ) {
if( !p )
return "NULL";
else
return Detail::rawMemoryToString( p );
}
};
template<typename R, typename C>
struct StringMaker<R C::*> {
static std::string convert( R C::* p ) {
if( !p )
return "NULL";
else
return Detail::rawMemoryToString( p );
}
};
namespace Detail {
template<typename InputIterator>
std::string rangeToString( InputIterator first, InputIterator last );
}
//template<typename T, typename Allocator>
//struct StringMaker<std::vector<T, Allocator> > {
// static std::string convert( std::vector<T,Allocator> const& v ) {
// return Detail::rangeToString( v.begin(), v.end() );
// }
//};
template<typename T, typename Allocator>
std::string toString( std::vector<T,Allocator> const& v ) {
return Detail::rangeToString( v.begin(), v.end() );
}
#ifdef CATCH_CONFIG_CPP11_TUPLE
// toString for tuples
namespace TupleDetail {
template<
typename Tuple,
std::size_t N = 0,
bool = (N < std::tuple_size<Tuple>::value)
>
struct ElementPrinter {
static void print( const Tuple& tuple, std::ostream& os )
{
os << ( N ? ", " : " " )
<< Catch::toString(std::get<N>(tuple));
ElementPrinter<Tuple,N+1>::print(tuple,os);
}
};
template<
typename Tuple,
std::size_t N
>
struct ElementPrinter<Tuple,N,false> {
static void print( const Tuple&, std::ostream& ) {}
};
}
template<typename ...Types>
struct StringMaker<std::tuple<Types...>> {
static std::string convert( const std::tuple<Types...>& tuple )
{
std::ostringstream os;
os << '{';
TupleDetail::ElementPrinter<std::tuple<Types...>>::print( tuple, os );
os << " }";
return os.str();
}
};
#endif // CATCH_CONFIG_CPP11_TUPLE
namespace Detail {
template<typename T>
std::string makeString( T const& value ) {
return StringMaker<T>::convert( value );
}
} // end namespace Detail
/// \brief converts any type to a string
///
/// The default template forwards on to ostringstream - except when an
/// ostringstream overload does not exist - in which case it attempts to detect
/// that and writes {?}.
/// Overload (not specialise) this template for custom typs that you don't want
/// to provide an ostream overload for.
template<typename T>
std::string toString( T const& value ) {
return StringMaker<T>::convert( value );
}
namespace Detail {
template<typename InputIterator>
std::string rangeToString( InputIterator first, InputIterator last ) {
std::ostringstream oss;
oss << "{ ";
if( first != last ) {
oss << Catch::toString( *first );
for( ++first ; first != last ; ++first )
oss << ", " << Catch::toString( *first );
}
oss << " }";
return oss.str();
}
}
} // end namespace Catch
namespace Catch {
// Wraps the LHS of an expression and captures the operator and RHS (if any) -
// wrapping them all in a ResultBuilder object
template<typename T>
class ExpressionLhs {
ExpressionLhs& operator = ( ExpressionLhs const& );
# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS
ExpressionLhs& operator = ( ExpressionLhs && ) = delete;
# endif
public:
ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {}
# ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS
ExpressionLhs( ExpressionLhs const& ) = default;
ExpressionLhs( ExpressionLhs && ) = default;
# endif
template<typename RhsT>
ResultBuilder& operator == ( RhsT const& rhs ) {
return captureExpression<Internal::IsEqualTo>( rhs );
}
template<typename RhsT>
ResultBuilder& operator != ( RhsT const& rhs ) {
return captureExpression<Internal::IsNotEqualTo>( rhs );
}
template<typename RhsT>
ResultBuilder& operator < ( RhsT const& rhs ) {
return captureExpression<Internal::IsLessThan>( rhs );
}
template<typename RhsT>
ResultBuilder& operator > ( RhsT const& rhs ) {
return captureExpression<Internal::IsGreaterThan>( rhs );
}
template<typename RhsT>
ResultBuilder& operator <= ( RhsT const& rhs ) {
return captureExpression<Internal::IsLessThanOrEqualTo>( rhs );
}
template<typename RhsT>
ResultBuilder& operator >= ( RhsT const& rhs ) {
return captureExpression<Internal::IsGreaterThanOrEqualTo>( rhs );
}
ResultBuilder& operator == ( bool rhs ) {
return captureExpression<Internal::IsEqualTo>( rhs );
}
ResultBuilder& operator != ( bool rhs ) {
return captureExpression<Internal::IsNotEqualTo>( rhs );
}
void endExpression() {
bool value = m_lhs ? true : false;
m_rb
.setLhs( Catch::toString( value ) )
.setResultType( value )
.endExpression();
}
// Only simple binary expressions are allowed on the LHS.
// If more complex compositions are required then place the sub expression in parentheses
template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator + ( RhsT const& );
template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator - ( RhsT const& );
template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator / ( RhsT const& );
template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator * ( RhsT const& );
template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && ( RhsT const& );
template<typename RhsT> STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || ( RhsT const& );
private:
template<Internal::Operator Op, typename RhsT>
ResultBuilder& captureExpression( RhsT const& rhs ) {
return m_rb
.setResultType( Internal::compare<Op>( m_lhs, rhs ) )
.setLhs( Catch::toString( m_lhs ) )
.setRhs( Catch::toString( rhs ) )
.setOp( Internal::OperatorTraits<Op>::getName() );
}
private:
ResultBuilder& m_rb;
T m_lhs;
};
} // end namespace Catch
namespace Catch {
template<typename T>
inline ExpressionLhs<T const&> ResultBuilder::operator <= ( T const& operand ) {
return ExpressionLhs<T const&>( *this, operand );
}
inline ExpressionLhs<bool> ResultBuilder::operator <= ( bool value ) {
return ExpressionLhs<bool>( *this, value );
}
} // namespace Catch
// #included from: catch_message.h
#define TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED
#include <string>
namespace Catch {
struct MessageInfo {
MessageInfo( std::string const& _macroName,
SourceLineInfo const& _lineInfo,
ResultWas::OfType _type );
std::string macroName;
SourceLineInfo lineInfo;
ResultWas::OfType type;
std::string message;
unsigned int sequence;
bool operator == ( MessageInfo const& other ) const {
return sequence == other.sequence;
}
bool operator < ( MessageInfo const& other ) const {
return sequence < other.sequence;
}
private:
static unsigned int globalCount;
};
struct MessageBuilder {
MessageBuilder( std::string const& macroName,
SourceLineInfo const& lineInfo,
ResultWas::OfType type )
: m_info( macroName, lineInfo, type )
{}
template<typename T>
MessageBuilder& operator << ( T const& value ) {
m_stream << value;
return *this;
}
MessageInfo m_info;
std::ostringstream m_stream;
};
class ScopedMessage {
public:
ScopedMessage( MessageBuilder const& builder );
ScopedMessage( ScopedMessage const& other );
~ScopedMessage();
MessageInfo m_info;
};
} // end namespace Catch
// #included from: catch_interfaces_capture.h
#define TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED
#include <string>
namespace Catch {
class TestCase;
class AssertionResult;
struct AssertionInfo;
struct SectionInfo;
struct SectionEndInfo;
struct MessageInfo;
class ScopedMessageBuilder;
struct Counts;
struct IResultCapture {
virtual ~IResultCapture();
virtual void assertionEnded( AssertionResult const& result ) = 0;
virtual bool sectionStarted( SectionInfo const& sectionInfo,
Counts& assertions ) = 0;
virtual void sectionEnded( SectionEndInfo const& endInfo ) = 0;
virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) = 0;
virtual void pushScopedMessage( MessageInfo const& message ) = 0;
virtual void popScopedMessage( MessageInfo const& message ) = 0;
virtual std::string getCurrentTestName() const = 0;
virtual const AssertionResult* getLastResult() const = 0;
virtual void handleFatalErrorCondition( std::string const& message ) = 0;
};
IResultCapture& getResultCapture();
}
// #included from: catch_debugger.h
#define TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED
// #included from: catch_platform.h
#define TWOBLUECUBES_CATCH_PLATFORM_H_INCLUDED
#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED)
# define CATCH_PLATFORM_MAC
#elif defined(__IPHONE_OS_VERSION_MIN_REQUIRED)
# define CATCH_PLATFORM_IPHONE
#elif defined(linux) || defined(__linux) || defined(__linux__)
# define CATCH_PLATFORM_LINUX
#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER)
# define CATCH_PLATFORM_WINDOWS
# if !defined(NOMINMAX) && !defined(CATCH_CONFIG_NO_NOMINMAX)
# define CATCH_DEFINES_NOMINMAX
# endif
# if !defined(WIN32_LEAN_AND_MEAN) && !defined(CATCH_CONFIG_NO_WIN32_LEAN_AND_MEAN)
# define CATCH_DEFINES_WIN32_LEAN_AND_MEAN
# endif
#endif
#include <string>
namespace Catch{
bool isDebuggerActive();
void writeToDebugConsole( std::string const& text );
}
#ifdef CATCH_PLATFORM_MAC
// The following code snippet based on:
// http://cocoawithlove.com/2008/03/break-into-debugger.html
#ifdef DEBUG
#if defined(__ppc64__) || defined(__ppc__)
#define CATCH_TRAP() \
__asm__("li r0, 20\nsc\nnop\nli r0, 37\nli r4, 2\nsc\nnop\n" \
: : : "memory","r0","r3","r4" )
#else
#define CATCH_TRAP() _asm__("int $3\n" : : )
#endif
#endif
#elif defined(CATCH_PLATFORM_LINUX)
// If we can use inline assembler, do it because this allows us to break
// directly at the location of the failing check instead of breaking inside
// raise() called from it, i.e. one stack frame below.
#if defined(__GNUC__) && (defined(__i386) || defined(__x86_64))
#define CATCH_TRAP() asm volatile ("int $3")
#else // Fall back to the generic way.
#include <signal.h>
#define CATCH_TRAP() raise(SIGTRAP)
#endif
#elif defined(_MSC_VER)
#define CATCH_TRAP() __debugbreak()
#elif defined(__MINGW32__)
extern "C" __declspec(dllimport) void __stdcall DebugBreak();
#define CATCH_TRAP() DebugBreak()
#endif
#ifdef CATCH_TRAP
#define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { CATCH_TRAP(); }
#else
#define CATCH_BREAK_INTO_DEBUGGER() Catch::alwaysTrue();
#endif
// #included from: catch_interfaces_runner.h
#define TWOBLUECUBES_CATCH_INTERFACES_RUNNER_H_INCLUDED
namespace Catch {
class TestCase;
struct IRunner {
virtual ~IRunner();
virtual bool aborting() const = 0;
};
}
///////////////////////////////////////////////////////////////////////////////
// In the event of a failure works out if the debugger needs to be invoked
// and/or an exception thrown and takes appropriate action.
// This needs to be done as a macro so the debugger will stop in the user
// source code rather than in Catch library code
#define INTERNAL_CATCH_REACT( resultBuilder ) \
if( resultBuilder.shouldDebugBreak() ) CATCH_BREAK_INTO_DEBUGGER(); \
resultBuilder.react();
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ) \
do { \
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \
try { \
CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \
( __catchResult <= expr ).endExpression(); \
} \
catch( ... ) { \
__catchResult.useActiveException( Catch::ResultDisposition::Normal ); \
} \
INTERNAL_CATCH_REACT( __catchResult ) \
} while( Catch::alwaysFalse( sizeof(expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_IF( expr, resultDisposition, macroName ) \
INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \
if( Catch::getResultCapture().getLastResult()->succeeded() )
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_ELSE( expr, resultDisposition, macroName ) \
INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \
if( !Catch::getResultCapture().getLastResult()->succeeded() )
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_NO_THROW( expr, resultDisposition, macroName ) \
do { \
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \
try { \
expr; \
__catchResult.captureResult( Catch::ResultWas::Ok ); \
} \
catch( ... ) { \
__catchResult.useActiveException( resultDisposition ); \
} \
INTERNAL_CATCH_REACT( __catchResult ) \
} while( Catch::alwaysFalse() )
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_THROWS( expr, resultDisposition, matcher, macroName ) \
do { \
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition, #matcher ); \
if( __catchResult.allowThrows() ) \
try { \
expr; \
__catchResult.captureResult( Catch::ResultWas::DidntThrowException ); \
} \
catch( ... ) { \
__catchResult.captureExpectedException( matcher ); \
} \
else \
__catchResult.captureResult( Catch::ResultWas::Ok ); \
INTERNAL_CATCH_REACT( __catchResult ) \
} while( Catch::alwaysFalse() )
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_THROWS_AS( expr, exceptionType, resultDisposition, macroName ) \
do { \
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \
if( __catchResult.allowThrows() ) \
try { \
expr; \
__catchResult.captureResult( Catch::ResultWas::DidntThrowException ); \
} \
catch( exceptionType ) { \
__catchResult.captureResult( Catch::ResultWas::Ok ); \
} \
catch( ... ) { \
__catchResult.useActiveException( resultDisposition ); \
} \
else \
__catchResult.captureResult( Catch::ResultWas::Ok ); \
INTERNAL_CATCH_REACT( __catchResult ) \
} while( Catch::alwaysFalse() )
///////////////////////////////////////////////////////////////////////////////
#ifdef CATCH_CONFIG_VARIADIC_MACROS
#define INTERNAL_CATCH_MSG( messageType, resultDisposition, macroName, ... ) \
do { \
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, "", resultDisposition ); \
__catchResult << __VA_ARGS__ + ::Catch::StreamEndStop(); \
__catchResult.captureResult( messageType ); \
INTERNAL_CATCH_REACT( __catchResult ) \
} while( Catch::alwaysFalse() )
#else
#define INTERNAL_CATCH_MSG( messageType, resultDisposition, macroName, log ) \
do { \
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, "", resultDisposition ); \
__catchResult << log + ::Catch::StreamEndStop(); \
__catchResult.captureResult( messageType ); \
INTERNAL_CATCH_REACT( __catchResult ) \
} while( Catch::alwaysFalse() )
#endif
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_INFO( log, macroName ) \
Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) = Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log;
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \
do { \
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg ", " #matcher, resultDisposition ); \
try { \
std::string matcherAsString = (matcher).toString(); \
__catchResult \
.setLhs( Catch::toString( arg ) ) \
.setRhs( matcherAsString == Catch::Detail::unprintableString ? #matcher : matcherAsString ) \
.setOp( "matches" ) \
.setResultType( (matcher).match( arg ) ); \
__catchResult.captureExpression(); \
} catch( ... ) { \
__catchResult.useActiveException( resultDisposition | Catch::ResultDisposition::ContinueOnFailure ); \
} \
INTERNAL_CATCH_REACT( __catchResult ) \
} while( Catch::alwaysFalse() )
// #included from: internal/catch_section.h
#define TWOBLUECUBES_CATCH_SECTION_H_INCLUDED
// #included from: catch_section_info.h
#define TWOBLUECUBES_CATCH_SECTION_INFO_H_INCLUDED
// #included from: catch_totals.hpp
#define TWOBLUECUBES_CATCH_TOTALS_HPP_INCLUDED
#include <cstddef>
namespace Catch {
struct Counts {
Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {}
Counts operator - ( Counts const& other ) const {
Counts diff;
diff.passed = passed - other.passed;
diff.failed = failed - other.failed;
diff.failedButOk = failedButOk - other.failedButOk;
return diff;
}
Counts& operator += ( Counts const& other ) {
passed += other.passed;
failed += other.failed;
failedButOk += other.failedButOk;
return *this;
}
std::size_t total() const {
return passed + failed + failedButOk;
}
bool allPassed() const {
return failed == 0 && failedButOk == 0;
}
bool allOk() const {
return failed == 0;
}
std::size_t passed;
std::size_t failed;
std::size_t failedButOk;
};
struct Totals {
Totals operator - ( Totals const& other ) const {
Totals diff;
diff.assertions = assertions - other.assertions;
diff.testCases = testCases - other.testCases;
return diff;
}
Totals delta( Totals const& prevTotals ) const {
Totals diff = *this - prevTotals;
if( diff.assertions.failed > 0 )
++diff.testCases.failed;
else if( diff.assertions.failedButOk > 0 )
++diff.testCases.failedButOk;
else
++diff.testCases.passed;
return diff;
}
Totals& operator += ( Totals const& other ) {
assertions += other.assertions;
testCases += other.testCases;
return *this;
}
Counts assertions;
Counts testCases;
};
}
namespace Catch {
struct SectionInfo {
SectionInfo
( SourceLineInfo const& _lineInfo,
std::string const& _name,
std::string const& _description = std::string() );
std::string name;
std::string description;
SourceLineInfo lineInfo;
};
struct SectionEndInfo {
SectionEndInfo( SectionInfo const& _sectionInfo, Counts const& _prevAssertions, double _durationInSeconds )
: sectionInfo( _sectionInfo ), prevAssertions( _prevAssertions ), durationInSeconds( _durationInSeconds )
{}
SectionInfo sectionInfo;
Counts prevAssertions;
double durationInSeconds;
};
} // end namespace Catch
// #included from: catch_timer.h
#define TWOBLUECUBES_CATCH_TIMER_H_INCLUDED
#ifdef CATCH_PLATFORM_WINDOWS
typedef unsigned long long uint64_t;
#else
#include <stdint.h>
#endif
namespace Catch {
class Timer {
public:
Timer() : m_ticks( 0 ) {}
void start();
unsigned int getElapsedMicroseconds() const;
unsigned int getElapsedMilliseconds() const;
double getElapsedSeconds() const;
private:
uint64_t m_ticks;
};
} // namespace Catch
#include <string>
namespace Catch {
class Section : NonCopyable {
public:
Section( SectionInfo const& info );
~Section();
// This indicates whether the section should be executed or not
operator bool() const;
private:
SectionInfo m_info;
std::string m_name;
Counts m_assertions;
bool m_sectionIncluded;
Timer m_timer;
};
} // end namespace Catch
#ifdef CATCH_CONFIG_VARIADIC_MACROS
#define INTERNAL_CATCH_SECTION( ... ) \
if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) )
#else
#define INTERNAL_CATCH_SECTION( name, desc ) \
if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, name, desc ) )
#endif
// #included from: internal/catch_generators.hpp
#define TWOBLUECUBES_CATCH_GENERATORS_HPP_INCLUDED
#include <iterator>
#include <vector>
#include <string>
#include <stdlib.h>
namespace Catch {
template<typename T>
struct IGenerator {
virtual ~IGenerator() {}
virtual T getValue( std::size_t index ) const = 0;
virtual std::size_t size () const = 0;
};
template<typename T>
class BetweenGenerator : public IGenerator<T> {
public:
BetweenGenerator( T from, T to ) : m_from( from ), m_to( to ){}
virtual T getValue( std::size_t index ) const {
return m_from+static_cast<int>( index );
}
virtual std::size_t size() const {
return static_cast<std::size_t>( 1+m_to-m_from );
}
private:
T m_from;
T m_to;
};
template<typename T>
class ValuesGenerator : public IGenerator<T> {
public:
ValuesGenerator(){}
void add( T value ) {
m_values.push_back( value );
}
virtual T getValue( std::size_t index ) const {
return m_values[index];
}
virtual std::size_t size() const {
return m_values.size();
}
private:
std::vector<T> m_values;
};
template<typename T>
class CompositeGenerator {
public:
CompositeGenerator() : m_totalSize( 0 ) {}
// *** Move semantics, similar to auto_ptr ***
CompositeGenerator( CompositeGenerator& other )
: m_fileInfo( other.m_fileInfo ),
m_totalSize( 0 )
{
move( other );
}
CompositeGenerator& setFileInfo( const char* fileInfo ) {
m_fileInfo = fileInfo;
return *this;
}
~CompositeGenerator() {
deleteAll( m_composed );
}
operator T () const {
size_t overallIndex = getCurrentContext().getGeneratorIndex( m_fileInfo, m_totalSize );
typename std::vector<const IGenerator<T>*>::const_iterator it = m_composed.begin();
typename std::vector<const IGenerator<T>*>::const_iterator itEnd = m_composed.end();
for( size_t index = 0; it != itEnd; ++it )
{
const IGenerator<T>* generator = *it;
if( overallIndex >= index && overallIndex < index + generator->size() )
{
return generator->getValue( overallIndex-index );
}
index += generator->size();
}
CATCH_INTERNAL_ERROR( "Indexed past end of generated range" );
return T(); // Suppress spurious "not all control paths return a value" warning in Visual Studio - if you know how to fix this please do so
}
void add( const IGenerator<T>* generator ) {
m_totalSize += generator->size();
m_composed.push_back( generator );
}
CompositeGenerator& then( CompositeGenerator& other ) {
move( other );
return *this;
}
CompositeGenerator& then( T value ) {
ValuesGenerator<T>* valuesGen = new ValuesGenerator<T>();
valuesGen->add( value );
add( valuesGen );
return *this;
}
private:
void move( CompositeGenerator& other ) {
std::copy( other.m_composed.begin(), other.m_composed.end(), std::back_inserter( m_composed ) );
m_totalSize += other.m_totalSize;
other.m_composed.clear();
}
std::vector<const IGenerator<T>*> m_composed;
std::string m_fileInfo;
size_t m_totalSize;
};
namespace Generators
{
template<typename T>
CompositeGenerator<T> between( T from, T to ) {
CompositeGenerator<T> generators;
generators.add( new BetweenGenerator<T>( from, to ) );
return generators;
}
template<typename T>
CompositeGenerator<T> values( T val1, T val2 ) {
CompositeGenerator<T> generators;
ValuesGenerator<T>* valuesGen = new ValuesGenerator<T>();
valuesGen->add( val1 );
valuesGen->add( val2 );
generators.add( valuesGen );
return generators;
}
template<typename T>
CompositeGenerator<T> values( T val1, T val2, T val3 ){
CompositeGenerator<T> generators;
ValuesGenerator<T>* valuesGen = new ValuesGenerator<T>();
valuesGen->add( val1 );
valuesGen->add( val2 );
valuesGen->add( val3 );
generators.add( valuesGen );
return generators;
}
template<typename T>
CompositeGenerator<T> values( T val1, T val2, T val3, T val4 ) {
CompositeGenerator<T> generators;
ValuesGenerator<T>* valuesGen = new ValuesGenerator<T>();
valuesGen->add( val1 );
valuesGen->add( val2 );
valuesGen->add( val3 );
valuesGen->add( val4 );
generators.add( valuesGen );
return generators;
}
} // end namespace Generators
using namespace Generators;
} // end namespace Catch
#define INTERNAL_CATCH_LINESTR2( line ) #line
#define INTERNAL_CATCH_LINESTR( line ) INTERNAL_CATCH_LINESTR2( line )
#define INTERNAL_CATCH_GENERATE( expr ) expr.setFileInfo( __FILE__ "(" INTERNAL_CATCH_LINESTR( __LINE__ ) ")" )
// #included from: internal/catch_interfaces_exception.h
#define TWOBLUECUBES_CATCH_INTERFACES_EXCEPTION_H_INCLUDED
#include <string>
#include <vector>
// #included from: catch_interfaces_registry_hub.h
#define TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED
#include <string>
namespace Catch {
class TestCase;
struct ITestCaseRegistry;
struct IExceptionTranslatorRegistry;
struct IExceptionTranslator;
struct IReporterRegistry;
struct IReporterFactory;
struct IRegistryHub {
virtual ~IRegistryHub();
virtual IReporterRegistry const& getReporterRegistry() const = 0;
virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0;
virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry() = 0;
};
struct IMutableRegistryHub {
virtual ~IMutableRegistryHub();
virtual void registerReporter( std::string const& name, Ptr<IReporterFactory> const& factory ) = 0;
virtual void registerListener( Ptr<IReporterFactory> const& factory ) = 0;
virtual void registerTest( TestCase const& testInfo ) = 0;
virtual void registerTranslator( const IExceptionTranslator* translator ) = 0;
};
IRegistryHub& getRegistryHub();
IMutableRegistryHub& getMutableRegistryHub();
void cleanUp();
std::string translateActiveException();
}
namespace Catch {
typedef std::string(*exceptionTranslateFunction)();
struct IExceptionTranslator;
typedef std::vector<const IExceptionTranslator*> ExceptionTranslators;
struct IExceptionTranslator {
virtual ~IExceptionTranslator();
virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const = 0;
};
struct IExceptionTranslatorRegistry {
virtual ~IExceptionTranslatorRegistry();
virtual std::string translateActiveException() const = 0;
};
class ExceptionTranslatorRegistrar {
template<typename T>
class ExceptionTranslator : public IExceptionTranslator {
public:
ExceptionTranslator( std::string(*translateFunction)( T& ) )
: m_translateFunction( translateFunction )
{}
virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const CATCH_OVERRIDE {
try {
if( it == itEnd )
throw;
else
return (*it)->translate( it+1, itEnd );
}
catch( T& ex ) {
return m_translateFunction( ex );
}
}
protected:
std::string(*m_translateFunction)( T& );
};
public:
template<typename T>
ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) {
getMutableRegistryHub().registerTranslator
( new ExceptionTranslator<T>( translateFunction ) );
}
};
}
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_TRANSLATE_EXCEPTION2( translatorName, signature ) \
static std::string translatorName( signature ); \
namespace{ Catch::ExceptionTranslatorRegistrar INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionRegistrar )( &translatorName ); }\
static std::string translatorName( signature )
#define INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION2( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature )
// #included from: internal/catch_approx.hpp
#define TWOBLUECUBES_CATCH_APPROX_HPP_INCLUDED
#include <cmath>
#include <limits>
namespace Catch {
namespace Detail {
class Approx {
public:
explicit Approx ( double value )
: m_epsilon( std::numeric_limits<float>::epsilon()*100 ),
m_scale( 1.0 ),
m_value( value )
{}
Approx( Approx const& other )
: m_epsilon( other.m_epsilon ),
m_scale( other.m_scale ),
m_value( other.m_value )
{}
static Approx custom() {
return Approx( 0 );
}
Approx operator()( double value ) {
Approx approx( value );
approx.epsilon( m_epsilon );
approx.scale( m_scale );
return approx;
}
friend bool operator == ( double lhs, Approx const& rhs ) {
// Thanks to Richard Harris for his help refining this formula
return fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( fabs(lhs), fabs(rhs.m_value) ) );
}
friend bool operator == ( Approx const& lhs, double rhs ) {
return operator==( rhs, lhs );
}
friend bool operator != ( double lhs, Approx const& rhs ) {
return !operator==( lhs, rhs );
}
friend bool operator != ( Approx const& lhs, double rhs ) {
return !operator==( rhs, lhs );
}
friend bool operator <= ( double lhs, Approx const& rhs )
{
return lhs < rhs.m_value || lhs == rhs;
}
friend bool operator <= ( Approx const& lhs, double rhs )
{
return lhs.m_value < rhs || lhs == rhs;
}
friend bool operator >= ( double lhs, Approx const& rhs )
{
return lhs > rhs.m_value || lhs == rhs;
}
friend bool operator >= ( Approx const& lhs, double rhs )
{
return lhs.m_value > rhs || lhs == rhs;
}
Approx& epsilon( double newEpsilon ) {
m_epsilon = newEpsilon;
return *this;
}
Approx& scale( double newScale ) {
m_scale = newScale;
return *this;
}
std::string toString() const {
std::ostringstream oss;
oss << "Approx( " << Catch::toString( m_value ) << " )";
return oss.str();
}
private:
double m_epsilon;
double m_scale;
double m_value;
};
}
template<>
inline std::string toString<Detail::Approx>( Detail::Approx const& value ) {
return value.toString();
}
} // end namespace Catch
// #included from: internal/catch_interfaces_tag_alias_registry.h
#define TWOBLUECUBES_CATCH_INTERFACES_TAG_ALIAS_REGISTRY_H_INCLUDED
// #included from: catch_tag_alias.h
#define TWOBLUECUBES_CATCH_TAG_ALIAS_H_INCLUDED
#include <string>
namespace Catch {
struct TagAlias {
TagAlias( std::string _tag, SourceLineInfo _lineInfo ) : tag( _tag ), lineInfo( _lineInfo ) {}
std::string tag;
SourceLineInfo lineInfo;
};
struct RegistrarForTagAliases {
RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo );
};
} // end namespace Catch
#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); }
// #included from: catch_option.hpp
#define TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED
namespace Catch {
// An optional type
template<typename T>
class Option {
public:
Option() : nullableValue( CATCH_NULL ) {}
Option( T const& _value )
: nullableValue( new( storage ) T( _value ) )
{}
Option( Option const& _other )
: nullableValue( _other ? new( storage ) T( *_other ) : CATCH_NULL )
{}
~Option() {
reset();
}
Option& operator= ( Option const& _other ) {
if( &_other != this ) {
reset();
if( _other )
nullableValue = new( storage ) T( *_other );
}
return *this;
}
Option& operator = ( T const& _value ) {
reset();
nullableValue = new( storage ) T( _value );
return *this;
}
void reset() {
if( nullableValue )
nullableValue->~T();
nullableValue = CATCH_NULL;
}
T& operator*() { return *nullableValue; }
T const& operator*() const { return *nullableValue; }
T* operator->() { return nullableValue; }
const T* operator->() const { return nullableValue; }
T valueOr( T const& defaultValue ) const {
return nullableValue ? *nullableValue : defaultValue;
}
bool some() const { return nullableValue != CATCH_NULL; }
bool none() const { return nullableValue == CATCH_NULL; }
bool operator !() const { return nullableValue == CATCH_NULL; }
operator SafeBool::type() const {
return SafeBool::makeSafe( some() );
}
private:
T* nullableValue;
char storage[sizeof(T)];
};
} // end namespace Catch
namespace Catch {
struct ITagAliasRegistry {
virtual ~ITagAliasRegistry();
virtual Option<TagAlias> find( std::string const& alias ) const = 0;
virtual std::string expandAliases( std::string const& unexpandedTestSpec ) const = 0;
static ITagAliasRegistry const& get();
};
} // end namespace Catch
// These files are included here so the single_include script doesn't put them
// in the conditionally compiled sections
// #included from: internal/catch_test_case_info.h
#define TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED
#include <string>
#include <set>
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wpadded"
#endif
namespace Catch {
struct ITestCase;
struct TestCaseInfo {
enum SpecialProperties{
None = 0,
IsHidden = 1 << 1,
ShouldFail = 1 << 2,
MayFail = 1 << 3,
Throws = 1 << 4
};
TestCaseInfo( std::string const& _name,
std::string const& _className,
std::string const& _description,
std::set<std::string> const& _tags,
SourceLineInfo const& _lineInfo );
TestCaseInfo( TestCaseInfo const& other );
friend void setTags( TestCaseInfo& testCaseInfo, std::set<std::string> const& tags );
bool isHidden() const;
bool throws() const;
bool okToFail() const;
bool expectedToFail() const;
std::string name;
std::string className;
std::string description;
std::set<std::string> tags;
std::set<std::string> lcaseTags;
std::string tagsAsString;
SourceLineInfo lineInfo;
SpecialProperties properties;
};
class TestCase : public TestCaseInfo {
public:
TestCase( ITestCase* testCase, TestCaseInfo const& info );
TestCase( TestCase const& other );
TestCase withName( std::string const& _newName ) const;
void invoke() const;
TestCaseInfo const& getTestCaseInfo() const;
void swap( TestCase& other );
bool operator == ( TestCase const& other ) const;
bool operator < ( TestCase const& other ) const;
TestCase& operator = ( TestCase const& other );
private:
Ptr<ITestCase> test;
};
TestCase makeTestCase( ITestCase* testCase,
std::string const& className,
std::string const& name,
std::string const& description,
SourceLineInfo const& lineInfo );
}
#ifdef __clang__
#pragma clang diagnostic pop
#endif
#ifdef __OBJC__
// #included from: internal/catch_objc.hpp
#define TWOBLUECUBES_CATCH_OBJC_HPP_INCLUDED
#import <objc/runtime.h>
#include <string>
// NB. Any general catch headers included here must be included
// in catch.hpp first to make sure they are included by the single
// header for non obj-usage
///////////////////////////////////////////////////////////////////////////////
// This protocol is really only here for (self) documenting purposes, since
// all its methods are optional.
@protocol OcFixture
@optional
-(void) setUp;
-(void) tearDown;
@end
namespace Catch {
class OcMethod : public SharedImpl<ITestCase> {
public:
OcMetho
gitextract_8mx2ef4h/ ├── .gitignore ├── .mailmap ├── .travis.yml ├── CMakeLists.txt ├── GuiUnitTest/ │ ├── .gitignore │ ├── CMakeLists.txt │ ├── main.cpp │ ├── testsettings.cpp │ └── testviewhelpers.cpp ├── README.md ├── RegressionTest/ │ ├── BaselineBinaries/ │ │ ├── Darwin/ │ │ │ └── depthmapXcli │ │ └── Linux/ │ │ └── depthmapXcli │ ├── RegressionTestRunner.py │ ├── cmdlinewrapper.py │ ├── config.py │ ├── depthmaprunner.py │ ├── performance_regression.json │ ├── performanceregressionconfig.py │ ├── performancerunner.py │ ├── regressionconfig.json │ ├── regressionconfig_agents.json │ ├── runhelpers.py │ └── test/ │ ├── context.py │ ├── disposablefile.py │ ├── fail/ │ │ └── test_fail.py │ ├── pass/ │ │ └── test_pass.py │ ├── test_RegressionTestRunner.py │ ├── test_cmdlinewrapper.py │ ├── test_config.py │ ├── test_depthmaprunner.py │ ├── test_disposablefile.py │ ├── test_main.py │ ├── test_performanceregressionconfig.py │ ├── test_performancerunner.py │ ├── test_runhelpers.py │ └── test_test_main.py ├── ThirdParty/ │ ├── Catch/ │ │ └── catch.hpp │ └── FakeIt/ │ └── Catch/ │ └── fakeit.hpp ├── ci/ │ ├── .gitattributes │ └── build.sh ├── cliTest/ │ ├── CMakeLists.txt │ ├── argumentholder.h │ ├── main.cpp │ ├── selfcleaningfile.h │ ├── testagentparser.cpp │ ├── testargumentholder.cpp │ ├── testaxialparser.cpp │ ├── testcommandlineparser.cpp │ ├── testexportparser.cpp │ ├── testimportparser.cpp │ ├── testisovistparser.cpp │ ├── testlinkparser.cpp │ ├── testmapconvertparser.cpp │ ├── testparsingutils.cpp │ ├── testperformancewriter.cpp │ ├── testradiusconverter.cpp │ ├── testsegmentparser.cpp │ ├── testselfcleaningfile.cpp │ ├── testsimpletimer.cpp │ ├── teststepdepthparser.cpp │ ├── testvgaparser.cpp │ └── testvisprepparser.cpp ├── depthmapX/ │ ├── CMakeLists.txt │ ├── GraphDoc.cpp │ ├── GraphDoc.h │ ├── UI/ │ │ ├── AboutDlg.ui │ │ ├── AgentAnalysisDlg.ui │ │ ├── AttributeChooserDlg.ui │ │ ├── AttributeSummary.ui │ │ ├── AxialAnalysisOptionsDlg.ui │ │ ├── ColourScaleDlg.ui │ │ ├── ColourScaleDlg.ui.bak │ │ ├── ColumnPropertiesDlg.ui │ │ ├── ConvertShapesDlg.ui │ │ ├── DepthmapAlert.ui │ │ ├── DepthmapOptionsDlg.ui │ │ ├── EditConnectionsDlg.ui │ │ ├── FewestLineOptionsDlg.ui │ │ ├── FilePropertiesDlg.ui │ │ ├── FindLocDlg.ui │ │ ├── GridDialog.ui │ │ ├── InsertColumnDlg.ui │ │ ├── IsovistPathDlg.ui │ │ ├── LayerChooserDlg.ui │ │ ├── LicenceDialog.ui │ │ ├── MakeLayerDlg.ui │ │ ├── MakeOptionsDlg.ui │ │ ├── NewLayerDlg.ui │ │ ├── OptionsDlg.ui │ │ ├── PromptReplace.ui │ │ ├── PushDialog.ui │ │ ├── RenameObjectDlg.ui │ │ ├── SegmentAnalysisDlg.ui │ │ ├── TopoMetDlg.ui │ │ ├── doAll.sh │ │ └── licenseagreement.ui │ ├── compatibilitydefines.h │ ├── coreapplication.cpp │ ├── coreapplication.h │ ├── dialogs/ │ │ ├── AboutDlg.cpp │ │ ├── AboutDlg.h │ │ ├── AgentAnalysisDlg.cpp │ │ ├── AgentAnalysisDlg.h │ │ ├── AttributeChooserDlg.cpp │ │ ├── AttributeChooserDlg.h │ │ ├── AttributeSummary.cpp │ │ ├── AttributeSummary.h │ │ ├── AxialAnalysisOptionsDlg.cpp │ │ ├── AxialAnalysisOptionsDlg.h │ │ ├── CMakeLists.txt │ │ ├── ColourScaleDlg.cpp │ │ ├── ColourScaleDlg.h │ │ ├── ColumnPropertiesDlg.cpp │ │ ├── ColumnPropertiesDlg.h │ │ ├── ConvertShapesDlg.cpp │ │ ├── ConvertShapesDlg.h │ │ ├── EditConnectionsDlg.cpp │ │ ├── EditConnectionsDlg.h │ │ ├── FewestLineOptionsDlg.cpp │ │ ├── FewestLineOptionsDlg.h │ │ ├── FilePropertiesDlg.cpp │ │ ├── FilePropertiesDlg.h │ │ ├── FindLocDlg.cpp │ │ ├── FindLocDlg.h │ │ ├── GridDialog.cpp │ │ ├── GridDialog.h │ │ ├── InsertColumnDlg.cpp │ │ ├── InsertColumnDlg.h │ │ ├── IsovistPathDlg.cpp │ │ ├── IsovistPathDlg.h │ │ ├── LayerChooserDlg.cpp │ │ ├── LayerChooserDlg.h │ │ ├── LicenceDialog.cpp │ │ ├── LicenceDialog.h │ │ ├── MakeLayerDlg.cpp │ │ ├── MakeLayerDlg.h │ │ ├── MakeOptionsDlg.cpp │ │ ├── MakeOptionsDlg.h │ │ ├── NewLayerDlg.cpp │ │ ├── NewLayerDlg.h │ │ ├── OptionsDlg.cpp │ │ ├── OptionsDlg.h │ │ ├── PromptReplace.cpp │ │ ├── PromptReplace.h │ │ ├── PushDialog.cpp │ │ ├── PushDialog.h │ │ ├── RenameObjectDlg.cpp │ │ ├── RenameObjectDlg.h │ │ ├── SegmentAnalysisDlg.cpp │ │ ├── SegmentAnalysisDlg.h │ │ ├── TopoMetDlg.cpp │ │ ├── TopoMetDlg.h │ │ ├── licenseagreement.cpp │ │ ├── licenseagreement.h │ │ └── settings/ │ │ ├── generalpage.cpp │ │ ├── generalpage.h │ │ ├── interfacepage.cpp │ │ ├── interfacepage.h │ │ ├── settingsdialog.cpp │ │ ├── settingsdialog.h │ │ ├── settingsdialog.qrc │ │ └── settingspage.h │ ├── icons/ │ │ ├── depthmapX.icns │ │ └── graph.icns │ ├── icons.rc │ ├── imainwindowmodule.h │ ├── imainwindowmodulefactory.h │ ├── indexWidget.cpp │ ├── indexWidget.h │ ├── main.cpp │ ├── mainwindow.cpp │ ├── mainwindow.h │ ├── mainwindowfactory.cpp │ ├── mainwindowfactory.h │ ├── mainwindowhelpers.cpp │ ├── mainwindowhelpers.h │ ├── mainwindowmodulefactory.cpp │ ├── mainwindowmoduleregistry.cpp │ ├── mainwindowmoduleregistry.hpp │ ├── make_version_header.bat │ ├── make_version_header.sh │ ├── mdichild.cpp │ ├── mdichild.h │ ├── qrc_mdi.cpp │ ├── renderthread.cpp │ ├── resource.qrc │ ├── resources/ │ │ └── Info.plist │ ├── settings.h │ ├── settingsimpl.cpp │ ├── settingsimpl.h │ ├── treeWindow.cpp │ ├── treeWindow.h │ └── views/ │ ├── 3dview/ │ │ ├── 3dview.cpp │ │ ├── 3dview.h │ │ └── glureimpl.h │ ├── CMakeLists.txt │ ├── depthmapview/ │ │ ├── depthmapview.cpp │ │ └── depthmapview.h │ ├── glview/ │ │ ├── gldynamicline.cpp │ │ ├── gldynamicline.h │ │ ├── gldynamicrect.cpp │ │ ├── gldynamicrect.h │ │ ├── gllines.cpp │ │ ├── gllines.h │ │ ├── gllinesuniform.cpp │ │ ├── gllinesuniform.h │ │ ├── glpointmap.cpp │ │ ├── glpointmap.h │ │ ├── glpolygons.cpp │ │ ├── glpolygons.h │ │ ├── glrastertexture.cpp │ │ ├── glrastertexture.h │ │ ├── glregularpolygons.cpp │ │ ├── glregularpolygons.h │ │ ├── glshapegraph.cpp │ │ ├── glshapegraph.h │ │ ├── glshapemap.cpp │ │ ├── glshapemap.h │ │ ├── gltriangles.cpp │ │ ├── gltriangles.h │ │ ├── gltrianglesuniform.cpp │ │ ├── gltrianglesuniform.h │ │ ├── glutriangulator.cpp │ │ ├── glutriangulator.h │ │ ├── glview.cpp │ │ └── glview.h │ ├── mapview.cpp │ ├── mapview.h │ ├── plotview/ │ │ ├── plotview.cpp │ │ └── plotview.h │ ├── tableview/ │ │ ├── tableview.cpp │ │ └── tableview.h │ ├── viewhelpers.cpp │ └── viewhelpers.h ├── depthmapXTest/ │ ├── CMakeLists.txt │ ├── main.cpp │ ├── testgllines.cpp │ ├── testgllinesuniform.cpp │ └── testglrastertexture.cpp ├── depthmapXcli/ │ ├── CMakeLists.txt │ ├── agentparser.cpp │ ├── agentparser.h │ ├── axialparser.cpp │ ├── axialparser.h │ ├── commandlineparser.cpp │ ├── commandlineparser.h │ ├── exceptions.h │ ├── exportparser.cpp │ ├── exportparser.h │ ├── imodeparser.h │ ├── imodeparserfactory.h │ ├── importparser.cpp │ ├── importparser.h │ ├── isovistparser.cpp │ ├── isovistparser.h │ ├── linkparser.cpp │ ├── linkparser.h │ ├── main.cpp │ ├── mapconvertparser.cpp │ ├── mapconvertparser.h │ ├── modeparserregistry.cpp │ ├── modeparserregistry.h │ ├── parsingutils.cpp │ ├── parsingutils.h │ ├── performancesink.h │ ├── performancewriter.cpp │ ├── performancewriter.h │ ├── printcommunicator.cpp │ ├── printcommunicator.h │ ├── radiusconverter.cpp │ ├── radiusconverter.h │ ├── runmethods.cpp │ ├── runmethods.h │ ├── segmentparser.cpp │ ├── segmentparser.h │ ├── simpletimer.h │ ├── stepdepthparser.cpp │ ├── stepdepthparser.h │ ├── vgaparser.cpp │ ├── vgaparser.h │ ├── visprepparser.cpp │ └── visprepparser.h ├── docs/ │ ├── about.md │ ├── building.md │ ├── commandline.md │ ├── formatting.md │ ├── gui.md │ ├── howdoi.md │ └── index.md ├── genlib/ │ ├── CMakeLists.txt │ ├── bsptree.cpp │ ├── bsptree.h │ ├── comm.h │ ├── containerutils.h │ ├── exceptions.h │ ├── lgpl.txt │ ├── linreg.h │ ├── p2dpoly.cpp │ ├── p2dpoly.h │ ├── pafmath.cpp │ ├── pafmath.h │ ├── pflipper.h │ ├── readwritehelpers.h │ ├── simplematrix.h │ ├── stringutils.cpp │ ├── stringutils.h │ ├── xmlparse.cpp │ └── xmlparse.h ├── genlibTest/ │ ├── CMakeLists.txt │ ├── main.cpp │ ├── testbspnode.cpp │ ├── testcontainerutils.cpp │ ├── testreadwritehelpers.cpp │ ├── testsimplematrix.cpp │ └── teststringutils.cpp ├── mgraph440/ │ ├── CMakeLists.txt │ ├── attr.cpp │ ├── attr.h │ ├── attributes.cpp │ ├── attributes.h │ ├── axialmap.cpp │ ├── axialmap.h │ ├── bspnode.h │ ├── comm.h │ ├── connector.cpp │ ├── connector.h │ ├── containerutils.h │ ├── datalayer.cpp │ ├── datalayer.h │ ├── displayparams.h │ ├── exceptions.h │ ├── fileproperties.h │ ├── legacyconverters.h │ ├── mapinfodata.h │ ├── mgraph.cpp │ ├── mgraph.h │ ├── mgraph_consts.h │ ├── ngraph.cpp │ ├── ngraph.h │ ├── options.h │ ├── p2dpoly.cpp │ ├── p2dpoly.h │ ├── pafcolor.cpp │ ├── pafcolor.h │ ├── pafmath.cpp │ ├── pafmath.h │ ├── paftl.h │ ├── pixelbase.cpp │ ├── pixelbase.h │ ├── pixelref.h │ ├── point.cpp │ ├── point.h │ ├── pointmap.cpp │ ├── pointmap.h │ ├── salaprogram.cpp │ ├── salaprogram.h │ ├── shapemap.cpp │ ├── shapemap.h │ ├── spacepix.cpp │ ├── spacepix.h │ ├── stringutils.cpp │ └── stringutils.h ├── mgraph440Test/ │ ├── CMakeLists.txt │ ├── main.cpp │ ├── testcontainers.cpp │ └── testconverters.cpp ├── moduleTest/ │ ├── CMakeLists.txt │ └── main.cpp ├── modules/ │ ├── CMakeLists.txt │ └── segmentshortestpaths/ │ ├── CMakeLists.txt │ ├── RegressionTest/ │ │ └── regressionconfig.json │ ├── cli/ │ │ ├── CMakeLists.txt │ │ ├── segmentshortestpathparser.cpp │ │ └── segmentshortestpathparser.h │ ├── cliTest/ │ │ ├── CMakeLists.txt │ │ └── segmentshortestpathparsertest.cpp │ ├── core/ │ │ ├── CMakeLists.txt │ │ ├── segmmetricshortestpath.cpp │ │ ├── segmmetricshortestpath.h │ │ ├── segmtopologicalshortestpath.cpp │ │ ├── segmtopologicalshortestpath.h │ │ ├── segmtulipshortestpath.cpp │ │ └── segmtulipshortestpath.h │ ├── coreTest/ │ │ ├── CMakeLists.txt │ │ └── segmentpathscoretest.cpp │ └── gui/ │ ├── CMakeLists.txt │ ├── segmentpathsmainwindow.cpp │ ├── segmentpathsmainwindow.h │ └── uictrigger.cpp ├── releases/ │ ├── README.txt │ ├── gplv3.txt │ ├── lgplv3.txt │ └── licenses.txt ├── salaTest/ │ ├── CMakeLists.txt │ ├── main.cpp │ ├── testattributetable.cpp │ ├── testattributetablehelpers.cpp │ ├── testattributetableindex.cpp │ ├── testattributetableview.cpp │ ├── testdxfp.cpp │ ├── testentityparsing.cpp │ ├── testgeometrygenerators.cpp │ ├── testgridproperties.cpp │ ├── testisovist.cpp │ ├── testisovistdef.cpp │ ├── testlayermanager.cpp │ ├── testlinkutils.cpp │ ├── testmapconversion.cpp │ ├── testmapinfodata.cpp │ ├── testmgraph.cpp │ ├── testpointinpoly.cpp │ ├── testpointmap.cpp │ ├── testpushvalues.cpp │ ├── testsalaprogram.cpp │ ├── testshapegraphs.cpp │ ├── testshapemaps.cpp │ ├── testshaperemove.cpp │ ├── testsparksieve.cpp │ └── teststructsizes.cpp ├── salalib/ │ ├── CMakeLists.txt │ ├── agents/ │ │ ├── CMakeLists.txt │ │ ├── agent.cpp │ │ ├── agent.h │ │ ├── agentengine.cpp │ │ ├── agentengine.h │ │ ├── agentga.cpp │ │ ├── agentga.h │ │ ├── agenthelpers.h │ │ ├── agentprogram.cpp │ │ ├── agentprogram.h │ │ ├── agentset.cpp │ │ └── agentset.h │ ├── alllinemap.cpp │ ├── alllinemap.h │ ├── attributetable.cpp │ ├── attributetable.h │ ├── attributetablehelpers.h │ ├── attributetableindex.cpp │ ├── attributetableindex.h │ ├── attributetableview.cpp │ ├── attributetableview.h │ ├── axialmap.cpp │ ├── axialmap.h │ ├── axialminimiser.cpp │ ├── axialminimiser.h │ ├── axialmodules/ │ │ ├── CMakeLists.txt │ │ ├── axialintegration.cpp │ │ ├── axialintegration.h │ │ ├── axialstepdepth.cpp │ │ └── axialstepdepth.h │ ├── axialpolygons.cpp │ ├── axialpolygons.h │ ├── connector.cpp │ ├── connector.h │ ├── displayparams.h │ ├── entityparsing.cpp │ ├── entityparsing.h │ ├── fileproperties.h │ ├── geometrygenerators.cpp │ ├── geometrygenerators.h │ ├── gridproperties.cpp │ ├── gridproperties.h │ ├── ianalysis.h │ ├── iaxial.h │ ├── importtypedefs.h │ ├── importutils.cpp │ ├── importutils.h │ ├── isegment.h │ ├── isovist.cpp │ ├── isovist.h │ ├── isovistdef.h │ ├── ivga.h │ ├── layermanager.h │ ├── layermanagerimpl.cpp │ ├── layermanagerimpl.h │ ├── linkutils.cpp │ ├── linkutils.h │ ├── mapconverter.cpp │ ├── mapconverter.h │ ├── mgraph.cpp │ ├── mgraph.h │ ├── mgraph_consts.h │ ├── ngraph.cpp │ ├── ngraph.h │ ├── options.h │ ├── pafcolor.cpp │ ├── pafcolor.h │ ├── parsers/ │ │ ├── CMakeLists.txt │ │ ├── dxfp.cpp │ │ ├── dxfp.h │ │ ├── mapinfodata.cpp │ │ ├── mapinfodata.h │ │ ├── ntfp.cpp │ │ ├── ntfp.h │ │ ├── tigerp.cpp │ │ └── tigerp.h │ ├── pixelref.h │ ├── point.cpp │ ├── point.h │ ├── pointdata.cpp │ ├── pointdata.h │ ├── salaprogram.cpp │ ├── salaprogram.h │ ├── segmmodules/ │ │ ├── CMakeLists.txt │ │ ├── segmangular.cpp │ │ ├── segmangular.h │ │ ├── segmhelpers.h │ │ ├── segmmetric.cpp │ │ ├── segmmetric.h │ │ ├── segmmetricpd.cpp │ │ ├── segmmetricpd.h │ │ ├── segmtopological.cpp │ │ ├── segmtopological.h │ │ ├── segmtopologicalpd.cpp │ │ ├── segmtopologicalpd.h │ │ ├── segmtulip.cpp │ │ ├── segmtulip.h │ │ ├── segmtulipdepth.cpp │ │ └── segmtulipdepth.h │ ├── shapemap.cpp │ ├── shapemap.h │ ├── spacepix.cpp │ ├── spacepix.h │ ├── spacepixfile.cpp │ ├── spacepixfile.h │ ├── sparksieve2.cpp │ ├── sparksieve2.h │ ├── tidylines.cpp │ ├── tidylines.h │ ├── tolerances.h │ └── vgamodules/ │ ├── CMakeLists.txt │ ├── vgaangular.cpp │ ├── vgaangular.h │ ├── vgaangulardepth.cpp │ ├── vgaangulardepth.h │ ├── vgaisovist.cpp │ ├── vgaisovist.h │ ├── vgametric.cpp │ ├── vgametric.h │ ├── vgametricdepth.cpp │ ├── vgametricdepth.h │ ├── vgathroughvision.cpp │ ├── vgathroughvision.h │ ├── vgavisualglobal.cpp │ ├── vgavisualglobal.h │ ├── vgavisualglobaldepth.cpp │ ├── vgavisualglobaldepth.h │ ├── vgavisuallocal.cpp │ └── vgavisuallocal.h ├── testdata/ │ ├── all_line_noncont_keys.graph │ ├── axmap_noncont_keys.graph │ ├── barnsbury_axial.RT1 │ ├── barnsbury_axial.graph │ ├── barnsbury_drawing.graph │ ├── barnsbury_extended1.dxf │ ├── barnsbury_extended1_axial.csv │ ├── barnsbury_extended1_axial.graph │ ├── barnsbury_extended1_axial.tsv │ ├── barnsbury_extended1_segment.graph │ ├── barnsbury_extended2.dxf │ ├── barnsbury_extended2_axial.graph │ ├── barnsbury_extended2_drawing.graph │ ├── barnsbury_segment.graph │ ├── barnsbury_segment_lines.mid │ ├── barnsbury_segment_lines.mif │ ├── barnsbury_segment_pline.mid │ ├── barnsbury_segment_pline.mif │ ├── gallery.dxf │ ├── gallery_connected.graph │ ├── gallery_connected_merge_links.txt │ ├── gallery_connected_with_isovist.graph │ ├── gallery_empty.graph │ ├── gallery_graph_vga.txt │ ├── gallery_two_pointmaps.graph │ ├── isovists.csv │ ├── polygons_drawing.graph │ ├── polywall.graph │ ├── rect1x1.graph │ ├── rooms.dxf │ ├── simple_axial_lines.ntf │ ├── simple_axlines.graph │ ├── simple_axlines.mid │ ├── simple_axlines.mif │ ├── simple_axlines_pline.mid │ ├── simple_axlines_pline.mif │ ├── turns.dxf │ └── turns_connected.graph ├── tools/ │ ├── build_and_upload.sh │ ├── graph.grammar │ └── storePerformanceTest.php ├── version.h └── version_defs.h.in
Copy disabled (too large)
Download .txt
Showing preview only (20,118K chars total). Download the full file to get everything.
SYMBOL INDEX (4189 symbols across 273 files)
FILE: GuiUnitTest/testsettings.cpp
class TestSettingsFactory (line 21) | class TestSettingsFactory : public QSettingsFactory
method TestSettingsFactory (line 24) | TestSettingsFactory(const QString &filename) : mFilename(filename)
method getSettings (line 26) | virtual std::unique_ptr<QSettings> getSettings() const
FILE: RegressionTest/RegressionTestRunner.py
class RegressionTestRunner (line 10) | class RegressionTestRunner():
method __init__ (line 11) | def __init__(self, configfile, runfunc):
method run (line 19) | def run(self):
FILE: RegressionTest/cmdlinewrapper.py
class CommandLineError (line 1) | class CommandLineError(Exception):
method __init__ (line 2) | def __init__(self, message):
class DepthmapCmd (line 6) | class DepthmapCmd():
method __init__ (line 7) | def __init__(self):
method toCmdArray (line 16) | def toCmdArray(self):
FILE: RegressionTest/config.py
class ConfigError (line 7) | class ConfigError(Exception):
method __init__ (line 8) | def __init__(self, message):
function buildCmd (line 11) | def buildCmd(testcaseSet):
class RegressionConfig (line 24) | class RegressionConfig():
method __init__ (line 25) | def __init__(self, filename):
FILE: RegressionTest/depthmaprunner.py
class DepthmapRunner (line 9) | class DepthmapRunner():
method __init__ (line 10) | def __init__(self, runFunc, binary ):
method runDepthmap (line 14) | def runDepthmap(self, cmdWrapper, runDir):
function diffBinaryFiles (line 19) | def diffBinaryFiles(file1, file2):
class DepthmapRegressionRunner (line 27) | class DepthmapRegressionRunner():
method __init__ (line 28) | def __init__(self, runFunc, baseBinary, testBinary, workingDir):
method makeBaseDir (line 33) | def makeBaseDir(self, name):
method makeTestDir (line 36) | def makeTestDir(self, name):
method runTestCase (line 39) | def runTestCase(self, name, cmds):
method runTestCaseImpl (line 44) | def runTestCaseImpl(self, name, cmds):
FILE: RegressionTest/performanceregressionconfig.py
class PerformanceRegressionConfig (line 3) | class PerformanceRegressionConfig:
method __init__ (line 17) | def __init__(self, perfConfig):
FILE: RegressionTest/performancerunner.py
function checkPerformance (line 11) | def checkPerformance(baseFile, testFile, relativeThreshold, absoluteThre...
function aggregatePerformanceStats (line 61) | def aggregatePerformanceStats(dir, numRuns, numCmds, filenameTemplate ):
class PerformanceRunner (line 86) | class PerformanceRunner(depthmaprunner.DepthmapRegressionRunner):
method __init__ (line 87) | def __init__(self, runFunc, baseBinary, testBinary, workingDir, perfC...
method runTestCase (line 91) | def runTestCase(self, name, cmds):
FILE: RegressionTest/runhelpers.py
function runTest (line 6) | def runTest():
class cd (line 9) | class cd:
method __init__ (line 11) | def __init__(self, newPath):
method __enter__ (line 14) | def __enter__(self):
method __exit__ (line 18) | def __exit__(self, etype, value, traceback):
function prepareDirectory (line 22) | def prepareDirectory(dirname):
function runExecutable (line 27) | def runExecutable( workingDir, arguments ):
function getExecutable (line 41) | def getExecutable(basedir):
function getTestExecutable (line 48) | def getTestExecutable(basedir):
FILE: RegressionTest/test/disposablefile.py
class DisposableFile (line 4) | class DisposableFile:
method __init__ (line 5) | def __init__( self, filename ):
method __enter__ (line 8) | def __enter__(self):
method __exit__ (line 11) | def __exit__(self, exc_type, exc_value, traceback):
method filename (line 15) | def filename(self):
class DisposableDirectoryError (line 18) | class DisposableDirectoryError(Exception):
method __init__ (line 19) | def __init__(self, message):
class DisposableDirectory (line 22) | class DisposableDirectory:
method __init__ (line 23) | def __init__(self, directoryName, create = False):
method __enter__ (line 32) | def __enter__(self):
method __exit__ (line 35) | def __exit__(self, exc_type, exc_value, backtrace):
method name (line 39) | def name(self):
FILE: RegressionTest/test/fail/test_fail.py
class TestFailure (line 3) | class TestFailure(unittest.TestCase):
method test_fail_this (line 7) | def test_fail_this(self):
FILE: RegressionTest/test/pass/test_pass.py
class TestFailure (line 3) | class TestFailure(unittest.TestCase):
method test_fail_this (line 7) | def test_fail_this(self):
FILE: RegressionTest/test/test_RegressionTestRunner.py
class TestRegressionTestRunner (line 7) | class TestRegressionTestRunner(unittest.TestCase):
method runfunc (line 8) | def runfunc(self, workingdir, args):
method test_RegressionTestRunnerAllGoesWell (line 22) | def test_RegressionTestRunnerAllGoesWell(self):
method test_RegressionTestRunnerOneRunFails (line 29) | def test_RegressionTestRunnerOneRunFails(self):
FILE: RegressionTest/test/test_cmdlinewrapper.py
class TestDepthmapCmd (line 6) | class TestDepthmapCmd(unittest.TestCase):
method test_correctBehaviour (line 7) | def test_correctBehaviour(self):
method test_exceptions (line 17) | def test_exceptions(self):
method test_extraArgs (line 31) | def test_extraArgs(self):
FILE: RegressionTest/test/test_config.py
function writeConfig (line 7) | def writeConfig(filename, rundir):
class TestMethods (line 23) | class TestMethods(unittest.TestCase):
method test_buildCmd (line 24) | def test_buildCmd(self):
method test_configClass (line 33) | def test_configClass(self):
class TestRealConfig (line 42) | class TestRealConfig(unittest.TestCase):
method test_realConfig (line 43) | def test_realConfig(self):
FILE: RegressionTest/test/test_depthmaprunner.py
class BinaryDiffTest (line 9) | class BinaryDiffTest(unittest.TestCase):
method test_binaryDiff (line 10) | def test_binaryDiff(self):
class DepthmapRunnerTest (line 22) | class DepthmapRunnerTest(unittest.TestCase):
method runfunc (line 23) | def runfunc(self, rundir, args):
method testDepthmapRunner (line 27) | def testDepthmapRunner(self):
class DepthmapRegressioRunnerTest (line 40) | class DepthmapRegressioRunnerTest(unittest.TestCase):
method getOutfile (line 41) | def getOutfile(self, args):
method getTimingsFile (line 50) | def getTimingsFile(self,args):
method runfuncSucceedAlwaysSame (line 59) | def runfuncSucceedAlwaysSame(self, rundir, args):
method runfuncDifferentResults (line 69) | def runfuncDifferentResults(self, rundir, args):
method runfuncWriteNoFile (line 76) | def runfuncWriteNoFile(self, rundir, args, dontWriteFor):
method runfuncFail (line 83) | def runfuncFail(self, rundir, args, failFor, shouldOtherRun):
method makeCommand (line 95) | def makeCommand(self, infile, outfile, mode):
method testSuccessfullRun (line 103) | def testSuccessfullRun(self):
method testRunWithDiff (line 109) | def testRunWithDiff(self):
method testBaseRunOutputMissing (line 117) | def testBaseRunOutputMissing(self):
method testTestRunOutputMissing (line 124) | def testTestRunOutputMissing(self):
method testBaseRunFail (line 131) | def testBaseRunFail(self):
method testTestRunFail (line 138) | def testTestRunFail(self):
FILE: RegressionTest/test/test_disposablefile.py
class TestDisposableFile (line 5) | class TestDisposableFile(unittest.TestCase):
method testFileDeletion (line 6) | def testFileDeletion(self):
class TestDisposableDirectory (line 15) | class TestDisposableDirectory(unittest.TestCase):
method testLifetime (line 16) | def testLifetime(self):
method testNotAutomaticallyCreated (line 26) | def testNotAutomaticallyCreated(self):
method testNeverCreated (line 38) | def testNeverCreated(self):
method testExceptions (line 44) | def testExceptions(self):
FILE: RegressionTest/test/test_performanceregressionconfig.py
class TestDisabledConfig (line 6) | class TestDisabledConfig(unittest.TestCase):
method test_missingConfig (line 7) | def test_missingConfig(self):
method test_disabledConfig (line 11) | def test_disabledConfig(self):
class TestSuccessfulConfig (line 21) | class TestSuccessfulConfig(unittest.TestCase):
method test_defaultValues (line 22) | def test_defaultValues(self):
method test_overrideValues (line 29) | def test_overrideValues(self):
FILE: RegressionTest/test/test_performancerunner.py
class PerformanceCheckTest (line 12) | class PerformanceCheckTest(unittest.TestCase):
method test_filesMissing (line 13) | def test_filesMissing(self):
method test_fileLineNumberMismatch (line 29) | def test_fileLineNumberMismatch(self):
method test_fileLabelMismatch (line 46) | def test_fileLabelMismatch(self):
method test_successfulRunEmptyFile (line 55) | def test_successfulRunEmptyFile(self):
method test_successfulRun (line 64) | def test_successfulRun(self):
method test_performanceRegression (line 73) | def test_performanceRegression(self):
class test_PerformanceAggregation (line 82) | class test_PerformanceAggregation(unittest.TestCase):
method test_aggregation (line 83) | def test_aggregation(self):
class test_PerformanceRunner (line 115) | class test_PerformanceRunner(test_depthmaprunner.DepthmapRegressioRunner...
method testSuccessfullRun (line 116) | def testSuccessfullRun(self):
FILE: RegressionTest/test/test_runhelpers.py
class TestRunHelpers (line 8) | class TestRunHelpers(unittest.TestCase):
method test_prepareDirectory (line 9) | def test_prepareDirectory(self):
method test_cd (line 20) | def test_cd(self):
method test_getBinary (line 27) | def test_getBinary(self):
method test_getTestBinary (line 35) | def test_getTestBinary(self):
method test_runExecutable (line 44) | def test_runExecutable(self):
method test_runExecutableFail (line 50) | def test_runExecutableFail(self):
method test_runExecutableException (line 57) | def test_runExecutableException(self):
FILE: RegressionTest/test/test_test_main.py
class TestUnitTestMain (line 6) | class TestUnitTestMain(unittest.TestCase):
method test_capture_pass (line 7) | def test_capture_pass(self):
method test_capture_fail (line 15) | def test_capture_fail(self):
FILE: ThirdParty/Catch/catch.hpp
type Catch (line 328) | namespace Catch {
type IConfig (line 330) | struct IConfig
type CaseSensitive (line 332) | struct CaseSensitive { enum Choice {
type Choice (line 332) | enum Choice {
class NonCopyable (line 337) | class NonCopyable {
method NonCopyable (line 339) | NonCopyable( NonCopyable const& ) = delete;
method NonCopyable (line 340) | NonCopyable( NonCopyable && ) = delete;
method NonCopyable (line 341) | NonCopyable& operator = ( NonCopyable const& ) = delete;
method NonCopyable (line 342) | NonCopyable& operator = ( NonCopyable && ) = delete;
method NonCopyable (line 349) | NonCopyable() {}
class SafeBool (line 353) | class SafeBool {
method type (line 357) | static type makeSafe( bool value ) {
method trueValue (line 361) | void trueValue() const {}
function deleteAll (line 365) | inline void deleteAll( ContainerT& container ) {
function deleteAllValues (line 372) | inline void deleteAllValues( AssociativeContainerT& container ) {
type pluralise (line 387) | struct pluralise {
type SourceLineInfo (line 396) | struct SourceLineInfo {
method SourceLineInfo (line 402) | SourceLineInfo( SourceLineInfo && ) = default;
method SourceLineInfo (line 403) | SourceLineInfo& operator = ( SourceLineInfo const& ) = default;
method SourceLineInfo (line 404) | SourceLineInfo& operator = ( SourceLineInfo && ) = default;
function alwaysTrue (line 417) | inline bool alwaysTrue( std::size_t = 0 ) { return true; }
function alwaysFalse (line 418) | inline bool alwaysFalse( std::size_t = 0 ) { return false; }
type StreamEndStop (line 429) | struct StreamEndStop {
function T (line 435) | T const& operator + ( T const& value, StreamEndStop ) {
class NotImplementedException (line 447) | class NotImplementedException : public std::exception
method NotImplementedException (line 451) | NotImplementedException( NotImplementedException const& ) {}
type IGeneratorInfo (line 477) | struct IGeneratorInfo {
type IGeneratorsForTest (line 483) | struct IGeneratorsForTest {
class Ptr (line 508) | class Ptr {
method Ptr (line 510) | Ptr() : m_p( CATCH_NULL ){}
method Ptr (line 511) | Ptr( T* p ) : m_p( p ){
method Ptr (line 515) | Ptr( Ptr const& other ) : m_p( other.m_p ){
method reset (line 523) | void reset() {
method Ptr (line 528) | Ptr& operator = ( T* p ){
method Ptr (line 533) | Ptr& operator = ( Ptr const& other ){
method swap (line 538) | void swap( Ptr& other ) { std::swap( m_p, other.m_p ); }
method T (line 539) | T* get() const{ return m_p; }
method T (line 540) | T& operator*() const { return *m_p; }
method T (line 541) | T* operator->() const { return m_p; }
type IShared (line 549) | struct IShared : NonCopyable {
type SharedImpl (line 556) | struct SharedImpl : T {
method SharedImpl (line 558) | SharedImpl() : m_rc( 0 ){}
method addRef (line 560) | virtual void addRef() const {
method release (line 563) | virtual void release() const {
class TestCase (line 583) | class TestCase
class Stream (line 584) | class Stream
type IResultCapture (line 585) | struct IResultCapture
type IRunner (line 586) | struct IRunner
type IGeneratorsForTest (line 587) | struct IGeneratorsForTest
type IConfig (line 588) | struct IConfig
type IContext (line 590) | struct IContext
type IMutableContext (line 601) | struct IMutableContext : IContext
class TestSpec (line 626) | class TestSpec
type Pattern (line 3232) | struct Pattern : SharedImpl<> {
class NamePattern (line 3236) | class NamePattern : public Pattern {
method NamePattern (line 3238) | NamePattern( std::string const& name )
method matches (line 3242) | virtual bool matches( TestCaseInfo const& testCase ) const {
class TagPattern (line 3249) | class TagPattern : public Pattern {
method TagPattern (line 3251) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
method matches (line 3253) | virtual bool matches( TestCaseInfo const& testCase ) const {
class ExcludedPattern (line 3260) | class ExcludedPattern : public Pattern {
method ExcludedPattern (line 3262) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
method matches (line 3264) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
type Filter (line 3269) | struct Filter {
method matches (line 3272) | bool matches( TestCaseInfo const& testCase ) const {
method hasFilters (line 3283) | bool hasFilters() const {
method matches (line 3286) | bool matches( TestCaseInfo const& testCase ) const {
type ITestCase (line 628) | struct ITestCase : IShared {
class TestCase (line 634) | class TestCase
type IConfig (line 635) | struct IConfig
type ITestCaseRegistry (line 637) | struct ITestCaseRegistry {
class MethodTestCase (line 652) | class MethodTestCase : public SharedImpl<ITestCase> {
method MethodTestCase (line 655) | MethodTestCase( void (C::*method)() ) : m_method( method ) {}
method invoke (line 657) | virtual void invoke() const {
type NameAndDesc (line 670) | struct NameAndDesc {
method NameAndDesc (line 671) | NameAndDesc( const char* _name = "", const char* _description= "" )
type AutoReg (line 685) | struct AutoReg {
method AutoReg (line 693) | AutoReg
type ResultWas (line 791) | struct ResultWas { enum OfType {
type OfType (line 791) | enum OfType {
function isOk (line 811) | inline bool isOk( ResultWas::OfType resultType ) {
function isJustInfo (line 814) | inline bool isJustInfo( int flags ) {
type ResultDisposition (line 819) | struct ResultDisposition { enum Flags {
type Flags (line 819) | enum Flags {
function shouldContinueOnFailure (line 831) | inline bool shouldContinueOnFailure( int flags ) { return ( flags &...
function isFalseTest (line 832) | inline bool isFalseTest( int flags ) { return ( flags &...
function shouldSuppressFailure (line 833) | inline bool shouldSuppressFailure( int flags ) { return ( flags &...
type AssertionInfo (line 844) | struct AssertionInfo
method AssertionInfo (line 846) | AssertionInfo() {}
type AssertionResultData (line 858) | struct AssertionResultData
method AssertionResultData (line 860) | AssertionResultData() : resultType( ResultWas::Unknown ) {}
class AssertionResult (line 867) | class AssertionResult {
method AssertionResult (line 873) | AssertionResult( AssertionResult const& ) = default;
method AssertionResult (line 874) | AssertionResult( AssertionResult && ) = default;
method AssertionResult (line 875) | AssertionResult& operator = ( AssertionResult const& ) = default;
method AssertionResult (line 876) | AssertionResult& operator = ( AssertionResult && ) = default;
type Matchers (line 903) | namespace Matchers {
type Impl (line 904) | namespace Impl {
type Generic (line 906) | namespace Generic {
class AllOf (line 907) | class AllOf
method AllOf (line 957) | AllOf() {}
method AllOf (line 958) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
method AllOf (line 960) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 964) | virtual bool match( ExpressionT const& expr ) const
method toString (line 971) | virtual std::string toString() const {
method AllOf (line 983) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
class AnyOf (line 908) | class AnyOf
method AnyOf (line 997) | AnyOf() {}
method AnyOf (line 998) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
method AnyOf (line 1000) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 1004) | virtual bool match( ExpressionT const& expr ) const
method toString (line 1011) | virtual std::string toString() const {
method AnyOf (line 1023) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
class Not (line 909) | class Not
method Not (line 939) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
method Not (line 940) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
method match (line 942) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
method toString (line 946) | virtual std::string toString() const CATCH_OVERRIDE {
class Not (line 937) | class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> {
method Not (line 939) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
method Not (line 940) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
method match (line 942) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
method toString (line 946) | virtual std::string toString() const CATCH_OVERRIDE {
class AllOf (line 954) | class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> {
method AllOf (line 957) | AllOf() {}
method AllOf (line 958) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
method AllOf (line 960) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 964) | virtual bool match( ExpressionT const& expr ) const
method toString (line 971) | virtual std::string toString() const {
method AllOf (line 983) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
class AnyOf (line 994) | class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> {
method AnyOf (line 997) | AnyOf() {}
method AnyOf (line 998) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
method AnyOf (line 1000) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 1004) | virtual bool match( ExpressionT const& expr ) const
method toString (line 1011) | virtual std::string toString() const {
method AnyOf (line 1023) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
type Matcher (line 913) | struct Matcher : SharedImpl<IShared>
type MatcherImpl (line 928) | struct MatcherImpl : Matcher<ExpressionT> {
method clone (line 930) | virtual Ptr<Matcher<ExpressionT> > clone() const {
type Generic (line 935) | namespace Generic {
class AllOf (line 907) | class AllOf
method AllOf (line 957) | AllOf() {}
method AllOf (line 958) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
method AllOf (line 960) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 964) | virtual bool match( ExpressionT const& expr ) const
method toString (line 971) | virtual std::string toString() const {
method AllOf (line 983) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
class AnyOf (line 908) | class AnyOf
method AnyOf (line 997) | AnyOf() {}
method AnyOf (line 998) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
method AnyOf (line 1000) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 1004) | virtual bool match( ExpressionT const& expr ) const
method toString (line 1011) | virtual std::string toString() const {
method AnyOf (line 1023) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
class Not (line 909) | class Not
method Not (line 939) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
method Not (line 940) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
method match (line 942) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
method toString (line 946) | virtual std::string toString() const CATCH_OVERRIDE {
class Not (line 937) | class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> {
method Not (line 939) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
method Not (line 940) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
method match (line 942) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
method toString (line 946) | virtual std::string toString() const CATCH_OVERRIDE {
class AllOf (line 954) | class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> {
method AllOf (line 957) | AllOf() {}
method AllOf (line 958) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
method AllOf (line 960) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 964) | virtual bool match( ExpressionT const& expr ) const
method toString (line 971) | virtual std::string toString() const {
method AllOf (line 983) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
class AnyOf (line 994) | class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> {
method AnyOf (line 997) | AnyOf() {}
method AnyOf (line 998) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
method AnyOf (line 1000) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 1004) | virtual bool match( ExpressionT const& expr ) const
method toString (line 1011) | virtual std::string toString() const {
method AnyOf (line 1023) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
type StdString (line 1056) | namespace StdString {
function makeString (line 1058) | inline std::string makeString( std::string const& str ) { return...
function makeString (line 1059) | inline std::string makeString( const char* str ) { return str ? ...
type CasedString (line 1061) | struct CasedString
method CasedString (line 1063) | CasedString( std::string const& str, CaseSensitive::Choice cas...
method adjustString (line 1067) | std::string adjustString( std::string const& str ) const {
method toStringSuffix (line 1073) | std::string toStringSuffix() const
type Equals (line 1083) | struct Equals : MatcherImpl<Equals, std::string> {
method Equals (line 1084) | Equals( std::string const& str, CaseSensitive::Choice caseSens...
method Equals (line 1087) | Equals( Equals const& other ) : m_data( other.m_data ){}
method match (line 1091) | virtual bool match( std::string const& expr ) const {
method toString (line 1094) | virtual std::string toString() const {
type Contains (line 1101) | struct Contains : MatcherImpl<Contains, std::string> {
method Contains (line 1102) | Contains( std::string const& substr, CaseSensitive::Choice cas...
method Contains (line 1104) | Contains( Contains const& other ) : m_data( other.m_data ){}
method match (line 1108) | virtual bool match( std::string const& expr ) const {
method toString (line 1111) | virtual std::string toString() const {
type StartsWith (line 1118) | struct StartsWith : MatcherImpl<StartsWith, std::string> {
method StartsWith (line 1119) | StartsWith( std::string const& substr, CaseSensitive::Choice c...
method StartsWith (line 1122) | StartsWith( StartsWith const& other ) : m_data( other.m_data ){}
method match (line 1126) | virtual bool match( std::string const& expr ) const {
method toString (line 1129) | virtual std::string toString() const {
type EndsWith (line 1136) | struct EndsWith : MatcherImpl<EndsWith, std::string> {
method EndsWith (line 1137) | EndsWith( std::string const& substr, CaseSensitive::Choice cas...
method EndsWith (line 1139) | EndsWith( EndsWith const& other ) : m_data( other.m_data ){}
method match (line 1143) | virtual bool match( std::string const& expr ) const {
method toString (line 1146) | virtual std::string toString() const {
function Not (line 1158) | inline Impl::Generic::Not<ExpressionT> Not( Impl::Matcher<Expression...
function AllOf (line 1163) | inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<Expres...
function AllOf (line 1168) | inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<Expres...
function AnyOf (line 1174) | inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<Expres...
function AnyOf (line 1179) | inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<Expres...
function Equals (line 1185) | inline Impl::StdString::Equals Equals( std::string const& str, ...
function Equals (line 1188) | inline Impl::StdString::Equals Equals( const char* str, CaseSen...
function Contains (line 1191) | inline Impl::StdString::Contains Contains( std::string const& sub...
function Contains (line 1194) | inline Impl::StdString::Contains Contains( const char* substr, Ca...
function StartsWith (line 1197) | inline Impl::StdString::StartsWith StartsWith( std::string const& s...
function StartsWith (line 1200) | inline Impl::StdString::StartsWith StartsWith( const char* substr ) {
function EndsWith (line 1203) | inline Impl::StdString::EndsWith EndsWith( std::string const& sub...
function EndsWith (line 1206) | inline Impl::StdString::EndsWith EndsWith( const char* substr ) {
type TestFailureException (line 1218) | struct TestFailureException{}
class ExpressionLhs (line 1220) | class ExpressionLhs
method ExpressionLhs (line 1814) | ExpressionLhs& operator = ( ExpressionLhs && ) = delete;
method ExpressionLhs (line 1818) | ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {}
method ExpressionLhs (line 1820) | ExpressionLhs( ExpressionLhs const& ) = default;
method ExpressionLhs (line 1821) | ExpressionLhs( ExpressionLhs && ) = default;
method ResultBuilder (line 1825) | ResultBuilder& operator == ( RhsT const& rhs ) {
method ResultBuilder (line 1830) | ResultBuilder& operator != ( RhsT const& rhs ) {
method ResultBuilder (line 1835) | ResultBuilder& operator < ( RhsT const& rhs ) {
method ResultBuilder (line 1840) | ResultBuilder& operator > ( RhsT const& rhs ) {
method ResultBuilder (line 1845) | ResultBuilder& operator <= ( RhsT const& rhs ) {
method ResultBuilder (line 1850) | ResultBuilder& operator >= ( RhsT const& rhs ) {
method ResultBuilder (line 1854) | ResultBuilder& operator == ( bool rhs ) {
method ResultBuilder (line 1858) | ResultBuilder& operator != ( bool rhs ) {
method endExpression (line 1862) | void endExpression() {
method ResultBuilder (line 1881) | ResultBuilder& captureExpression( RhsT const& rhs ) {
type STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison (line 1222) | struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_C...
type CopyableStream (line 1224) | struct CopyableStream {
method CopyableStream (line 1225) | CopyableStream() {}
method CopyableStream (line 1226) | CopyableStream( CopyableStream const& other ) {
method CopyableStream (line 1229) | CopyableStream& operator=( CopyableStream const& other ) {
class ResultBuilder (line 1237) | class ResultBuilder {
method ResultBuilder (line 1250) | ResultBuilder& operator << ( T const& value ) {
type ExprComponents (line 1282) | struct ExprComponents {
method ExprComponents (line 1283) | ExprComponents() : testFalse( false ) {}
type Internal (line 1310) | namespace Internal {
type Operator (line 1312) | enum Operator {
type OperatorTraits (line 1321) | struct OperatorTraits { static const char* getName(){ re...
type OperatorTraits<IsEqualTo> (line 1322) | struct OperatorTraits<IsEqualTo> { static const char* ge...
type OperatorTraits<IsNotEqualTo> (line 1323) | struct OperatorTraits<IsNotEqualTo> { static const char* ge...
type OperatorTraits<IsLessThan> (line 1324) | struct OperatorTraits<IsLessThan> { static const char* ge...
type OperatorTraits<IsGreaterThan> (line 1325) | struct OperatorTraits<IsGreaterThan> { static const char* ge...
type OperatorTraits<IsLessThanOrEqualTo> (line 1326) | struct OperatorTraits<IsLessThanOrEqualTo> { static const char* ge...
type OperatorTraits<IsGreaterThanOrEqualTo> (line 1327) | struct OperatorTraits<IsGreaterThanOrEqualTo>{ static const char* ge...
function T (line 1330) | inline T& opCast(T const& t) { return const_cast<T&>(t); }
function opCast (line 1334) | inline std::nullptr_t opCast(std::nullptr_t) { return nullptr; }
class Evaluator (line 1340) | class Evaluator{}
type Evaluator<T1, T2, IsEqualTo> (line 1343) | struct Evaluator<T1, T2, IsEqualTo> {
method evaluate (line 1344) | static bool evaluate( T1 const& lhs, T2 const& rhs) {
type Evaluator<T1, T2, IsNotEqualTo> (line 1349) | struct Evaluator<T1, T2, IsNotEqualTo> {
method evaluate (line 1350) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
type Evaluator<T1, T2, IsLessThan> (line 1355) | struct Evaluator<T1, T2, IsLessThan> {
method evaluate (line 1356) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
type Evaluator<T1, T2, IsGreaterThan> (line 1361) | struct Evaluator<T1, T2, IsGreaterThan> {
method evaluate (line 1362) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
type Evaluator<T1, T2, IsGreaterThanOrEqualTo> (line 1367) | struct Evaluator<T1, T2, IsGreaterThanOrEqualTo> {
method evaluate (line 1368) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
type Evaluator<T1, T2, IsLessThanOrEqualTo> (line 1373) | struct Evaluator<T1, T2, IsLessThanOrEqualTo> {
method evaluate (line 1374) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
function applyEvaluator (line 1380) | bool applyEvaluator( T1 const& lhs, T2 const& rhs ) {
function compare (line 1389) | bool compare( T1 const& lhs, T2 const& rhs ) {
function compare (line 1394) | bool compare( unsigned int lhs, int rhs ) {
function compare (line 1397) | bool compare( unsigned long lhs, int rhs ) {
function compare (line 1400) | bool compare( unsigned char lhs, int rhs ) {
function compare (line 1405) | bool compare( unsigned int lhs, long rhs ) {
function compare (line 1408) | bool compare( unsigned long lhs, long rhs ) {
function compare (line 1411) | bool compare( unsigned char lhs, long rhs ) {
function compare (line 1416) | bool compare( int lhs, unsigned int rhs ) {
function compare (line 1419) | bool compare( int lhs, unsigned long rhs ) {
function compare (line 1422) | bool compare( int lhs, unsigned char rhs ) {
function compare (line 1427) | bool compare( long lhs, unsigned int rhs ) {
function compare (line 1430) | bool compare( long lhs, unsigned long rhs ) {
function compare (line 1433) | bool compare( long lhs, unsigned char rhs ) {
function compare (line 1438) | bool compare( long lhs, T* rhs ) {
function compare (line 1441) | bool compare( T* lhs, long rhs ) {
function compare (line 1446) | bool compare( int lhs, T* rhs ) {
function compare (line 1449) | bool compare( T* lhs, int rhs ) {
function compare (line 1455) | bool compare( long long lhs, unsigned int rhs ) {
function compare (line 1458) | bool compare( long long lhs, unsigned long rhs ) {
function compare (line 1461) | bool compare( long long lhs, unsigned long long rhs ) {
function compare (line 1464) | bool compare( long long lhs, unsigned char rhs ) {
function compare (line 1469) | bool compare( unsigned long long lhs, int rhs ) {
function compare (line 1472) | bool compare( unsigned long long lhs, long rhs ) {
function compare (line 1475) | bool compare( unsigned long long lhs, long long rhs ) {
function compare (line 1478) | bool compare( unsigned long long lhs, char rhs ) {
function compare (line 1483) | bool compare( long long lhs, T* rhs ) {
function compare (line 1486) | bool compare( T* lhs, long long rhs ) {
function compare (line 1493) | bool compare( std::nullptr_t, T* rhs ) {
function compare (line 1496) | bool compare( T* lhs, std::nullptr_t ) {
type Detail (line 1610) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
type StringMaker (line 1687) | struct StringMaker :
type StringMaker<T*> (line 1691) | struct StringMaker<T*> {
method convert (line 1693) | static std::string convert( U* p ) {
type StringMaker<R C::*> (line 1702) | struct StringMaker<R C::*> {
method convert (line 1703) | static std::string convert( R C::* p ) {
type Detail (line 1711) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
function toString (line 1724) | std::string toString( std::vector<T,Allocator> const& v ) {
type TupleDetail (line 1731) | namespace TupleDetail {
type ElementPrinter (line 1737) | struct ElementPrinter {
method print (line 1738) | static void print( const Tuple& tuple, std::ostream& os )
type ElementPrinter<Tuple,N,false> (line 1750) | struct ElementPrinter<Tuple,N,false> {
method print (line 1751) | static void print( const Tuple&, std::ostream& ) {}
type Detail (line 1770) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
function toString (line 1785) | std::string toString( T const& value ) {
type Detail (line 1789) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
class ExpressionLhs (line 1811) | class ExpressionLhs {
method ExpressionLhs (line 1814) | ExpressionLhs& operator = ( ExpressionLhs && ) = delete;
method ExpressionLhs (line 1818) | ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {}
method ExpressionLhs (line 1820) | ExpressionLhs( ExpressionLhs const& ) = default;
method ExpressionLhs (line 1821) | ExpressionLhs( ExpressionLhs && ) = default;
method ResultBuilder (line 1825) | ResultBuilder& operator == ( RhsT const& rhs ) {
method ResultBuilder (line 1830) | ResultBuilder& operator != ( RhsT const& rhs ) {
method ResultBuilder (line 1835) | ResultBuilder& operator < ( RhsT const& rhs ) {
method ResultBuilder (line 1840) | ResultBuilder& operator > ( RhsT const& rhs ) {
method ResultBuilder (line 1845) | ResultBuilder& operator <= ( RhsT const& rhs ) {
method ResultBuilder (line 1850) | ResultBuilder& operator >= ( RhsT const& rhs ) {
method ResultBuilder (line 1854) | ResultBuilder& operator == ( bool rhs ) {
method ResultBuilder (line 1858) | ResultBuilder& operator != ( bool rhs ) {
method endExpression (line 1862) | void endExpression() {
method ResultBuilder (line 1881) | ResultBuilder& captureExpression( RhsT const& rhs ) {
type MessageInfo (line 1917) | struct MessageInfo {
type MessageBuilder (line 1938) | struct MessageBuilder {
method MessageBuilder (line 1939) | MessageBuilder( std::string const& macroName,
method MessageBuilder (line 1946) | MessageBuilder& operator << ( T const& value ) {
class ScopedMessage (line 1955) | class ScopedMessage {
class TestCase (line 1973) | class TestCase
class AssertionResult (line 1974) | class AssertionResult
method AssertionResult (line 873) | AssertionResult( AssertionResult const& ) = default;
method AssertionResult (line 874) | AssertionResult( AssertionResult && ) = default;
method AssertionResult (line 875) | AssertionResult& operator = ( AssertionResult const& ) = default;
method AssertionResult (line 876) | AssertionResult& operator = ( AssertionResult && ) = default;
type AssertionInfo (line 1975) | struct AssertionInfo
method AssertionInfo (line 846) | AssertionInfo() {}
type SectionInfo (line 1976) | struct SectionInfo
type SectionEndInfo (line 1977) | struct SectionEndInfo
method SectionEndInfo (line 2298) | SectionEndInfo( SectionInfo const& _sectionInfo, Counts const& _prev...
type MessageInfo (line 1978) | struct MessageInfo
class ScopedMessageBuilder (line 1979) | class ScopedMessageBuilder
type Counts (line 1980) | struct Counts
method Counts (line 2222) | Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {}
method Counts (line 2224) | Counts operator - ( Counts const& other ) const {
method Counts (line 2231) | Counts& operator += ( Counts const& other ) {
method total (line 2238) | std::size_t total() const {
method allPassed (line 2241) | bool allPassed() const {
method allOk (line 2244) | bool allOk() const {
type IResultCapture (line 1982) | struct IResultCapture {
class TestCase (line 2075) | class TestCase
type IRunner (line 2077) | struct IRunner {
type Counts (line 2221) | struct Counts {
method Counts (line 2222) | Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {}
method Counts (line 2224) | Counts operator - ( Counts const& other ) const {
method Counts (line 2231) | Counts& operator += ( Counts const& other ) {
method total (line 2238) | std::size_t total() const {
method allPassed (line 2241) | bool allPassed() const {
method allOk (line 2244) | bool allOk() const {
type Totals (line 2253) | struct Totals {
method Totals (line 2255) | Totals operator - ( Totals const& other ) const {
method Totals (line 2262) | Totals delta( Totals const& prevTotals ) const {
method Totals (line 2273) | Totals& operator += ( Totals const& other ) {
type SectionInfo (line 2286) | struct SectionInfo {
type SectionEndInfo (line 2297) | struct SectionEndInfo {
method SectionEndInfo (line 2298) | SectionEndInfo( SectionInfo const& _sectionInfo, Counts const& _prev...
class Timer (line 2320) | class Timer {
method Timer (line 2322) | Timer() : m_ticks( 0 ) {}
class Section (line 2338) | class Section : NonCopyable {
type IGenerator (line 2376) | struct IGenerator {
class BetweenGenerator (line 2383) | class BetweenGenerator : public IGenerator<T> {
method BetweenGenerator (line 2385) | BetweenGenerator( T from, T to ) : m_from( from ), m_to( to ){}
method T (line 2387) | virtual T getValue( std::size_t index ) const {
method size (line 2391) | virtual std::size_t size() const {
class ValuesGenerator (line 2402) | class ValuesGenerator : public IGenerator<T> {
method ValuesGenerator (line 2404) | ValuesGenerator(){}
method add (line 2406) | void add( T value ) {
method T (line 2410) | virtual T getValue( std::size_t index ) const {
method size (line 2414) | virtual std::size_t size() const {
class CompositeGenerator (line 2423) | class CompositeGenerator {
method CompositeGenerator (line 2425) | CompositeGenerator() : m_totalSize( 0 ) {}
method CompositeGenerator (line 2428) | CompositeGenerator( CompositeGenerator& other )
method CompositeGenerator (line 2435) | CompositeGenerator& setFileInfo( const char* fileInfo ) {
method add (line 2462) | void add( const IGenerator<T>* generator ) {
method CompositeGenerator (line 2467) | CompositeGenerator& then( CompositeGenerator& other ) {
method CompositeGenerator (line 2472) | CompositeGenerator& then( T value ) {
method move (line 2481) | void move( CompositeGenerator& other ) {
type Generators (line 2492) | namespace Generators
function between (line 2495) | CompositeGenerator<T> between( T from, T to ) {
function values (line 2502) | CompositeGenerator<T> values( T val1, T val2 ) {
function values (line 2512) | CompositeGenerator<T> values( T val1, T val2, T val3 ){
function values (line 2523) | CompositeGenerator<T> values( T val1, T val2, T val3, T val4 ) {
class TestCase (line 2558) | class TestCase
type ITestCaseRegistry (line 2559) | struct ITestCaseRegistry
type IExceptionTranslatorRegistry (line 2560) | struct IExceptionTranslatorRegistry
type IExceptionTranslator (line 2561) | struct IExceptionTranslator
type IReporterRegistry (line 2562) | struct IReporterRegistry
type IReporterFactory (line 2563) | struct IReporterFactory
type IRegistryHub (line 2565) | struct IRegistryHub {
type IMutableRegistryHub (line 2573) | struct IMutableRegistryHub {
type IExceptionTranslator (line 2592) | struct IExceptionTranslator
type IExceptionTranslator (line 2595) | struct IExceptionTranslator {
type IExceptionTranslatorRegistry (line 2600) | struct IExceptionTranslatorRegistry {
class ExceptionTranslatorRegistrar (line 2606) | class ExceptionTranslatorRegistrar {
class ExceptionTranslator (line 2608) | class ExceptionTranslator : public IExceptionTranslator {
method ExceptionTranslator (line 2611) | ExceptionTranslator( std::string(*translateFunction)( T& ) )
method translate (line 2615) | virtual std::string translate( ExceptionTranslators::const_iterato...
method ExceptionTranslatorRegistrar (line 2633) | ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) {
type Detail (line 2655) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
type TagAlias (line 2759) | struct TagAlias {
method TagAlias (line 2760) | TagAlias( std::string _tag, SourceLineInfo _lineInfo ) : tag( _tag )...
type RegistrarForTagAliases (line 2766) | struct RegistrarForTagAliases {
class Option (line 2780) | class Option {
method Option (line 2782) | Option() : nullableValue( CATCH_NULL ) {}
method Option (line 2783) | Option( T const& _value )
method Option (line 2786) | Option( Option const& _other )
method Option (line 2794) | Option& operator= ( Option const& _other ) {
method Option (line 2802) | Option& operator = ( T const& _value ) {
method reset (line 2808) | void reset() {
method T (line 2814) | T& operator*() { return *nullableValue; }
method T (line 2815) | T const& operator*() const { return *nullableValue; }
method T (line 2816) | T* operator->() { return nullableValue; }
method T (line 2817) | const T* operator->() const { return nullableValue; }
method T (line 2819) | T valueOr( T const& defaultValue ) const {
method some (line 2823) | bool some() const { return nullableValue != CATCH_NULL; }
method none (line 2824) | bool none() const { return nullableValue == CATCH_NULL; }
type ITagAliasRegistry (line 2840) | struct ITagAliasRegistry {
type ITestCase (line 2865) | struct ITestCase
type TestCaseInfo (line 2867) | struct TestCaseInfo {
type SpecialProperties (line 2868) | enum SpecialProperties{
class TestCase (line 2901) | class TestCase : public TestCaseInfo {
class WildcardPattern (line 3170) | class WildcardPattern {
type WildcardPosition (line 3171) | enum WildcardPosition {
method WildcardPattern (line 3180) | WildcardPattern( std::string const& pattern, CaseSensitive::Choice c...
method matches (line 3195) | virtual bool matches( std::string const& str ) const {
method adjustCase (line 3217) | std::string adjustCase( std::string const& str ) const {
class TestSpec (line 3231) | class TestSpec {
type Pattern (line 3232) | struct Pattern : SharedImpl<> {
class NamePattern (line 3236) | class NamePattern : public Pattern {
method NamePattern (line 3238) | NamePattern( std::string const& name )
method matches (line 3242) | virtual bool matches( TestCaseInfo const& testCase ) const {
class TagPattern (line 3249) | class TagPattern : public Pattern {
method TagPattern (line 3251) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
method matches (line 3253) | virtual bool matches( TestCaseInfo const& testCase ) const {
class ExcludedPattern (line 3260) | class ExcludedPattern : public Pattern {
method ExcludedPattern (line 3262) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
method matches (line 3264) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
type Filter (line 3269) | struct Filter {
method matches (line 3272) | bool matches( TestCaseInfo const& testCase ) const {
method hasFilters (line 3283) | bool hasFilters() const {
method matches (line 3286) | bool matches( TestCaseInfo const& testCase ) const {
class TestSpecParser (line 3307) | class TestSpecParser {
type Mode (line 3308) | enum Mode{ None, Name, QuotedName, Tag, EscapedName }
method TestSpecParser (line 3319) | TestSpecParser( ITagAliasRegistry const& tagAliases ) : m_tagAliases...
method TestSpecParser (line 3321) | TestSpecParser& parse( std::string const& arg ) {
method TestSpec (line 3333) | TestSpec testSpec() {
method visitChar (line 3338) | void visitChar( char c ) {
method startNewMode (line 3371) | void startNewMode( Mode mode, std::size_t start ) {
method escape (line 3375) | void escape() {
method subString (line 3379) | std::string subString() const { return m_arg.substr( m_start, m_pos ...
method addPattern (line 3381) | void addPattern() {
method addFilter (line 3399) | void addFilter() {
function TestSpec (line 3406) | inline TestSpec parseTestSpec( std::string const& arg ) {
type Pattern (line 3232) | struct Pattern : SharedImpl<> {
class NamePattern (line 3236) | class NamePattern : public Pattern {
method NamePattern (line 3238) | NamePattern( std::string const& name )
method matches (line 3242) | virtual bool matches( TestCaseInfo const& testCase ) const {
class TagPattern (line 3249) | class TagPattern : public Pattern {
method TagPattern (line 3251) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
method matches (line 3253) | virtual bool matches( TestCaseInfo const& testCase ) const {
class ExcludedPattern (line 3260) | class ExcludedPattern : public Pattern {
method ExcludedPattern (line 3262) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
method matches (line 3264) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
type Filter (line 3269) | struct Filter {
method matches (line 3272) | bool matches( TestCaseInfo const& testCase ) const {
method hasFilters (line 3283) | bool hasFilters() const {
method matches (line 3286) | bool matches( TestCaseInfo const& testCase ) const {
type Verbosity (line 3425) | struct Verbosity { enum Level {
type Level (line 3425) | enum Level {
type WarnAbout (line 3431) | struct WarnAbout { enum What {
type What (line 3431) | enum What {
type ShowDurations (line 3436) | struct ShowDurations { enum OrNot {
type OrNot (line 3436) | enum OrNot {
type RunTests (line 3441) | struct RunTests { enum InWhatOrder {
type InWhatOrder (line 3441) | enum InWhatOrder {
type UseColour (line 3446) | struct UseColour { enum YesOrNo {
type YesOrNo (line 3446) | enum YesOrNo {
class TestSpec (line 3452) | class TestSpec
type Pattern (line 3232) | struct Pattern : SharedImpl<> {
class NamePattern (line 3236) | class NamePattern : public Pattern {
method NamePattern (line 3238) | NamePattern( std::string const& name )
method matches (line 3242) | virtual bool matches( TestCaseInfo const& testCase ) const {
class TagPattern (line 3249) | class TagPattern : public Pattern {
method TagPattern (line 3251) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
method matches (line 3253) | virtual bool matches( TestCaseInfo const& testCase ) const {
class ExcludedPattern (line 3260) | class ExcludedPattern : public Pattern {
method ExcludedPattern (line 3262) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
method matches (line 3264) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
type Filter (line 3269) | struct Filter {
method matches (line 3272) | bool matches( TestCaseInfo const& testCase ) const {
method hasFilters (line 3283) | bool hasFilters() const {
method matches (line 3286) | bool matches( TestCaseInfo const& testCase ) const {
type IConfig (line 3454) | struct IConfig : IShared {
class StreamBufBase (line 3484) | class StreamBufBase : public std::streambuf {
type IStream (line 3500) | struct IStream {
class FileStream (line 3505) | class FileStream : public IStream {
class CoutStream (line 3514) | class CoutStream : public IStream {
class DebugOutStream (line 3524) | class DebugOutStream : public IStream {
type ConfigData (line 3548) | struct ConfigData {
method ConfigData (line 3550) | ConfigData()
class Config (line 3599) | class Config : public SharedImpl<IConfig> {
method Config (line 3606) | Config()
method Config (line 3609) | Config( ConfigData const& data )
method listTests (line 3628) | bool listTests() const { return m_data.listTests; }
method listTestNamesOnly (line 3629) | bool listTestNamesOnly() const { return m_data.listTestNamesOnly; }
method listTags (line 3630) | bool listTags() const { return m_data.listTags; }
method listReporters (line 3631) | bool listReporters() const { return m_data.listReporters; }
method getProcessName (line 3633) | std::string getProcessName() const { return m_data.processName; }
method shouldDebugBreak (line 3635) | bool shouldDebugBreak() const { return m_data.shouldDebugBreak; }
method getReporterNames (line 3637) | std::vector<std::string> getReporterNames() const { return m_data.re...
method abortAfter (line 3639) | int abortAfter() const { return m_data.abortAfter; }
method TestSpec (line 3641) | TestSpec const& testSpec() const { return m_testSpec; }
method showHelp (line 3643) | bool showHelp() const { return m_data.showHelp; }
method showInvisibles (line 3644) | bool showInvisibles() const { return m_data.showInvisibles; }
method allowThrows (line 3647) | virtual bool allowThrows() const { return !m_data.noThrow; }
method name (line 3649) | virtual std::string name() const { return m_data.name.empty()...
method includeSuccessfulResults (line 3650) | virtual bool includeSuccessfulResults() const { return m_data.show...
method warnAboutMissingAssertions (line 3651) | virtual bool warnAboutMissingAssertions() const { return m_data.warn...
method showDurations (line 3652) | virtual ShowDurations::OrNot showDurations() const { return m_data.s...
method runOrder (line 3653) | virtual RunTests::InWhatOrder runOrder() const { return m_data.runO...
method rngSeed (line 3654) | virtual unsigned int rngSeed() const { return m_data.rngSeed; }
method useColour (line 3655) | virtual UseColour::YesOrNo useColour() const { return m_data.useColo...
method IStream (line 3659) | IStream const* openStream() {
function abortAfterFirst (line 4720) | inline void abortAfterFirst( ConfigData& config ) { config.abortAfter ...
function abortAfterX (line 4721) | inline void abortAfterX( ConfigData& config, int x ) {
function addTestOrTags (line 4726) | inline void addTestOrTags( ConfigData& config, std::string const& _tes...
function addReporterName (line 4727) | inline void addReporterName( ConfigData& config, std::string const& _r...
function addWarning (line 4729) | inline void addWarning( ConfigData& config, std::string const& _warnin...
function setOrder (line 4735) | inline void setOrder( ConfigData& config, std::string const& order ) {
function setRngSeed (line 4745) | inline void setRngSeed( ConfigData& config, std::string const& seed ) {
function setVerbosity (line 4757) | inline void setVerbosity( ConfigData& config, int level ) {
function setShowDurations (line 4761) | inline void setShowDurations( ConfigData& config, bool _showDurations ) {
function setUseColour (line 4766) | inline void setUseColour( ConfigData& config, std::string const& value...
function forceColour (line 4778) | inline void forceColour( ConfigData& config ) {
function loadTestNamesFromFile (line 4781) | inline void loadTestNamesFromFile( ConfigData& config, std::string con...
function makeCommandLineParser (line 4797) | inline Clara::CommandLine<ConfigData> makeCommandLineParser() {
type Colour (line 5078) | struct Colour {
type Code (line 5079) | enum Code {
type ReporterConfig (line 5140) | struct ReporterConfig {
method ReporterConfig (line 5141) | explicit ReporterConfig( Ptr<IConfig const> const& _fullConfig )
method ReporterConfig (line 5144) | ReporterConfig( Ptr<IConfig const> const& _fullConfig, std::ostream&...
method fullConfig (line 5148) | Ptr<IConfig const> fullConfig() const { return m_fullConfig; }
type ReporterPreferences (line 5155) | struct ReporterPreferences {
method ReporterPreferences (line 5156) | ReporterPreferences()
type LazyStat (line 5164) | struct LazyStat : Option<T> {
method LazyStat (line 5165) | LazyStat() : used( false ) {}
method LazyStat (line 5166) | LazyStat& operator=( T const& _value ) {
method reset (line 5171) | void reset() {
type TestRunInfo (line 5178) | struct TestRunInfo {
method TestRunInfo (line 5179) | TestRunInfo( std::string const& _name ) : name( _name ) {}
type GroupInfo (line 5182) | struct GroupInfo {
method GroupInfo (line 5183) | GroupInfo( std::string const& _name,
type AssertionStats (line 5196) | struct AssertionStats {
method AssertionStats (line 5197) | AssertionStats( AssertionResult const& _assertionResult,
method AssertionStats (line 5217) | AssertionStats( AssertionStats const& ) = default;
method AssertionStats (line 5218) | AssertionStats( AssertionStats && ) = default;
method AssertionStats (line 5219) | AssertionStats& operator = ( AssertionStats const& ) = default;
method AssertionStats (line 5220) | AssertionStats& operator = ( AssertionStats && ) = default;
type SectionStats (line 5228) | struct SectionStats {
method SectionStats (line 5229) | SectionStats( SectionInfo const& _sectionInfo,
method SectionStats (line 5240) | SectionStats( SectionStats const& ) = default;
method SectionStats (line 5241) | SectionStats( SectionStats && ) = default;
method SectionStats (line 5242) | SectionStats& operator = ( SectionStats const& ) = default;
method SectionStats (line 5243) | SectionStats& operator = ( SectionStats && ) = default;
type TestCaseStats (line 5252) | struct TestCaseStats {
method TestCaseStats (line 5253) | TestCaseStats( TestCaseInfo const& _testInfo,
method TestCaseStats (line 5267) | TestCaseStats( TestCaseStats const& ) = default;
method TestCaseStats (line 5268) | TestCaseStats( TestCaseStats && ) = default;
method TestCaseStats (line 5269) | TestCaseStats& operator = ( TestCaseStats const& ) = default;
method TestCaseStats (line 5270) | TestCaseStats& operator = ( TestCaseStats && ) = default;
type TestGroupStats (line 5280) | struct TestGroupStats {
method TestGroupStats (line 5281) | TestGroupStats( GroupInfo const& _groupInfo,
method TestGroupStats (line 5288) | TestGroupStats( GroupInfo const& _groupInfo )
method TestGroupStats (line 5295) | TestGroupStats( TestGroupStats const& ) = default;
method TestGroupStats (line 5296) | TestGroupStats( TestGroupStats && ) = default;
method TestGroupStats (line 5297) | TestGroupStats& operator = ( TestGroupStats const& ) = default;
method TestGroupStats (line 5298) | TestGroupStats& operator = ( TestGroupStats && ) = default;
type TestRunStats (line 5306) | struct TestRunStats {
method TestRunStats (line 5307) | TestRunStats( TestRunInfo const& _runInfo,
method TestRunStats (line 5317) | TestRunStats( TestRunStats const& _other )
method TestRunStats (line 5323) | TestRunStats( TestRunStats const& ) = default;
method TestRunStats (line 5324) | TestRunStats( TestRunStats && ) = default;
method TestRunStats (line 5325) | TestRunStats& operator = ( TestRunStats const& ) = default;
method TestRunStats (line 5326) | TestRunStats& operator = ( TestRunStats && ) = default;
class MultipleReporters (line 5334) | class MultipleReporters
method add (line 8574) | void add( Ptr<IStreamingReporter> const& reporter ) {
method ReporterPreferences (line 8580) | virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE {
method noMatchingTestCases (line 8584) | virtual void noMatchingTestCases( std::string const& spec ) CATCH_OV...
method testRunStarting (line 8591) | virtual void testRunStarting( TestRunInfo const& testRunInfo ) CATCH...
method testGroupStarting (line 8598) | virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_O...
method testCaseStarting (line 8605) | virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_...
method sectionStarting (line 8612) | virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH...
method assertionStarting (line 8619) | virtual void assertionStarting( AssertionInfo const& assertionInfo )...
method assertionEnded (line 8627) | virtual bool assertionEnded( AssertionStats const& assertionStats ) ...
method sectionEnded (line 8636) | virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_...
method testCaseEnded (line 8643) | virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CAT...
method testGroupEnded (line 8650) | virtual void testGroupEnded( TestGroupStats const& testGroupStats ) ...
method testRunEnded (line 8657) | virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_...
method skipTest (line 8664) | virtual void skipTest( TestCaseInfo const& testInfo ) CATCH_OVERRIDE {
method MultipleReporters (line 8671) | virtual MultipleReporters* tryAsMulti() CATCH_OVERRIDE {
type IStreamingReporter (line 5336) | struct IStreamingReporter : IShared {
method MultipleReporters (line 5364) | virtual MultipleReporters* tryAsMulti() { return CATCH_NULL; }
type IReporterFactory (line 5367) | struct IReporterFactory : IShared {
type IReporterRegistry (line 5373) | struct IReporterRegistry {
function listTests (line 5392) | inline std::size_t listTests( Config const& config ) {
function listTestsNamesOnly (line 5430) | inline std::size_t listTestsNamesOnly( Config const& config ) {
type TagInfo (line 5449) | struct TagInfo {
method TagInfo (line 5450) | TagInfo() : count ( 0 ) {}
method add (line 5451) | void add( std::string const& spelling ) {
method all (line 5455) | std::string all() const {
function listTags (line 5467) | inline std::size_t listTags( Config const& config ) {
function listReporters (line 5511) | inline std::size_t listReporters( Config const& /*config*/ ) {
function list (line 5534) | inline Option<std::size_t> list( Config const& config ) {
type TestCaseTracking (line 5561) | namespace TestCaseTracking {
type ITracker (line 5563) | struct ITracker : SharedImpl<> {
class TrackerContext (line 5591) | class TrackerContext {
type RunState (line 5593) | enum RunState {
method TrackerContext (line 5605) | static TrackerContext& instance() {
method TrackerContext (line 5610) | TrackerContext()
method endRun (line 5617) | void endRun() {
method startCycle (line 5623) | void startCycle() {
method completeCycle (line 5627) | void completeCycle() {
method completedCycle (line 5631) | bool completedCycle() const {
method ITracker (line 5634) | ITracker& currentTracker() {
method setCurrentTracker (line 5637) | void setCurrentTracker( ITracker* tracker ) {
class TrackerBase (line 5642) | class TrackerBase : public ITracker {
type CycleState (line 5644) | enum CycleState {
class TrackerHasName (line 5652) | class TrackerHasName {
method TrackerHasName (line 5655) | TrackerHasName( std::string const& name ) : m_name( name ) {}
method TrackerBase (line 5667) | TrackerBase( std::string const& name, TrackerContext& ctx, ITracke...
method isComplete (line 5678) | virtual bool isComplete() const CATCH_OVERRIDE {
method isSuccessfullyCompleted (line 5681) | virtual bool isSuccessfullyCompleted() const CATCH_OVERRIDE {
method isOpen (line 5684) | virtual bool isOpen() const CATCH_OVERRIDE {
method hasChildren (line 5687) | virtual bool hasChildren() const CATCH_OVERRIDE {
method addChild (line 5691) | virtual void addChild( Ptr<ITracker> const& child ) CATCH_OVERRIDE {
method ITracker (line 5695) | virtual ITracker* findChild( std::string const& name ) CATCH_OVERR...
method ITracker (line 5701) | virtual ITracker& parent() CATCH_OVERRIDE {
method isSectionTracker (line 5714) | virtual bool isSectionTracker() const CATCH_OVERRIDE { return fals...
method isIndexTracker (line 5715) | virtual bool isIndexTracker() const CATCH_OVERRIDE { return false; }
method open (line 5717) | void open() {
method markAsNeedingAnotherRun (line 5760) | virtual void markAsNeedingAnotherRun() CATCH_OVERRIDE {
method moveToParent (line 5764) | void moveToParent() {
method moveToThis (line 5768) | void moveToThis() {
class SectionTracker (line 5773) | class SectionTracker : public TrackerBase {
method SectionTracker (line 5775) | SectionTracker( std::string const& name, TrackerContext& ctx, ITra...
method isSectionTracker (line 5780) | virtual bool isSectionTracker() const CATCH_OVERRIDE { return true; }
method SectionTracker (line 5782) | static SectionTracker& acquire( TrackerContext& ctx, std::string c...
class IndexTracker (line 5803) | class IndexTracker : public TrackerBase {
method IndexTracker (line 5807) | IndexTracker( std::string const& name, TrackerContext& ctx, ITrack...
method isIndexTracker (line 5814) | virtual bool isIndexTracker() const CATCH_OVERRIDE { return true; }
method IndexTracker (line 5816) | static IndexTracker& acquire( TrackerContext& ctx, std::string con...
method index (line 5839) | int index() const { return m_index; }
method moveNext (line 5841) | void moveNext() {
function ITracker (line 5853) | inline ITracker& TrackerContext::startRun() {
function fatal (line 5875) | inline void fatal( std::string const& message, int exitCode ) {
type FatalConditionHandler (line 5890) | struct FatalConditionHandler {
method reset (line 5891) | void reset() {}
method handleSignal (line 5915) | static void handleSignal( int sig ) {
method FatalConditionHandler (line 5922) | FatalConditionHandler() : m_isSet( true ) {
method reset (line 5929) | void reset() {
type SignalDefs (line 5902) | struct SignalDefs { int id; const char* name; }
type FatalConditionHandler (line 5913) | struct FatalConditionHandler {
method reset (line 5891) | void reset() {}
method handleSignal (line 5915) | static void handleSignal( int sig ) {
method FatalConditionHandler (line 5922) | FatalConditionHandler() : m_isSet( true ) {
method reset (line 5929) | void reset() {
class StreamRedirect (line 5949) | class StreamRedirect {
method StreamRedirect (line 5952) | StreamRedirect( std::ostream& stream, std::string& targetString )
class RunContext (line 5974) | class RunContext : public IResultCapture, public IRunner {
method RunContext (line 5981) | explicit RunContext( Ptr<IConfig const> const& _config, Ptr<IStreami...
method testGroupStarting (line 5998) | void testGroupStarting( std::string const& testSpec, std::size_t gro...
method testGroupEnded (line 6001) | void testGroupEnded( std::string const& testSpec, Totals const& tota...
method Totals (line 6005) | Totals runTest( TestCase const& testCase ) {
method config (line 6048) | Ptr<IConfig const> config() const {
method assertionEnded (line 6054) | virtual void assertionEnded( AssertionResult const& result ) {
method sectionStarted (line 6070) | virtual bool sectionStarted (
method testForMissingAssertions (line 6091) | bool testForMissingAssertions( Counts& assertions ) {
method sectionEnded (line 6103) | virtual void sectionEnded( SectionEndInfo const& endInfo ) {
method sectionEndedEarly (line 6116) | virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) {
method pushScopedMessage (line 6126) | virtual void pushScopedMessage( MessageInfo const& message ) {
method popScopedMessage (line 6130) | virtual void popScopedMessage( MessageInfo const& message ) {
method getCurrentTestName (line 6134) | virtual std::string getCurrentTestName() const {
method AssertionResult (line 6140) | virtual const AssertionResult* getLastResult() const {
method handleFatalErrorCondition (line 6144) | virtual void handleFatalErrorCondition( std::string const& message ) {
method aborting (line 6177) | bool aborting() const {
method runCurrentTest (line 6183) | void runCurrentTest( std::string& redirectedCout, std::string& redir...
method invokeActiveTestCase (line 6229) | void invokeActiveTestCase() {
method ResultBuilder (line 6237) | ResultBuilder makeUnexpectedResultBuilder() const {
method handleUnfinishedSections (line 6244) | void handleUnfinishedSections() {
function IResultCapture (line 6272) | IResultCapture& getResultCapture() {
type Version (line 6287) | struct Version {
function createReporter (line 6317) | Ptr<IStreamingReporter> createReporter( std::string const& reporterNam...
function makeReporter (line 6327) | Ptr<IStreamingReporter> makeReporter( Ptr<Config> const& config ) {
function addListeners (line 6339) | Ptr<IStreamingReporter> addListeners( Ptr<IConfig const> const& config...
function Totals (line 6348) | Totals runTests( Ptr<Config> const& config ) {
method Totals (line 2255) | Totals operator - ( Totals const& other ) const {
method Totals (line 2262) | Totals delta( Totals const& prevTotals ) const {
method Totals (line 2273) | Totals& operator += ( Totals const& other ) {
function applyFilenamesAsTags (line 6379) | void applyFilenamesAsTags( IConfig const& config ) {
class Session (line 6399) | class Session : NonCopyable {
type OnUnusedOptions (line 6404) | struct OnUnusedOptions { enum DoWhat { Ignore, Fail }; }
type DoWhat (line 6404) | enum DoWhat { Ignore, Fail }
method Session (line 6406) | Session()
method showHelp (line 6419) | void showHelp( std::string const& processName ) {
method applyCommandLine (line 6426) | int applyCommandLine( int argc, char const* const* const argv, OnUnu...
method useConfigData (line 6448) | void useConfigData( ConfigData const& _configData ) {
method run (line 6453) | int run( int argc, char const* const* const argv ) {
method run (line 6461) | int run() {
method ConfigData (line 6492) | ConfigData& configData() {
method Config (line 6495) | Config& config() {
type RandomNumberGenerator (line 6525) | struct RandomNumberGenerator {
method result_type (line 6528) | result_type operator()( result_type n ) const { return std::rand() %...
method result_type (line 6531) | static constexpr result_type min() { return 0; }
method result_type (line 6532) | static constexpr result_type max() { return 1000000; }
method result_type (line 6533) | result_type operator()() const { return std::rand() % max(); }
method shuffle (line 6536) | static void shuffle( V& vector ) {
function sortTests (line 6546) | inline std::vector<TestCase> sortTests( IConfig const& config, std::ve...
function matchTest (line 6566) | bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IC...
function enforceNoDuplicateTestCases (line 6570) | void enforceNoDuplicateTestCases( std::vector<TestCase> const& functio...
function filterTests (line 6589) | std::vector<TestCase> filterTests( std::vector<TestCase> const& testCa...
class TestRegistry (line 6603) | class TestRegistry : public ITestCaseRegistry {
method TestRegistry (line 6605) | TestRegistry()
method registerTest (line 6611) | virtual void registerTest( TestCase const& testCase ) {
class FreeFunctionTestCase (line 6645) | class FreeFunctionTestCase : public SharedImpl<ITestCase> {
method FreeFunctionTestCase (line 6648) | FreeFunctionTestCase( TestFunction fun ) : m_fun( fun ) {}
method invoke (line 6650) | virtual void invoke() const {
function extractClassName (line 6660) | inline std::string extractClassName( std::string const& classOrQualifi...
function registerTestCase (line 6673) | void registerTestCase
function registerTestCaseFunction (line 6687) | void registerTestCaseFunction
class ReporterRegistry (line 6714) | class ReporterRegistry : public IReporterRegistry {
method IStreamingReporter (line 6720) | virtual IStreamingReporter* create( std::string const& name, Ptr<ICo...
method registerReporter (line 6727) | void registerReporter( std::string const& name, Ptr<IReporterFactory...
method registerListener (line 6730) | void registerListener( Ptr<IReporterFactory> const& factory ) {
method FactoryMap (line 6734) | virtual FactoryMap const& getFactories() const CATCH_OVERRIDE {
method Listeners (line 6737) | virtual Listeners const& getListeners() const CATCH_OVERRIDE {
class ExceptionTranslatorRegistry (line 6756) | class ExceptionTranslatorRegistry : public IExceptionTranslatorRegistry {
method registerTranslator (line 6762) | virtual void registerTranslator( const IExceptionTranslator* transla...
method translateActiveException (line 6766) | virtual std::string translateActiveException() const {
method tryTranslators (line 6797) | std::string tryTranslators() const {
class RegistryHub (line 6813) | class RegistryHub : public IRegistryHub, public IMutableRegistryHub {
method RegistryHub (line 6819) | RegistryHub() {
method IReporterRegistry (line 6821) | virtual IReporterRegistry const& getReporterRegistry() const CATCH_O...
method ITestCaseRegistry (line 6824) | virtual ITestCaseRegistry const& getTestCaseRegistry() const CATCH_O...
method IExceptionTranslatorRegistry (line 6827) | virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry...
method registerReporter (line 6832) | virtual void registerReporter( std::string const& name, Ptr<IReporte...
method registerListener (line 6835) | virtual void registerListener( Ptr<IReporterFactory> const& factory ...
method registerTest (line 6838) | virtual void registerTest( TestCase const& testInfo ) CATCH_OVERRIDE {
method registerTranslator (line 6841) | virtual void registerTranslator( const IExceptionTranslator* transla...
function RegistryHub (line 6852) | inline RegistryHub*& getTheRegistryHub() {
method RegistryHub (line 6819) | RegistryHub() {
method IReporterRegistry (line 6821) | virtual IReporterRegistry const& getReporterRegistry() const CATCH_O...
method ITestCaseRegistry (line 6824) | virtual ITestCaseRegistry const& getTestCaseRegistry() const CATCH_O...
method IExceptionTranslatorRegistry (line 6827) | virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry...
method registerReporter (line 6832) | virtual void registerReporter( std::string const& name, Ptr<IReporte...
method registerListener (line 6835) | virtual void registerListener( Ptr<IReporterFactory> const& factory ...
method registerTest (line 6838) | virtual void registerTest( TestCase const& testInfo ) CATCH_OVERRIDE {
method registerTranslator (line 6841) | virtual void registerTranslator( const IExceptionTranslator* transla...
function IRegistryHub (line 6860) | IRegistryHub& getRegistryHub() {
function IMutableRegistryHub (line 6863) | IMutableRegistryHub& getMutableRegistryHub() {
function cleanUp (line 6866) | void cleanUp() {
function translateActiveException (line 6871) | std::string translateActiveException() {
class StreamBufImpl (line 6911) | class StreamBufImpl : public StreamBufBase {
method StreamBufImpl (line 6916) | StreamBufImpl() {
method overflow (line 6925) | int overflow( int c ) {
method sync (line 6937) | int sync() {
type OutputDebugWriter (line 6961) | struct OutputDebugWriter {
class Context (line 6999) | class Context : public IMutableContext {
method Context (line 7001) | Context() : m_config( CATCH_NULL ), m_runner( CATCH_NULL ), m_result...
method IResultCapture (line 7011) | virtual IResultCapture* getResultCapture() {
method IRunner (line 7014) | virtual IRunner* getRunner() {
method getGeneratorIndex (line 7017) | virtual size_t getGeneratorIndex( std::string const& fileInfo, size_...
method advanceGeneratorsForCurrentTest (line 7022) | virtual bool advanceGeneratorsForCurrentTest() {
method getConfig (line 7027) | virtual Ptr<IConfig const> getConfig() const {
method setResultCapture (line 7032) | virtual void setResultCapture( IResultCapture* resultCapture ) {
method setRunner (line 7035) | virtual void setRunner( IRunner* runner ) {
method setConfig (line 7038) | virtual void setConfig( Ptr<IConfig const> const& config ) {
method IGeneratorsForTest (line 7045) | IGeneratorsForTest* findGeneratorsForCurrentTest() {
method IGeneratorsForTest (line 7055) | IGeneratorsForTest& getGeneratorsForCurrentTest() {
function IMutableContext (line 7075) | IMutableContext& getCurrentMutableContext() {
function IContext (line 7080) | IContext& getCurrentContext() {
function cleanUpContext (line 7084) | void cleanUpContext() {
type IColourImpl (line 7096) | struct IColourImpl {
type NoColourImpl (line 7101) | struct NoColourImpl : IColourImpl {
method use (line 7102) | void use( Colour::Code ) {}
method IColourImpl (line 7104) | static IColourImpl* instance() {
class Win32ColourImpl (line 7150) | class Win32ColourImpl : public IColourImpl {
method Win32ColourImpl (line 7152) | Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) )
method use (line 7160) | virtual void use( Colour::Code _colourCode ) {
method setTextAttribute (line 7181) | void setTextAttribute( WORD _textAttribute ) {
function IColourImpl (line 7189) | IColourImpl* platformColourInstance() {
class PosixColourImpl (line 7219) | class PosixColourImpl : public IColourImpl {
method use (line 7221) | virtual void use( Colour::Code _colourCode ) {
method IColourImpl (line 7240) | static IColourImpl* instance() {
method setColour (line 7246) | void setColour( const char* _escapeCode ) {
function IColourImpl (line 7251) | IColourImpl* platformColourInstance() {
function IColourImpl (line 7272) | static IColourImpl* platformColourInstance() { return NoColourImpl::in...
type GeneratorInfo (line 7300) | struct GeneratorInfo : IGeneratorInfo {
method GeneratorInfo (line 7302) | GeneratorInfo( std::size_t size )
method moveNext (line 7307) | bool moveNext() {
method getCurrentIndex (line 7315) | std::size_t getCurrentIndex() const {
class GeneratorsForTest (line 7325) | class GeneratorsForTest : public IGeneratorsForTest {
method IGeneratorInfo (line 7332) | IGeneratorInfo& getGeneratorInfo( std::string const& fileInfo, std::...
method moveNext (line 7343) | bool moveNext() {
function IGeneratorsForTest (line 7358) | IGeneratorsForTest* createGeneratorsForTest()
function SourceLineInfo (line 7435) | SourceLineInfo AssertionResult::getSourceInfo() const {
method SourceLineInfo (line 402) | SourceLineInfo( SourceLineInfo && ) = default;
method SourceLineInfo (line 403) | SourceLineInfo& operator = ( SourceLineInfo const& ) = default;
method SourceLineInfo (line 404) | SourceLineInfo& operator = ( SourceLineInfo && ) = default;
function parseSpecialTag (line 7450) | inline TestCaseInfo::SpecialProperties parseSpecialTag( std::string co...
function isReservedTag (line 7464) | inline bool isReservedTag( std::string const& tag ) {
function enforceNotReservedTag (line 7467) | inline void enforceNotReservedTag( std::string const& tag, SourceLineI...
function TestCase (line 7483) | TestCase makeTestCase( ITestCase* _testCase,
function setTags (line 7528) | void setTags( TestCaseInfo& testCaseInfo, std::set<std::string> const&...
function TestCase (line 7588) | TestCase TestCase::withName( std::string const& _newName ) const {
function TestCase (line 7619) | TestCase& TestCase::operator = ( TestCase const& other ) {
function TestCaseInfo (line 7625) | TestCaseInfo const& TestCase::getTestCaseInfo() const
type SpecialProperties (line 2868) | enum SpecialProperties{
type IReporter (line 7710) | struct IReporter : IShared {
class LegacyReporterAdapter (line 7729) | class LegacyReporterAdapter : public SharedImpl<IStreamingReporter>
function ReporterPreferences (line 7761) | ReporterPreferences LegacyReporterAdapter::getPreferences() const {
method ReporterPreferences (line 5156) | ReporterPreferences()
function getCurrentTicks (line 7841) | uint64_t getCurrentTicks() {
function getCurrentTicks (line 7852) | uint64_t getCurrentTicks() {
function startsWith (line 7883) | bool startsWith( std::string const& s, std::string const& prefix ) {
function endsWith (line 7886) | bool endsWith( std::string const& s, std::string const& suffix ) {
function contains (line 7889) | bool contains( std::string const& s, std::string const& infix ) {
function toLowerCh (line 7892) | char toLowerCh(char c) {
function toLowerInPlace (line 7895) | void toLowerInPlace( std::string& s ) {
function toLower (line 7898) | std::string toLower( std::string const& s ) {
function trim (line 7903) | std::string trim( std::string const& str ) {
function replaceInPlace (line 7911) | bool replaceInPlace( std::string& str, std::string const& replaceThis,...
function seedRng (line 7956) | void seedRng( IConfig const& config ) {
function rngSeed (line 7960) | unsigned int rngSeed() {
function throwLogicError (line 7973) | void throwLogicError( std::string const& message, SourceLineInfo const...
function isDebuggerActive (line 8039) | bool isDebuggerActive(){
function isDebuggerActive (line 8084) | bool isDebuggerActive(){
function isDebuggerActive (line 8102) | bool isDebuggerActive() {
function isDebuggerActive (line 8109) | bool isDebuggerActive() {
function isDebuggerActive (line 8115) | inline bool isDebuggerActive() { return false; }
function writeToDebugConsole (line 8122) | void writeToDebugConsole( std::string const& text ) {
function writeToDebugConsole (line 8128) | void writeToDebugConsole( std::string const& text ) {
type Detail (line 8140) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
function toString (line 8180) | std::string toString( std::string const& value ) {
function toString (line 8198) | std::string toString( std::wstring const& value ) {
function toString (line 8207) | std::string toString( const char* const value ) {
function toString (line 8211) | std::string toString( char* const value ) {
function toString (line 8215) | std::string toString( const wchar_t* const value )
function toString (line 8220) | std::string toString( wchar_t* const value )
function toString (line 8225) | std::string toString( int value ) {
function toString (line 8233) | std::string toString( unsigned long value ) {
function toString (line 8241) | std::string toString( unsigned int value ) {
function fpToString (line 8246) | std::string fpToString( T value, int precision ) {
function toString (line 8261) | std::string toString( const double value ) {
function toString (line 8264) | std::string toString( const float value ) {
function toString (line 8268) | std::string toString( bool value ) {
function toString (line 8272) | std::string toString( char value ) {
function toString (line 8278) | std::string toString( signed char value ) {
function toString (line 8282) | std::string toString( unsigned char value ) {
function toString (line 8287) | std::string toString( long long value ) {
function toString (line 8294) | std::string toString( unsigned long long value ) {
function toString (line 8304) | std::string toString( std::nullptr_t ) {
function toString (line 8310) | std::string toString( NSString const * const& nsstring ) {
function toString (line 8320) | std::string toString( NSObject* const& nsObject ) {
function capturedExpressionWithSecondArgument (line 8332) | std::string capturedExpressionWithSecondArgument( std::string const& c...
function ResultBuilder (line 8347) | ResultBuilder& ResultBuilder::setResultType( ResultWas::OfType result ) {
method ResultBuilder (line 1250) | ResultBuilder& operator << ( T const& value ) {
type ExprComponents (line 1282) | struct ExprComponents {
method ExprComponents (line 1283) | ExprComponents() : testFalse( false ) {}
function ResultBuilder (line 8351) | ResultBuilder& ResultBuilder::setResultType( bool result ) {
method ResultBuilder (line 1250) | ResultBuilder& operator << ( T const& value ) {
type ExprComponents (line 1282) | struct ExprComponents {
method ExprComponents (line 1283) | ExprComponents() : testFalse( false ) {}
function ResultBuilder (line 8355) | ResultBuilder& ResultBuilder::setLhs( std::string const& lhs ) {
method ResultBuilder (line 1250) | ResultBuilder& operator << ( T const& value ) {
type ExprComponents (line 1282) | struct ExprComponents {
method ExprComponents (line 1283) | ExprComponents() : testFalse( false ) {}
function ResultBuilder (line 8359) | ResultBuilder& ResultBuilder::setRhs( std::string const& rhs ) {
method ResultBuilder (line 1250) | ResultBuilder& operator << ( T const& value ) {
type ExprComponents (line 1282) | struct ExprComponents {
method ExprComponents (line 1283) | ExprComponents() : testFalse( false ) {}
function ResultBuilder (line 8363) | ResultBuilder& ResultBuilder::setOp( std::string const& op ) {
method ResultBuilder (line 1250) | ResultBuilder& operator << ( T const& value ) {
type ExprComponents (line 1282) | struct ExprComponents {
method ExprComponents (line 1283) | ExprComponents() : testFalse( false ) {}
function AssertionResult (line 8429) | AssertionResult ResultBuilder::build() const
method AssertionResult (line 873) | AssertionResult( AssertionResult const& ) = default;
method AssertionResult (line 874) | AssertionResult( AssertionResult && ) = default;
method AssertionResult (line 875) | AssertionResult& operator = ( AssertionResult const& ) = default;
method AssertionResult (line 876) | AssertionResult& operator = ( AssertionResult && ) = default;
class TagAliasRegistry (line 8482) | class TagAliasRegistry : public ITagAliasRegistry {
function TagAliasRegistry (line 8542) | TagAliasRegistry& TagAliasRegistry::get() {
function ITagAliasRegistry (line 8549) | ITagAliasRegistry const& ITagAliasRegistry::get() { return TagAliasReg...
class MultipleReporters (line 8569) | class MultipleReporters : public SharedImpl<IStreamingReporter> {
method add (line 8574) | void add( Ptr<IStreamingReporter> const& reporter ) {
method ReporterPreferences (line 8580) | virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE {
method noMatchingTestCases (line 8584) | virtual void noMatchingTestCases( std::string const& spec ) CATCH_OV...
method testRunStarting (line 8591) | virtual void testRunStarting( TestRunInfo const& testRunInfo ) CATCH...
method testGroupStarting (line 8598) | virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_O...
method testCaseStarting (line 8605) | virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_...
method sectionStarting (line 8612) | virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH...
method assertionStarting (line 8619) | virtual void assertionStarting( AssertionInfo const& assertionInfo )...
method assertionEnded (line 8627) | virtual bool assertionEnded( AssertionStats const& assertionStats ) ...
method sectionEnded (line 8636) | virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_...
method testCaseEnded (line 8643) | virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CAT...
method testGroupEnded (line 8650) | virtual void testGroupEnded( TestGroupStats const& testGroupStats ) ...
method testRunEnded (line 8657) | virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_...
method skipTest (line 8664) | virtual void skipTest( TestCaseInfo const& testInfo ) CATCH_OVERRIDE {
method MultipleReporters (line 8671) | virtual MultipleReporters* tryAsMulti() CATCH_OVERRIDE {
function addReporter (line 8677) | Ptr<IStreamingReporter> addReporter( Ptr<IStreamingReporter> const& ex...
type StreamingReporterBase (line 8710) | struct StreamingReporterBase : SharedImpl<IStreamingReporter> {
method StreamingReporterBase (line 8712) | StreamingReporterBase( ReporterConfig const& _config )
method ReporterPreferences (line 8719) | virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE {
method noMatchingTestCases (line 8725) | virtual void noMatchingTestCases( std::string const& ) CATCH_OVERRID...
method testRunStarting (line 8727) | virtual void testRunStarting( TestRunInfo const& _testRunInfo ) CATC...
method testGroupStarting (line 8730) | virtual void testGroupStarting( GroupInfo const& _groupInfo ) CATCH_...
method testCaseStarting (line 8734) | virtual void testCaseStarting( TestCaseInfo const& _testInfo ) CATCH...
method sectionStarting (line 8737) | virtual void sectionStarting( SectionInfo const& _sectionInfo ) CATC...
method sectionEnded (line 8741) | virtual void sectionEnded( SectionStats const& /* _sectionStats */ )...
method testCaseEnded (line 8744) | virtual void testCaseEnded( TestCaseStats const& /* _testCaseStats *...
method testGroupEnded (line 8747) | virtual void testGroupEnded( TestGroupStats const& /* _testGroupStat...
method testRunEnded (line 8750) | virtual void testRunEnded( TestRunStats const& /* _testRunStats */ )...
method skipTest (line 8756) | virtual void skipTest( TestCaseInfo const& ) CATCH_OVERRIDE {
type CumulativeReporterBase (line 8772) | struct CumulativeReporterBase : SharedImpl<IStreamingReporter> {
type Node (line 8774) | struct Node : SharedImpl<> {
method Node (line 8775) | explicit Node( T const& _value ) : value( _value ) {}
type SectionNode (line 8782) | struct SectionNode : SharedImpl<> {
method SectionNode (line 8783) | explicit SectionNode( SectionStats const& _stats ) : stats( _stats...
type BySectionInfo (line 8802) | struct BySectionInfo {
method BySectionInfo (line 8803) | BySectionInfo( SectionInfo const& other ) : m_other( other ) {}
method BySectionInfo (line 8804) | BySectionInfo( BySectionInfo const& other ) : m_other( other.m_oth...
method CumulativeReporterBase (line 8817) | CumulativeReporterBase( ReporterConfig const& _config )
method ReporterPreferences (line 8825) | virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE {
method testRunStarting (line 8829) | virtual void testRunStarting( TestRunInfo const& ) CATCH_OVERRIDE {}
method testGroupStarting (line 8830) | virtual void testGroupStarting( GroupInfo const& ) CATCH_OVERRIDE {}
method testCaseStarting (line 8832) | virtual void testCaseStarting( TestCaseInfo const& ) CATCH_OVERRIDE {}
method sectionStarting (line 8834) | virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH...
method assertionStarting (line 8859) | virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRID...
method assertionEnded (line 8861) | virtual bool assertionEnded( AssertionStats const& assertionStats ) ...
method sectionEnded (line 8867) | virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_...
method testCaseEnded (line 8873) | virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CAT...
method testGroupEnded (line 8884) | virtual void testGroupEnded( TestGroupStats const& testGroupStats ) ...
method testRunEnded (line 8889) | virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_...
method skipTest (line 8897) | virtual void skipTest( TestCaseInfo const& ) CATCH_OVERRIDE {}
type TestEventListenerBase (line 8925) | struct TestEventListenerBase : StreamingReporterBase {
method TestEventListenerBase (line 8926) | TestEventListenerBase( ReporterConfig const& _config )
method assertionStarting (line 8930) | virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRID...
method assertionEnded (line 8931) | virtual bool assertionEnded( AssertionStats const& ) CATCH_OVERRIDE {
class LegacyReporterRegistrar (line 8944) | class LegacyReporterRegistrar {
class ReporterFactory (line 8946) | class ReporterFactory : public IReporterFactory {
method IStreamingReporter (line 8947) | virtual IStreamingReporter* create( ReporterConfig const& config )...
method getDescription (line 8951) | virtual std::string getDescription() const {
method LegacyReporterRegistrar (line 8958) | LegacyReporterRegistrar( std::string const& name ) {
class ReporterRegistrar (line 8964) | class ReporterRegistrar {
class ReporterFactory (line 8966) | class ReporterFactory : public SharedImpl<IReporterFactory> {
method IStreamingReporter (line 8979) | virtual IStreamingReporter* create( ReporterConfig const& config )...
method getDescription (line 8983) | virtual std::string getDescription() const {
method ReporterRegistrar (line 8990) | ReporterRegistrar( std::string const& name ) {
class ListenerRegistrar (line 8996) | class ListenerRegistrar {
class ListenerFactory (line 8998) | class ListenerFactory : public SharedImpl<IReporterFactory> {
method IStreamingReporter (line 9000) | virtual IStreamingReporter* create( ReporterConfig const& config )...
method getDescription (line 9003) | virtual std::string getDescription() const {
method ListenerRegistrar (line 9010) | ListenerRegistrar() {
class XmlEncode (line 9035) | class XmlEncode {
type ForWhat (line 9037) | enum ForWhat { ForTextNodes, ForAttributes }
method XmlEncode (line 9039) | XmlEncode( std::string const& str, ForWhat forWhat = ForTextNodes )
method encodeTo (line 9044) | void encodeTo( std::ostream& os ) const {
class XmlWriter (line 9091) | class XmlWriter {
class ScopedElement (line 9094) | class ScopedElement {
method ScopedElement (line 9096) | ScopedElement( XmlWriter* writer )
method ScopedElement (line 9100) | ScopedElement( ScopedElement const& other )
method ScopedElement (line 9110) | ScopedElement& writeText( std::string const& text, bool indent = t...
method ScopedElement (line 9116) | ScopedElement& writeAttribute( std::string const& name, T const& a...
method XmlWriter (line 9125) | XmlWriter()
method XmlWriter (line 9136) | XmlWriter( std::ostream& os )
method XmlWriter (line 9149) | XmlWriter& startElement( std::string const& name ) {
method ScopedElement (line 9159) | ScopedElement scopedElement( std::string const& name ) {
method ScopedElement (line 9096) | ScopedElement( XmlWriter* writer )
method ScopedElement (line 9100) | ScopedElement( ScopedElement const& other )
method ScopedElement (line 9110) | ScopedElement& writeText( std::string const& text, bool indent = t...
method ScopedElement (line 9116) | ScopedElement& writeAttribute( std::string const& name, T const& a...
method XmlWriter (line 9165) | XmlWriter& endElement() {
method XmlWriter (line 9179) | XmlWriter& writeAttribute( std::string const& name, std::string cons...
method XmlWriter (line 9185) | XmlWriter& writeAttribute( std::string const& name, bool attribute ) {
method XmlWriter (line 9191) | XmlWriter& writeAttribute( std::string const& name, T const& attribu...
method XmlWriter (line 9197) | XmlWriter& writeText( std::string const& text, bool indent = true ) {
method XmlWriter (line 9209) | XmlWriter& writeComment( std::string const& text ) {
method XmlWriter (line 9216) | XmlWriter& writeBlankLine() {
method setStream (line 9222) | void setStream( std::ostream& os ) {
method ensureTagClosed (line 9234) | void ensureTagClosed() {
method newlineIfNecessary (line 9241) | void newlineIfNecessary() {
class XmlReporter (line 9272) | class XmlReporter : public StreamingReporterBase {
method XmlReporter (line 9274) | XmlReporter( ReporterConfig const& _config )
method getDescription (line 9284) | static std::string getDescription() {
method noMatchingTestCases (line 9290) | virtual void noMatchingTestCases( std::string const& s ) CATCH_OVERR...
method testRunStarting (line 9294) | virtual void testRunStarting( TestRunInfo const& testInfo ) CATCH_OV...
method testGroupStarting (line 9301) | virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_O...
method testCaseStarting (line 9307) | virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_...
method sectionStarting (line 9315) | virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH...
method assertionStarting (line 9324) | virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRID...
method assertionEnded (line 9326) | virtual bool assertionEnded( AssertionStats const& assertionStats ) ...
method sectionEnded (line 9397) | virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_...
method testCaseEnded (line 9412) | virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CAT...
method testGroupEnded (line 9423) | virtual void testGroupEnded( TestGroupStats const& testGroupStats ) ...
method testRunEnded (line 9433) | virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_...
function getCurrentTimestamp (line 9460) | std::string getCurrentTimestamp() {
class JunitReporter (line 9488) | class JunitReporter : public CumulativeReporterBase {
method JunitReporter (line 9490) | JunitReporter( ReporterConfig const& _config )
method getDescription (line 9499) | static std::string getDescription() {
method noMatchingTestCases (line 9503) | virtual void noMatchingTestCases( std::string const& /*spec*/ ) CATC...
method testRunStarting (line 9505) | virtual void testRunStarting( TestRunInfo const& runInfo ) CATCH_OVE...
method testGroupStarting (line 9510) | virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_O...
method assertionEnded (line 9518) | virtual bool assertionEnded( AssertionStats const& assertionStats ) ...
method testCaseEnded (line 9524) | virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CAT...
method testGroupEnded (line 9530) | virtual void testGroupEnded( TestGroupStats const& testGroupStats ) ...
method testRunEndedCumulative (line 9536) | virtual void testRunEndedCumulative() CATCH_OVERRIDE {
method writeGroup (line 9540) | void writeGroup( TestGroupNode const& groupNode, double suiteTime ) {
method writeTestCase (line 9565) | void writeTestCase( TestCaseNode const& testCaseNode ) {
method writeSection (line 9582) | void writeSection( std::string const& className,
method writeAssertions (line 9621) | void writeAssertions( SectionNode const& sectionNode ) {
method writeAssertion (line 9628) | void writeAssertion( AssertionStats const& stats ) {
type ConsoleReporter (line 9695) | struct ConsoleReporter : StreamingReporterBase {
method ConsoleReporter (line 9696) | ConsoleReporter( ReporterConfig const& _config )
method getDescription (line 9702) | static std::string getDescription() {
method noMatchingTestCases (line 9706) | virtual void noMatchingTestCases( std::string const& spec ) CATCH_OV...
method assertionStarting (line 9710) | virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRIDE {
method assertionEnded (line 9713) | virtual bool assertionEnded( AssertionStats const& _assertionStats )...
method sectionStarting (line 9733) | virtual void sectionStarting( SectionInfo const& _sectionInfo ) CATC...
method sectionEnded (line 9737) | virtual void sectionEnded( SectionStats const& _sectionStats ) CATCH...
method testCaseEnded (line 9759) | virtual void testCaseEnded( TestCaseStats const& _testCaseStats ) CA...
method testGroupEnded (line 9763) | virtual void testGroupEnded( TestGroupStats const& _testGroupStats )...
method testRunEnded (line 9772) | virtual void testRunEnded( TestRunStats const& _testRunStats ) CATCH...
class AssertionPrinter (line 9781) | class AssertionPrinter {
method AssertionPrinter (line 9784) | AssertionPrinter( std::ostream& _stream, AssertionStats const& _st...
method print (line 9856) | void print() const {
method printResultType (line 9872) | void printResultType() const {
method printOriginalExpression (line 9878) | void printOriginalExpression() const {
method printReconstructedExpression (line 9886) | void printReconstructedExpression() const {
method printMessage (line 9893) | void printMessage() const {
method printSourceInfo (line 9904) | void printSourceInfo() const {
method lazyPrint (line 9920) | void lazyPrint() {
method lazyPrintRunInfo (line 9932) | void lazyPrintRunInfo() {
method lazyPrintGroupInfo (line 9944) | void lazyPrintGroupInfo() {
method printTestCaseAndSectionHeader (line 9950) | void printTestCaseAndSectionHeader() {
method printClosedHeader (line 9974) | void printClosedHeader( std::string const& _name ) {
method printOpenHeader (line 9978) | void printOpenHeader( std::string const& _name ) {
method printHeaderString (line 9988) | void printHeaderString( std::string const& _string, std::size_t inde...
type SummaryColumn (line 9999) | struct SummaryColumn {
method SummaryColumn (line 10001) | SummaryColumn( std::string const& _label, Colour::Code _colour )
method SummaryColumn (line 10005) | SummaryColumn addRow( std::size_t count ) {
method printTotals (line 10025) | void printTotals( Totals const& totals ) {
method printSummaryRow (line 10056) | void printSummaryRow( std::string const& label, std::vector<SummaryC...
method makeRatio (line 10075) | static std::size_t makeRatio( std::size_t number, std::size_t total ) {
method printTotalsDivider (line 10088) | void printTotalsDivider( Totals const& totals ) {
method printSummaryDivider (line 10110) | void printSummaryDivider() {
type CompactReporter (line 10127) | struct CompactReporter : StreamingReporterBase {
method CompactReporter (line 10129) | CompactReporter( ReporterConfig const& _config )
method getDescription (line 10135) | static std::string getDescription() {
method ReporterPreferences (line 10139) | virtual ReporterPreferences getPreferences() const {
method noMatchingTestCases (line 10145) | virtual void noMatchingTestCases( std::string const& spec ) {
method assertionStarting (line 10149) | virtual void assertionStarting( AssertionInfo const& ) {
method assertionEnded (line 10152) | virtual bool assertionEnded( AssertionStats const& _assertionStats ) {
method testRunEnded (line 10171) | virtual void testRunEnded( TestRunStats const& _testRunStats ) {
class AssertionPrinter (line 10178) | class AssertionPrinter {
method AssertionPrinter (line 10181) | AssertionPrinter( std::ostream& _stream, AssertionStats const& _st...
method print (line 10190) | void print() {
method dimColour (line 10261) | static Colour::Code dimColour() { return Colour::FileName; }
method printSourceInfo (line 10271) | void printSourceInfo() const {
method printResultType (line 10276) | void printResultType( Colour::Code colour, std::string passOrFail ...
method printIssue (line 10286) | void printIssue( std::string issue ) const {
method printExpressionWas (line 10290) | void printExpressionWas() {
method printOriginalExpression (line 10301) | void printOriginalExpression() const {
method printReconstructedExpression (line 10307) | void printReconstructedExpression() const {
method printMessage (line 10317) | void printMessage() {
method printRemainingMessages (line 10324) | void printRemainingMessages( Colour::Code colour = dimColour() ) {
method bothOrAll (line 10365) | std::string bothOrAll( std::size_t count ) const {
method printTotals (line 10369) | void printTotals( const Totals& totals ) const {
type TestCaseTracking (line 10465) | namespace TestCaseTracking {
type ITracker (line 5563) | struct ITracker : SharedImpl<> {
class TrackerContext (line 5591) | class TrackerContext {
type RunState (line 5593) | enum RunState {
method TrackerContext (line 5605) | static TrackerContext& instance() {
method TrackerContext (line 5610) | TrackerContext()
method endRun (line 5617) | void endRun() {
method startCycle (line 5623) | void startCycle() {
method completeCycle (line 5627) | void completeCycle() {
method completedCycle (line 5631) | bool completedCycle() const {
method ITracker (line 5634) | ITracker& currentTracker() {
method setCurrentTracker (line 5637) | void setCurrentTracker( ITracker* tracker ) {
class TrackerBase (line 5642) | class TrackerBase : public ITracker {
type CycleState (line 5644) | enum CycleState {
class TrackerHasName (line 5652) | class TrackerHasName {
method TrackerHasName (line 5655) | TrackerHasName( std::string const& name ) : m_name( name ) {}
method TrackerBase (line 5667) | TrackerBase( std::string const& name, TrackerContext& ctx, ITracke...
method isComplete (line 5678) | virtual bool isComplete() const CATCH_OVERRIDE {
method isSuccessfullyCompleted (line 5681) | virtual bool isSuccessfullyCompleted() const CATCH_OVERRIDE {
method isOpen (line 5684) | virtual bool isOpen() const CATCH_OVERRIDE {
method hasChildren (line 5687) | virtual bool hasChildren() const CATCH_OVERRIDE {
method addChild (line 5691) | virtual void addChild( Ptr<ITracker> const& child ) CATCH_OVERRIDE {
method ITracker (line 5695) | virtual ITracker* findChild( std::string const& name ) CATCH_OVERR...
method ITracker (line 5701) | virtual ITracker& parent() CATCH_OVERRIDE {
method isSectionTracker (line 5714) | virtual bool isSectionTracker() const CATCH_OVERRIDE { return fals...
method isIndexTracker (line 5715) | virtual bool isIndexTracker() const CATCH_OVERRIDE { return false; }
method open (line 5717) | void open() {
method markAsNeedingAnotherRun (line 5760) | virtual void markAsNeedingAnotherRun() CATCH_OVERRIDE {
method moveToParent (line 5764) | void moveToParent() {
method moveToThis (line 5768) | void moveToThis() {
class SectionTracker (line 5773) | class SectionTracker : public TrackerBase {
method SectionTracker (line 5775) | SectionTracker( std::string const& name, TrackerContext& ctx, ITra...
method isSectionTracker (line 5780) | virtual bool isSectionTracker() const CATCH_OVERRIDE { return true; }
method SectionTracker (line 5782) | static SectionTracker& acquire( TrackerContext& ctx, std::string c...
class IndexTracker (line 5803) | class IndexTracker : public TrackerBase {
method IndexTracker (line 5807) | IndexTracker( std::string const& name, TrackerContext& ctx, ITrack...
method isIndexTracker (line 5814) | virtual bool isIndexTracker() const CATCH_OVERRIDE { return true; }
method IndexTracker (line 5816) | static IndexTracker& acquire( TrackerContext& ctx, std::string con...
method index (line 5839) | int index() const { return m_index; }
method moveNext (line 5841) | void moveNext() {
function ITracker (line 5853) | inline ITracker& TrackerContext::startRun() {
type Catch (line 445) | namespace Catch {
type IConfig (line 330) | struct IConfig
type CaseSensitive (line 332) | struct CaseSensitive { enum Choice {
type Choice (line 332) | enum Choice {
class NonCopyable (line 337) | class NonCopyable {
method NonCopyable (line 339) | NonCopyable( NonCopyable const& ) = delete;
method NonCopyable (line 340) | NonCopyable( NonCopyable && ) = delete;
method NonCopyable (line 341) | NonCopyable& operator = ( NonCopyable const& ) = delete;
method NonCopyable (line 342) | NonCopyable& operator = ( NonCopyable && ) = delete;
method NonCopyable (line 349) | NonCopyable() {}
class SafeBool (line 353) | class SafeBool {
method type (line 357) | static type makeSafe( bool value ) {
method trueValue (line 361) | void trueValue() const {}
function deleteAll (line 365) | inline void deleteAll( ContainerT& container ) {
function deleteAllValues (line 372) | inline void deleteAllValues( AssociativeContainerT& container ) {
type pluralise (line 387) | struct pluralise {
type SourceLineInfo (line 396) | struct SourceLineInfo {
method SourceLineInfo (line 402) | SourceLineInfo( SourceLineInfo && ) = default;
method SourceLineInfo (line 403) | SourceLineInfo& operator = ( SourceLineInfo const& ) = default;
method SourceLineInfo (line 404) | SourceLineInfo& operator = ( SourceLineInfo && ) = default;
function alwaysTrue (line 417) | inline bool alwaysTrue( std::size_t = 0 ) { return true; }
function alwaysFalse (line 418) | inline bool alwaysFalse( std::size_t = 0 ) { return false; }
type StreamEndStop (line 429) | struct StreamEndStop {
function T (line 435) | T const& operator + ( T const& value, StreamEndStop ) {
class NotImplementedException (line 447) | class NotImplementedException : public std::exception
method NotImplementedException (line 451) | NotImplementedException( NotImplementedException const& ) {}
type IGeneratorInfo (line 477) | struct IGeneratorInfo {
type IGeneratorsForTest (line 483) | struct IGeneratorsForTest {
class Ptr (line 508) | class Ptr {
method Ptr (line 510) | Ptr() : m_p( CATCH_NULL ){}
method Ptr (line 511) | Ptr( T* p ) : m_p( p ){
method Ptr (line 515) | Ptr( Ptr const& other ) : m_p( other.m_p ){
method reset (line 523) | void reset() {
method Ptr (line 528) | Ptr& operator = ( T* p ){
method Ptr (line 533) | Ptr& operator = ( Ptr const& other ){
method swap (line 538) | void swap( Ptr& other ) { std::swap( m_p, other.m_p ); }
method T (line 539) | T* get() const{ return m_p; }
method T (line 540) | T& operator*() const { return *m_p; }
method T (line 541) | T* operator->() const { return m_p; }
type IShared (line 549) | struct IShared : NonCopyable {
type SharedImpl (line 556) | struct SharedImpl : T {
method SharedImpl (line 558) | SharedImpl() : m_rc( 0 ){}
method addRef (line 560) | virtual void addRef() const {
method release (line 563) | virtual void release() const {
class TestCase (line 583) | class TestCase
class Stream (line 584) | class Stream
type IResultCapture (line 585) | struct IResultCapture
type IRunner (line 586) | struct IRunner
type IGeneratorsForTest (line 587) | struct IGeneratorsForTest
type IConfig (line 588) | struct IConfig
type IContext (line 590) | struct IContext
type IMutableContext (line 601) | struct IMutableContext : IContext
class TestSpec (line 626) | class TestSpec
type Pattern (line 3232) | struct Pattern : SharedImpl<> {
class NamePattern (line 3236) | class NamePattern : public Pattern {
method NamePattern (line 3238) | NamePattern( std::string const& name )
method matches (line 3242) | virtual bool matches( TestCaseInfo const& testCase ) const {
class TagPattern (line 3249) | class TagPattern : public Pattern {
method TagPattern (line 3251) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
method matches (line 3253) | virtual bool matches( TestCaseInfo const& testCase ) const {
class ExcludedPattern (line 3260) | class ExcludedPattern : public Pattern {
method ExcludedPattern (line 3262) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
method matches (line 3264) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
type Filter (line 3269) | struct Filter {
method matches (line 3272) | bool matches( TestCaseInfo const& testCase ) const {
method hasFilters (line 3283) | bool hasFilters() const {
method matches (line 3286) | bool matches( TestCaseInfo const& testCase ) const {
type ITestCase (line 628) | struct ITestCase : IShared {
class TestCase (line 634) | class TestCase
type IConfig (line 635) | struct IConfig
type ITestCaseRegistry (line 637) | struct ITestCaseRegistry {
class MethodTestCase (line 652) | class MethodTestCase : public SharedImpl<ITestCase> {
method MethodTestCase (line 655) | MethodTestCase( void (C::*method)() ) : m_method( method ) {}
method invoke (line 657) | virtual void invoke() const {
type NameAndDesc (line 670) | struct NameAndDesc {
method NameAndDesc (line 671) | NameAndDesc( const char* _name = "", const char* _description= "" )
type AutoReg (line 685) | struct AutoReg {
method AutoReg (line 693) | AutoReg
type ResultWas (line 791) | struct ResultWas { enum OfType {
type OfType (line 791) | enum OfType {
function isOk (line 811) | inline bool isOk( ResultWas::OfType resultType ) {
function isJustInfo (line 814) | inline bool isJustInfo( int flags ) {
type ResultDisposition (line 819) | struct ResultDisposition { enum Flags {
type Flags (line 819) | enum Flags {
function shouldContinueOnFailure (line 831) | inline bool shouldContinueOnFailure( int flags ) { return ( flags &...
function isFalseTest (line 832) | inline bool isFalseTest( int flags ) { return ( flags &...
function shouldSuppressFailure (line 833) | inline bool shouldSuppressFailure( int flags ) { return ( flags &...
type AssertionInfo (line 844) | struct AssertionInfo
method AssertionInfo (line 846) | AssertionInfo() {}
type AssertionResultData (line 858) | struct AssertionResultData
method AssertionResultData (line 860) | AssertionResultData() : resultType( ResultWas::Unknown ) {}
class AssertionResult (line 867) | class AssertionResult {
method AssertionResult (line 873) | AssertionResult( AssertionResult const& ) = default;
method AssertionResult (line 874) | AssertionResult( AssertionResult && ) = default;
method AssertionResult (line 875) | AssertionResult& operator = ( AssertionResult const& ) = default;
method AssertionResult (line 876) | AssertionResult& operator = ( AssertionResult && ) = default;
type Matchers (line 903) | namespace Matchers {
type Impl (line 904) | namespace Impl {
type Generic (line 906) | namespace Generic {
class AllOf (line 907) | class AllOf
method AllOf (line 957) | AllOf() {}
method AllOf (line 958) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
method AllOf (line 960) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 964) | virtual bool match( ExpressionT const& expr ) const
method toString (line 971) | virtual std::string toString() const {
method AllOf (line 983) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
class AnyOf (line 908) | class AnyOf
method AnyOf (line 997) | AnyOf() {}
method AnyOf (line 998) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
method AnyOf (line 1000) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 1004) | virtual bool match( ExpressionT const& expr ) const
method toString (line 1011) | virtual std::string toString() const {
method AnyOf (line 1023) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
class Not (line 909) | class Not
method Not (line 939) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
method Not (line 940) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
method match (line 942) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
method toString (line 946) | virtual std::string toString() const CATCH_OVERRIDE {
class Not (line 937) | class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> {
method Not (line 939) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
method Not (line 940) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
method match (line 942) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
method toString (line 946) | virtual std::string toString() const CATCH_OVERRIDE {
class AllOf (line 954) | class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> {
method AllOf (line 957) | AllOf() {}
method AllOf (line 958) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
method AllOf (line 960) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 964) | virtual bool match( ExpressionT const& expr ) const
method toString (line 971) | virtual std::string toString() const {
method AllOf (line 983) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
class AnyOf (line 994) | class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> {
method AnyOf (line 997) | AnyOf() {}
method AnyOf (line 998) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
method AnyOf (line 1000) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 1004) | virtual bool match( ExpressionT const& expr ) const
method toString (line 1011) | virtual std::string toString() const {
method AnyOf (line 1023) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
type Matcher (line 913) | struct Matcher : SharedImpl<IShared>
type MatcherImpl (line 928) | struct MatcherImpl : Matcher<ExpressionT> {
method clone (line 930) | virtual Ptr<Matcher<ExpressionT> > clone() const {
type Generic (line 935) | namespace Generic {
class AllOf (line 907) | class AllOf
method AllOf (line 957) | AllOf() {}
method AllOf (line 958) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
method AllOf (line 960) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 964) | virtual bool match( ExpressionT const& expr ) const
method toString (line 971) | virtual std::string toString() const {
method AllOf (line 983) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
class AnyOf (line 908) | class AnyOf
method AnyOf (line 997) | AnyOf() {}
method AnyOf (line 998) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
method AnyOf (line 1000) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 1004) | virtual bool match( ExpressionT const& expr ) const
method toString (line 1011) | virtual std::string toString() const {
method AnyOf (line 1023) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
class Not (line 909) | class Not
method Not (line 939) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
method Not (line 940) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
method match (line 942) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
method toString (line 946) | virtual std::string toString() const CATCH_OVERRIDE {
class Not (line 937) | class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> {
method Not (line 939) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
method Not (line 940) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
method match (line 942) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
method toString (line 946) | virtual std::string toString() const CATCH_OVERRIDE {
class AllOf (line 954) | class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> {
method AllOf (line 957) | AllOf() {}
method AllOf (line 958) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
method AllOf (line 960) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 964) | virtual bool match( ExpressionT const& expr ) const
method toString (line 971) | virtual std::string toString() const {
method AllOf (line 983) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
class AnyOf (line 994) | class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> {
method AnyOf (line 997) | AnyOf() {}
method AnyOf (line 998) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
method AnyOf (line 1000) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
method match (line 1004) | virtual bool match( ExpressionT const& expr ) const
method toString (line 1011) | virtual std::string toString() const {
method AnyOf (line 1023) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
type StdString (line 1056) | namespace StdString {
function makeString (line 1058) | inline std::string makeString( std::string const& str ) { return...
function makeString (line 1059) | inline std::string makeString( const char* str ) { return str ? ...
type CasedString (line 1061) | struct CasedString
method CasedString (line 1063) | CasedString( std::string const& str, CaseSensitive::Choice cas...
method adjustString (line 1067) | std::string adjustString( std::string const& str ) const {
method toStringSuffix (line 1073) | std::string toStringSuffix() const
type Equals (line 1083) | struct Equals : MatcherImpl<Equals, std::string> {
method Equals (line 1084) | Equals( std::string const& str, CaseSensitive::Choice caseSens...
method Equals (line 1087) | Equals( Equals const& other ) : m_data( other.m_data ){}
method match (line 1091) | virtual bool match( std::string const& expr ) const {
method toString (line 1094) | virtual std::string toString() const {
type Contains (line 1101) | struct Contains : MatcherImpl<Contains, std::string> {
method Contains (line 1102) | Contains( std::string const& substr, CaseSensitive::Choice cas...
method Contains (line 1104) | Contains( Contains const& other ) : m_data( other.m_data ){}
method match (line 1108) | virtual bool match( std::string const& expr ) const {
method toString (line 1111) | virtual std::string toString() const {
type StartsWith (line 1118) | struct StartsWith : MatcherImpl<StartsWith, std::string> {
method StartsWith (line 1119) | StartsWith( std::string const& substr, CaseSensitive::Choice c...
method StartsWith (line 1122) | StartsWith( StartsWith const& other ) : m_data( other.m_data ){}
method match (line 1126) | virtual bool match( std::string const& expr ) const {
method toString (line 1129) | virtual std::string toString() const {
type EndsWith (line 1136) | struct EndsWith : MatcherImpl<EndsWith, std::string> {
method EndsWith (line 1137) | EndsWith( std::string const& substr, CaseSensitive::Choice cas...
method EndsWith (line 1139) | EndsWith( EndsWith const& other ) : m_data( other.m_data ){}
method match (line 1143) | virtual bool match( std::string const& expr ) const {
method toString (line 1146) | virtual std::string toString() const {
function Not (line 1158) | inline Impl::Generic::Not<ExpressionT> Not( Impl::Matcher<Expression...
function AllOf (line 1163) | inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<Expres...
function AllOf (line 1168) | inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<Expres...
function AnyOf (line 1174) | inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<Expres...
function AnyOf (line 1179) | inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<Expres...
function Equals (line 1185) | inline Impl::StdString::Equals Equals( std::string const& str, ...
function Equals (line 1188) | inline Impl::StdString::Equals Equals( const char* str, CaseSen...
function Contains (line 1191) | inline Impl::StdString::Contains Contains( std::string const& sub...
function Contains (line 1194) | inline Impl::StdString::Contains Contains( const char* substr, Ca...
function StartsWith (line 1197) | inline Impl::StdString::StartsWith StartsWith( std::string const& s...
function StartsWith (line 1200) | inline Impl::StdString::StartsWith StartsWith( const char* substr ) {
function EndsWith (line 1203) | inline Impl::StdString::EndsWith EndsWith( std::string const& sub...
function EndsWith (line 1206) | inline Impl::StdString::EndsWith EndsWith( const char* substr ) {
type TestFailureException (line 1218) | struct TestFailureException{}
class ExpressionLhs (line 1220) | class ExpressionLhs
method ExpressionLhs (line 1814) | ExpressionLhs& operator = ( ExpressionLhs && ) = delete;
method ExpressionLhs (line 1818) | ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {}
method ExpressionLhs (line 1820) | ExpressionLhs( ExpressionLhs const& ) = default;
method ExpressionLhs (line 1821) | ExpressionLhs( ExpressionLhs && ) = default;
method ResultBuilder (line 1825) | ResultBuilder& operator == ( RhsT const& rhs ) {
method ResultBuilder (line 1830) | ResultBuilder& operator != ( RhsT const& rhs ) {
method ResultBuilder (line 1835) | ResultBuilder& operator < ( RhsT const& rhs ) {
method ResultBuilder (line 1840) | ResultBuilder& operator > ( RhsT const& rhs ) {
method ResultBuilder (line 1845) | ResultBuilder& operator <= ( RhsT const& rhs ) {
method ResultBuilder (line 1850) | ResultBuilder& operator >= ( RhsT const& rhs ) {
method ResultBuilder (line 1854) | ResultBuilder& operator == ( bool rhs ) {
method ResultBuilder (line 1858) | ResultBuilder& operator != ( bool rhs ) {
method endExpression (line 1862) | void endExpression() {
method ResultBuilder (line 1881) | ResultBuilder& captureExpression( RhsT const& rhs ) {
type STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison (line 1222) | struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_C...
type CopyableStream (line 1224) | struct CopyableStream {
method CopyableStream (line 1225) | CopyableStream() {}
method CopyableStream (line 1226) | CopyableStream( CopyableStream const& other ) {
method CopyableStream (line 1229) | CopyableStream& operator=( CopyableStream const& other ) {
class ResultBuilder (line 1237) | class ResultBuilder {
method ResultBuilder (line 1250) | ResultBuilder& operator << ( T const& value ) {
type ExprComponents (line 1282) | struct ExprComponents {
method ExprComponents (line 1283) | ExprComponents() : testFalse( false ) {}
type Internal (line 1310) | namespace Internal {
type Operator (line 1312) | enum Operator {
type OperatorTraits (line 1321) | struct OperatorTraits { static const char* getName(){ re...
type OperatorTraits<IsEqualTo> (line 1322) | struct OperatorTraits<IsEqualTo> { static const char* ge...
type OperatorTraits<IsNotEqualTo> (line 1323) | struct OperatorTraits<IsNotEqualTo> { static const char* ge...
type OperatorTraits<IsLessThan> (line 1324) | struct OperatorTraits<IsLessThan> { static const char* ge...
type OperatorTraits<IsGreaterThan> (line 1325) | struct OperatorTraits<IsGreaterThan> { static const char* ge...
type OperatorTraits<IsLessThanOrEqualTo> (line 1326) | struct OperatorTraits<IsLessThanOrEqualTo> { static const char* ge...
type OperatorTraits<IsGreaterThanOrEqualTo> (line 1327) | struct OperatorTraits<IsGreaterThanOrEqualTo>{ static const char* ge...
function T (line 1330) | inline T& opCast(T const& t) { return const_cast<T&>(t); }
function opCast (line 1334) | inline std::nullptr_t opCast(std::nullptr_t) { return nullptr; }
class Evaluator (line 1340) | class Evaluator{}
type Evaluator<T1, T2, IsEqualTo> (line 1343) | struct Evaluator<T1, T2, IsEqualTo> {
method evaluate (line 1344) | static bool evaluate( T1 const& lhs, T2 const& rhs) {
type Evaluator<T1, T2, IsNotEqualTo> (line 1349) | struct Evaluator<T1, T2, IsNotEqualTo> {
method evaluate (line 1350) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
type Evaluator<T1, T2, IsLessThan> (line 1355) | struct Evaluator<T1, T2, IsLessThan> {
method evaluate (line 1356) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
type Evaluator<T1, T2, IsGreaterThan> (line 1361) | struct Evaluator<T1, T2, IsGreaterThan> {
method evaluate (line 1362) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
type Evaluator<T1, T2, IsGreaterThanOrEqualTo> (line 1367) | struct Evaluator<T1, T2, IsGreaterThanOrEqualTo> {
method evaluate (line 1368) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
type Evaluator<T1, T2, IsLessThanOrEqualTo> (line 1373) | struct Evaluator<T1, T2, IsLessThanOrEqualTo> {
method evaluate (line 1374) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
function applyEvaluator (line 1380) | bool applyEvaluator( T1 const& lhs, T2 const& rhs ) {
function compare (line 1389) | bool compare( T1 const& lhs, T2 const& rhs ) {
function compare (line 1394) | bool compare( unsigned int lhs, int rhs ) {
function compare (line 1397) | bool compare( unsigned long lhs, int rhs ) {
function compare (line 1400) | bool compare( unsigned char lhs, int rhs ) {
function compare (line 1405) | bool compare( unsigned int lhs, long rhs ) {
function compare (line 1408) | bool compare( unsigned long lhs, long rhs ) {
function compare (line 1411) | bool compare( unsigned char lhs, long rhs ) {
function compare (line 1416) | bool compare( int lhs, unsigned int rhs ) {
function compare (line 1419) | bool compare( int lhs, unsigned long rhs ) {
function compare (line 1422) | bool compare( int lhs, unsigned char rhs ) {
function compare (line 1427) | bool compare( long lhs, unsigned int rhs ) {
function compare (line 1430) | bool compare( long lhs, unsigned long rhs ) {
function compare (line 1433) | bool compare( long lhs, unsigned char rhs ) {
function compare (line 1438) | bool compare( long lhs, T* rhs ) {
function compare (line 1441) | bool compare( T* lhs, long rhs ) {
function compare (line 1446) | bool compare( int lhs, T* rhs ) {
function compare (line 1449) | bool compare( T* lhs, int rhs ) {
function compare (line 1455) | bool compare( long long lhs, unsigned int rhs ) {
function compare (line 1458) | bool compare( long long lhs, unsigned long rhs ) {
function compare (line 1461) | bool compare( long long lhs, unsigned long long rhs ) {
function compare (line 1464) | bool compare( long long lhs, unsigned char rhs ) {
function compare (line 1469) | bool compare( unsigned long long lhs, int rhs ) {
function compare (line 1472) | bool compare( unsigned long long lhs, long rhs ) {
function compare (line 1475) | bool compare( unsigned long long lhs, long long rhs ) {
function compare (line 1478) | bool compare( unsigned long long lhs, char rhs ) {
function compare (line 1483) | bool compare( long long lhs, T* rhs ) {
function compare (line 1486) | bool compare( T* lhs, long long rhs ) {
function compare (line 1493) | bool compare( std::nullptr_t, T* rhs ) {
function compare (line 1496) | bool compare( T* lhs, std::nullptr_t ) {
type Detail (line 1610) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
type StringMaker (line 1687) | struct StringMaker :
type StringMaker<T*> (line 1691) | struct StringMaker<T*> {
method convert (line 1693) | static std::string convert( U* p ) {
type StringMaker<R C::*> (line 1702) | struct StringMaker<R C::*> {
method convert (line 1703) | static std::string convert( R C::* p ) {
type Detail (line 1711) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
function toString (line 1724) | std::string toString( std::vector<T,Allocator> const& v ) {
type TupleDetail (line 1731) | namespace TupleDetail {
type ElementPrinter (line 1737) | struct ElementPrinter {
method print (line 1738) | static void print( const Tuple& tuple, std::ostream& os )
type ElementPrinter<Tuple,N,false> (line 1750) | struct ElementPrinter<Tuple,N,false> {
method print (line 1751) | static void print( const Tuple&, std::ostream& ) {}
type Detail (line 1770) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
function toString (line 1785) | std::string toString( T const& value ) {
type Detail (line 1789) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
class ExpressionLhs (line 1811) | class ExpressionLhs {
method ExpressionLhs (line 1814) | ExpressionLhs& operator = ( ExpressionLhs && ) = delete;
method ExpressionLhs (line 1818) | ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {}
method ExpressionLhs (line 1820) | ExpressionLhs( ExpressionLhs const& ) = default;
method ExpressionLhs (line 1821) | ExpressionLhs( ExpressionLhs && ) = default;
method ResultBuilder (line 1825) | ResultBuilder& operator == ( RhsT const& rhs ) {
method ResultBuilder (line 1830) | ResultBuilder& operator != ( RhsT const& rhs ) {
method ResultBuilder (line 1835) | ResultBuilder& operator < ( RhsT const& rhs ) {
method ResultBuilder (line 1840) | ResultBuilder& operator > ( RhsT const& rhs ) {
method ResultBuilder (line 1845) | ResultBuilder& operator <= ( RhsT const& rhs ) {
method ResultBuilder (line 1850) | ResultBuilder& operator >= ( RhsT const& rhs ) {
method ResultBuilder (line 1854) | ResultBuilder& operator == ( bool rhs ) {
method ResultBuilder (line 1858) | ResultBuilder& operator != ( bool rhs ) {
method endExpression (line 1862) | void endExpression() {
method ResultBuilder (line 1881) | ResultBuilder& captureExpression( RhsT const& rhs ) {
type MessageInfo (line 1917) | struct MessageInfo {
type MessageBuilder (line 1938) | struct MessageBuilder {
method MessageBuilder (line 1939) | MessageBuilder( std::string const& macroName,
method MessageBuilder (line 1946) | MessageBuilder& operator << ( T const& value ) {
class ScopedMessage (line 1955) | class ScopedMessage {
class TestCase (line 1973) | class TestCase
class AssertionResult (line 1974) | class AssertionResult
method AssertionResult (line 873) | AssertionResult( AssertionResult const& ) = default;
method AssertionResult (line 874) | AssertionResult( AssertionResult && ) = default;
method AssertionResult (line 875) | AssertionResult& operator = ( AssertionResult const& ) = default;
method AssertionResult (line 876) | AssertionResult& operator = ( AssertionResult && ) = default;
type AssertionInfo (line 1975) | struct AssertionInfo
method AssertionInfo (line 846) | AssertionInfo() {}
type SectionInfo (line 1976) | struct SectionInfo
type SectionEndInfo (line 1977) | struct SectionEndInfo
method SectionEndInfo (line 2298) | SectionEndInfo( SectionInfo const& _sectionInfo, Counts const& _prev...
type MessageInfo (line 1978) | struct MessageInfo
class ScopedMessageBuilder (line 1979) | class ScopedMessageBuilder
type Counts (line 1980) | struct Counts
method Counts (line 2222) | Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {}
method Counts (line 2224) | Counts operator - ( Counts const& other ) const {
method Counts (line 2231) | Counts& operator += ( Counts const& other ) {
method total (line 2238) | std::size_t total() const {
method allPassed (line 2241) | bool allPassed() const {
method allOk (line 2244) | bool allOk() const {
type IResultCapture (line 1982) | struct IResultCapture {
class TestCase (line 2075) | class TestCase
type IRunner (line 2077) | struct IRunner {
type Counts (line 2221) | struct Counts {
method Counts (line 2222) | Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {}
method Counts (line 2224) | Counts operator - ( Counts const& other ) const {
method Counts (line 2231) | Counts& operator += ( Counts const& other ) {
method total (line 2238) | std::size_t total() const {
method allPassed (line 2241) | bool allPassed() const {
method allOk (line 2244) | bool allOk() const {
type Totals (line 2253) | struct Totals {
method Totals (line 2255) | Totals operator - ( Totals const& other ) const {
method Totals (line 2262) | Totals delta( Totals const& prevTotals ) const {
method Totals (line 2273) | Totals& operator += ( Totals const& other ) {
type SectionInfo (line 2286) | struct SectionInfo {
type SectionEndInfo (line 2297) | struct SectionEndInfo {
method SectionEndInfo (line 2298) | SectionEndInfo( SectionInfo const& _sectionInfo, Counts const& _prev...
class Timer (line 2320) | class Timer {
method Timer (line 2322) | Timer() : m_ticks( 0 ) {}
class Section (line 2338) | class Section : NonCopyable {
type IGenerator (line 2376) | struct IGenerator {
class BetweenGenerator (line 2383) | class BetweenGenerator : public IGenerator<T> {
method BetweenGenerator (line 2385) | BetweenGenerator( T from, T to ) : m_from( from ), m_to( to ){}
method T (line 2387) | virtual T getValue( std::size_t index ) const {
method size (line 2391) | virtual std::size_t size() const {
class ValuesGenerator (line 2402) | class ValuesGenerator : public IGenerator<T> {
method ValuesGenerator (line 2404) | ValuesGenerator(){}
method add (line 2406) | void add( T value ) {
method T (line 2410) | virtual T getValue( std::size_t index ) const {
method size (line 2414) | virtual std::size_t size() const {
class CompositeGenerator (line 2423) | class CompositeGenerator {
method CompositeGenerator (line 2425) | CompositeGenerator() : m_totalSize( 0 ) {}
method CompositeGenerator (line 2428) | CompositeGenerator( CompositeGenerator& other )
method CompositeGenerator (line 2435) | CompositeGenerator& setFileInfo( const char* fileInfo ) {
method add (line 2462) | void add( const IGenerator<T>* generator ) {
method CompositeGenerator (line 2467) | CompositeGenerator& then( CompositeGenerator& other ) {
method CompositeGenerator (line 2472) | CompositeGenerator& then( T value ) {
method move (line 2481) | void move( CompositeGenerator& other ) {
type Generators (line 2492) | namespace Generators
function between (line 2495) | CompositeGenerator<T> between( T from, T to ) {
function values (line 2502) | CompositeGenerator<T> values( T val1, T val2 ) {
function values (line 2512) | CompositeGenerator<T> values( T val1, T val2, T val3 ){
function values (line 2523) | CompositeGenerator<T> values( T val1, T val2, T val3, T val4 ) {
class TestCase (line 2558) | class TestCase
type ITestCaseRegistry (line 2559) | struct ITestCaseRegistry
type IExceptionTranslatorRegistry (line 2560) | struct IExceptionTranslatorRegistry
type IExceptionTranslator (line 2561) | struct IExceptionTranslator
type IReporterRegistry (line 2562) | struct IReporterRegistry
type IReporterFactory (line 2563) | struct IReporterFactory
type IRegistryHub (line 2565) | struct IRegistryHub {
type IMutableRegistryHub (line 2573) | struct IMutableRegistryHub {
type IExceptionTranslator (line 2592) | struct IExceptionTranslator
type IExceptionTranslator (line 2595) | struct IExceptionTranslator {
type IExceptionTranslatorRegistry (line 2600) | struct IExceptionTranslatorRegistry {
class ExceptionTranslatorRegistrar (line 2606) | class ExceptionTranslatorRegistrar {
class ExceptionTranslator (line 2608) | class ExceptionTranslator : public IExceptionTranslator {
method ExceptionTranslator (line 2611) | ExceptionTranslator( std::string(*translateFunction)( T& ) )
method translate (line 2615) | virtual std::string translate( ExceptionTranslators::const_iterato...
method ExceptionTranslatorRegistrar (line 2633) | ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) {
type Detail (line 2655) | namespace Detail {
type BorgType (line 1614) | struct BorgType {
type TrueType (line 1618) | struct TrueType { char sizer[1]; }
type FalseType (line 1619) | struct FalseType { char sizer[2]; }
type IsStreamInsertable (line 1627) | struct IsStreamInsertable {
type EnumStringMaker (line 1637) | struct EnumStringMaker
method convert (line 1639) | static std::string convert( T const& ) { return unprintableString; }
type EnumStringMaker<T,true> (line 1643) | struct EnumStringMaker<T,true>
method convert (line 1645) | static std::string convert( T const& v )
type StringMakerBase (line 1654) | struct StringMakerBase {
method convert (line 1657) | static std::string convert( T const& v )
method convert (line 1663) | static std::string convert( T const& ) { return unprintableString; }
type StringMakerBase<true> (line 1668) | struct StringMakerBase<true> {
method convert (line 1670) | static std::string convert( T const& _value ) {
function rawMemoryToString (line 1680) | inline std::string rawMemoryToString( const T& object ) {
function makeString (line 1772) | std::string makeString( T const& value ) {
function rangeToString (line 1791) | std::string rangeToString( InputIterator first, InputIterator last ) {
class Approx (line 2657) | class Approx {
method Approx (line 2659) | explicit Approx ( double value )
method Approx (line 2665) | Approx( Approx const& other )
method Approx (line 2671) | static Approx custom() {
method Approx (line 2675) | Approx operator()( double value ) {
method Approx (line 2719) | Approx& epsilon( double newEpsilon ) {
method Approx (line 2724) | Approx& scale( double newScale ) {
method toString (line 2729) | std::string toString() const {
type Endianness (line 8147) | struct Endianness {
type Arch (line 8148) | enum Arch { Big, Little }
method Arch (line 8150) | static Arch which() {
function rawMemoryToString (line 8162) | std::string rawMemoryToString( const void *object, std::size_t size )
type TagAlias (line 2759) | struct TagAlias {
method TagAlias (line 2760) | TagAlias( std::string _tag, SourceLineInfo _lineInfo ) : tag( _tag )...
type RegistrarForTagAliases (line 2766) | struct RegistrarForTagAliases {
class Option (line 2780) | class Option {
method Option (line 2782) | Option() : nullableValue( CATCH_NULL ) {}
method Option (line 2783) | Option( T const& _value )
method Option (line 2786) | Option( Option const& _other )
method Option (line 2794) | Option& operator= ( Option const& _other ) {
method Option (line 2802) | Option& operator = ( T const& _value ) {
method reset (line 2808) | void reset() {
method T (line 2814) | T& operator*() { return *nullableValue; }
method T (line 2815) | T const& operator*() const { return *nullableValue; }
method T (line 2816) | T* operator->() { return nullableValue; }
method T (line 2817) | const T* operator->() const { return nullableValue; }
method T (line 2819) | T valueOr( T const& defaultValue ) const {
method some (line 2823) | bool some() const { return nullableValue != CATCH_NULL; }
method none (line 2824) | bool none() const { return nullableValue == CATCH_NULL; }
type ITagAliasRegistry (line 2840) | struct ITagAliasRegistry {
type ITestCase (line 2865) | struct ITestCase
type TestCaseInfo (line 2867) | struct TestCaseInfo {
type SpecialProperties (line 2868) | enum SpecialProperties{
class TestCase (line 2901) | class TestCase : public TestCaseInfo {
class WildcardPattern (line 3170) | class WildcardPattern {
type WildcardPosition (line 3171) | enum WildcardPosition {
method WildcardPattern (line 3180) | WildcardPattern( std::string const& pattern, CaseSensitive::Choice c...
method matches (line 3195) | virtual bool matches( std::string const& str ) const {
method adjustCase (line 3217) | std::string adjustCase( std::string const& str ) const {
class TestSpec (line 3231) | class TestSpec {
type Pattern (line 3232) | struct Pattern : SharedImpl<> {
class NamePattern (line 3236) | class NamePattern : public Pattern {
method NamePattern (line 3238) | NamePattern( std::string const& name )
method matches (line 3242) | virtual bool matches( TestCaseInfo const& testCase ) const {
class TagPattern (line 3249) | class TagPattern : public Pattern {
method TagPattern (line 3251) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
method matches (line 3253) | virtual bool matches( TestCaseInfo const& testCase ) const {
class ExcludedPattern (line 3260) | class ExcludedPattern : public Pattern {
method ExcludedPattern (line 3262) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
method matches (line 3264) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
type Filter (line 3269) | struct Filter {
method matches (line 3272) | bool matches( TestCaseInfo const& testCase ) const {
method hasFilters (line 3283) | bool hasFilters() const {
method matches (line 3286) | bool matches( TestCaseInfo const& testCase ) const {
class TestSpecParser (line 3307) | class TestSpecParser {
type Mode (line 3308) | enum Mode{ None, Name, QuotedName, Tag, EscapedName }
method TestSpecParser (line 3319) | TestSpecParser( ITagAliasRegistry const& tagAliases ) : m_tagAliases...
method TestSpecParser (line 3321) | TestSpecParser& parse( std::string const& arg ) {
method TestSpec (line 3333) | TestSpec testSpec() {
method visitChar (line 3338) | void visitChar( char c ) {
method startNewMode (line 3371) | void startNewMode( Mode mode, std::size_t start ) {
method escape (line 3375) | void escape() {
method subString (line 3379) | std::string subString() const { return m_arg.substr( m_start, m_pos ...
method addPattern (line 3381) | void addPattern() {
method addFilter (line 3399) | void addFilter() {
function TestSpec (line 3406) | inline TestSpec parseTestSpec( std::string const& arg ) {
type Pattern (line 3232) | struct Pattern : SharedImpl<> {
class NamePattern (line 3236) | class NamePattern : public Pattern {
method NamePattern (line 3238) | NamePattern( std::string const& name )
method matches (line 3242) | virtual bool matches( TestCaseInfo const& testCase ) const {
class TagPattern (line 3249) | class TagPattern : public Pattern {
method TagPattern (line 3251) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
method matches (line 3253) | virtual bool matches( TestCaseInfo const& testCase ) const {
class ExcludedPattern (line 3260) | class ExcludedPattern : public Pattern {
method ExcludedPattern (line 3262) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
method matches (line 3264) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
type Filter (line 3269) | struct Filter {
method matches (line 3272) | bool matches( TestCaseInfo const& testCase ) const {
method hasFilters (line 3283) | bool hasFilters() const {
method matches (line 3286) | bool matches( TestCaseInfo const& testCase ) const {
type Verbosity (line 3425) | struct Verbosity { enum Level {
type Level (line 3425) | enum Level {
type WarnAbout (line 3431) | struct WarnAbout { enum What {
type What (line 3431) | enum What {
type ShowDurations (line 3436) | struct ShowDurations { enum OrNot {
type OrNot (line 3436) | enum OrNot {
type RunTests (line 3441) | struct RunTests { enum InWhatOrder {
type InWhatOrder (line 3441) | enum InWhatOrder {
type UseColour (line 3446) | struct UseColour { enum YesOrNo {
type YesOrNo (line 3446) | enum YesOrNo {
class TestSpec (line 3452) | class TestSpec
type Pattern (line 3232) | struct Pattern : SharedImpl<> {
class NamePattern (line 3236) | class NamePattern : public Pattern {
method NamePattern (line 3238) | NamePattern( std::string const& name )
method matches (line 3242) | virtual bool matches( TestCaseInfo const& testCase ) const {
class TagPattern (line 3249) | class TagPattern : public Pattern {
method TagPattern (line 3251) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
method matches (line 3253) | virtual bool matches( TestCaseInfo const& testCase ) const {
class ExcludedPattern (line 3260) | class ExcludedPattern : public Pattern {
method ExcludedPattern (line 3262) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
method matches (line 3264) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
type Filter (line 3269) | struct Filter {
method matches (line 3272) | bool matches( TestCaseInfo const& testCase ) const {
method hasFilters (line 3283) | bool hasFilters() const {
method matches (line 3286) | bool matches( TestCaseInfo const& testCase ) const {
type IConfig (line 3454) | struct IConfig : IShared {
class StreamBufBase (line 3484) | class StreamBufBase : public std::streambuf {
type IStream (line 3500) | struct IStream {
class FileStream (line 3505) | class FileStream : public IStream {
class CoutStream (line 3514) | class CoutStream : public IStream {
class DebugOutStream (line 3524) | class DebugOutStream : public IStream {
type ConfigData (line 3548) | struct ConfigData {
method ConfigData (line 3550) | ConfigData()
class Config (line 3599) | class Config : public SharedImpl<IConfig> {
method Config (line 3606) | Config()
method Config (line 3609) | Config( ConfigData const& data )
method listTests (line 3628) | bool listTests() const { return m_data.listTests; }
method listTestNamesOnly (line 3629) | bool listTestNamesOnly() const { return m_data.listTestNamesOnly; }
method listTags (line 3630) | bool listTags() const { return m_data.listTags; }
method listReporters (line 3631) | bool listReporters() const { return m_data.listReporters; }
method getProcessName (line 3633) | std::string getProcessName() const { return m_data.processName; }
method shouldDebugBreak (line 3635) | bool shouldDebugBreak() const { return m_data.shouldDebugBreak; }
method getReporterNames (line 3637) | std::vector<std::string> getReporterNames() const { return m_data.re...
method abortAfter (line 3639) | int abortAfter() const { return m_data.abortAfter; }
method TestSpec (line 3641) | TestSpec const& testSpec() const { return m_testSpec; }
method showHelp (line 3643) | bool showHelp() const { return m_data.showHelp; }
method showInvisibles (line 3644) | bool showInvisibles() const { return m_data.showInvisibles; }
method allowThrows (line 3647) | virtual bool allowThrows() const { return !m_data.noThrow; }
method name (line 3649) | virtual std::string name() const { return m_data.name.empty()...
method includeSuccessfulResults (line 3650) | virtual bool includeSuccessfulResults() const { return m_data.show...
method warnAboutMissingAssertions (line 3651) | virtual bool warnAboutMissingAssertions() const { return m_data.warn...
method showDurations (line 3652) | virtual ShowDurations::OrNot showDurations() const { return m_data.s...
method runOrder (line 3653) | virtual RunTests::InWhatOrder runOrder() const { return m_data.runO...
method rngSeed (line 3654) | virtual unsigned int rngSeed() const { return m_data.rngSeed; }
method useColour (line 3655) | virtual UseColour::YesOrNo useColour() const { return m_data.useColo...
method IStream (line 3659) | IStream const* openStream() {
function abortAfterFirst (line 4720) | inline void abortAfterFirst( ConfigData& config ) { config.abortAfter ...
function abortAfterX (line 4721) | inline void abortAfterX( ConfigData& config, int x ) {
function addTestOrTags (line 4726) | inline void addTestOrTags( ConfigData& config, std::string const& _tes...
function addReporterName (line 4727) | inline void addReporterName( ConfigData& config, std::string const& _r...
function addWarning (line 4729) | inline void addWarning( ConfigData& config, std::string const& _warnin...
function setOrder (line 4735) | inline void setOrder( ConfigData& config, std::string const& order ) {
function setRngSeed (line 4745) | inline void setRngSeed( ConfigData& config, std::string const& seed ) {
function setVerbosity (line 4757) | inline void setVerbosity( ConfigData& config, int level ) {
function setShowDurations (line 4761) | inline void setShowDurations( ConfigData& config, bool _showDurations ) {
function setUseColour (line 4766) | inline void setUseColour( ConfigData& config, std::string const& value...
function forceColour (line 4778) | inline void forceColour( ConfigData& config ) {
function loadTestNamesFromFile (line 4781) | inline void loadTestNamesFromFile( ConfigData& config, std::string con...
function makeCommandLineParser (line 4797) | inline Clara::CommandLine<ConfigData> makeCommandLineParser() {
type Colour (line 5078) | struct Colour {
type Code (line 5079) | enum Code {
type ReporterConfig (line 5140) | struct ReporterConfig {
method ReporterConfig (line 5141) | explicit ReporterConfig( Ptr<IConfig const> const& _fullConfig )
method ReporterConfig (line 5144) | ReporterConfig( Ptr<IConfig const> const& _fullConfig, std::ostream&...
method fullConfig (line 5148) | Ptr<IConfig const> fullConfig() const { return m_fullConfig; }
type ReporterPreferences (line 5155) | struct ReporterPreferences {
method ReporterPreferences (line 5156) | ReporterPreferences()
type LazyStat (line 5164) | struct LazyStat : Option<T> {
method LazyStat (line 5165) | LazyStat() : used( false ) {}
method LazyStat (line 5166) | LazyStat& operator=( T const& _value ) {
method reset (line 5171) | void reset() {
type TestRunInfo (line 5178) | struct TestRunInfo {
method TestRunInfo (line 5179) | TestRunInfo( std::string const& _name ) : name( _name ) {}
type GroupInfo (line 5182) | struct GroupInfo {
method GroupInfo (line 5183) | GroupInfo( std::string const& _name,
type AssertionStats (line 5196) | struct AssertionStats {
method AssertionStats (line 5197) | AssertionStats( AssertionResult const& _assertionResult,
method AssertionStats (line 5217) | AssertionStats( AssertionStats const& ) = default;
method AssertionStats (line 5218) | AssertionStats( AssertionStats && ) = default;
method AssertionStats (line 5219) | AssertionStats& operator = ( AssertionStats const& ) = default;
method AssertionStats (line 5220) | AssertionStats& operator = ( AssertionStats && ) = default;
type SectionStats (line 5228) | struct SectionStats {
method SectionStats (line 5229) | SectionStats( SectionInfo const& _sectionInfo,
method SectionStats (line 5240) | SectionStats( SectionStats const& ) = default;
method SectionStats (line 5241) | SectionStats( SectionStats && ) = default;
method SectionStats (line 5242) | SectionStats& operator = ( SectionStats const& ) = default;
method SectionStats (line 5243) | SectionStats& operator = ( SectionStats && ) = default;
type TestCaseStats (line 5252) | struct TestCaseStats {
method TestCaseStats (line 5253) | TestCaseStats( TestCaseInfo const& _testInfo,
method TestCaseStats (line 5267) | TestCaseStats( TestCaseStats const& ) = default;
method TestCaseStats (line 5268) | TestCaseStats( TestCaseStats && ) = default;
method TestCaseStats (line 5269) | TestCaseStats& operator = ( TestCaseStats const& ) = default;
method TestCaseStats (line 5270) | TestCaseStats& operator = ( TestCaseStats && ) = default;
type TestGroupStats (line 5280) | struct TestGroupStats {
method TestGroupStats (line 5281) | TestGroupStats( GroupInfo const& _groupInfo,
method TestGroupStats (line 5288) | TestGroupStats( GroupInfo const& _groupInfo )
method TestGroupStats (line 5295) | TestGroupStats( TestGroupStats const& ) = default;
method TestGroupStats (line 5296) | TestGroupStats( TestGroupStats && ) = default;
method TestGroupStats (line 5297) | TestGroupStats& operator = ( TestGroupStats const& ) = default;
method TestGroupStats (line 5298) | TestGroupStats& operator = ( TestGroupStats && ) = default;
type TestRunStats (line 5306) | struct TestRunStats {
method TestRunStats (line 5307) | TestRunStats( TestRunInfo const& _runInfo,
method TestRunStats (line 5317) | TestRunStats( TestRunStats const& _other )
method TestRunStats (line 5323) | TestRunStats( TestRunStats const& ) = default;
method TestRunStats (line 5324) | TestRunStats( TestRunStats && ) = default;
method TestRunStats (line 5325) | TestRunStats& operator = ( TestRunStats const& ) = default;
method TestRunStats (line 5326) | TestRunStats& operator = ( TestRunStats && ) = default;
class MultipleReporters (line 5334) | class MultipleReporters
method add (line 8574) | void add( Ptr<IStreamingReporter> const& reporter ) {
method ReporterPreferences (line 8580) | virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE {
method noMatchingTestCases (line 8584) | virtual void noMatchingTestCases( std::string const& spec ) CATCH_OV...
method testRunStarting (line 8591) | virtual void testRunStarting( TestRunInfo const& testRunInfo ) CATCH...
method testGroupStarting (line 8598) | virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_O...
method testCaseStarting (line 8605) | virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_...
method sectionStarting (line 8612) | virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH...
method assertionStarting (line 8619) | virtual void assertionStarting( AssertionInfo const& assertionInfo )...
method assertionEnded (line 8627) | virtual bool assertionEnded( AssertionStats const& assertionStats ) ...
method sectionEnded (line 8636) | virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_...
method testCaseEnded (line 8643) | virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CAT...
method testGroupEnded (line 8650) | virtual void testGroupEnded( TestGroupStats const& testGroupStats ) ...
method testRunEnded (line 8657) | virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_...
method skipTest (line 8664) | virtual void skipTest( TestCaseInfo const& testInfo ) CATCH_OVERRIDE {
method MultipleReporters (line 8671) | virtual MultipleReporters* tryAsMulti() CATCH_OVERRIDE {
type IStreamingReporter (line 5336) | struct IStreamingReporter : IShared {
method MultipleReporters (line 5364) | virtual MultipleReporters* tryAsMulti() { return CATCH_NULL; }
type IReporterFactory (line 5367) | struct IReporterFactory : IShared {
type IReporterRegistry (line 5373) | struct IReporterRegistry {
function listTests (line 5392) | inline std::size_t listTests( Config const& config ) {
function listTestsNamesOnly (line 5430) | inline std::size_t listTestsNamesOnly( Config const& config ) {
type TagInfo (line 5449) | struct TagInfo {
method TagInfo (line 5450) | TagInfo() : count ( 0 ) {}
method add (line 5451) | void add( std::string const& spelling ) {
method all (line 5455) | std::string all() const {
function listTags (line 5467) | inline std::size_t listTags( Config const& config ) {
function listReporters (line 5511) | inline std::size_t listReporters( Config const& /*config*/ ) {
function list (line 5534) | inline Option<std::size_t> list( Config const& config ) {
type TestCaseTracking (line 5561) | namespace TestCaseTracking {
type ITracker (line 5563) | struct ITracker : SharedImpl<> {
class TrackerContext (line 5591) | class TrackerContext {
type RunState (line 5593) | enum RunState {
method TrackerContext (line 5605) | static TrackerContext& instance() {
method TrackerContext (line 5610) | TrackerContext()
method endRun (line 5617) | void endRun() {
method startCycle (line 5623) | void startCycle() {
method completeCycle (line 5627) | void completeCycle() {
method completedCycle (line 5631) | bool completedCycle() const {
method ITracker (line 5634) | ITracker& currentTracker() {
method setCurrentTracker (line 5637) | void setCurrentTracker( ITracker* tracker ) {
class TrackerBase (line 5642) | class TrackerBase : public ITracker {
type CycleState (line 5644) | enum CycleState {
class TrackerHasName (line 5652) | class TrackerHasName {
method TrackerHasName (line 5655) | TrackerHasName( std::string const& name ) : m_name( name ) {}
method TrackerBase (line 5667) | TrackerBase( std::string const& name, TrackerContext& ctx, ITracke...
method isComplete (line 5678) | virtual bool isComplete() const CATCH_OVERRIDE {
method isSuccessfullyCompleted (line 5681) | virtual bool isSuccessfullyCompleted() const CATCH_OVERRIDE {
method isOpen (line 5684) | virtual bool isOpen() const CATCH_OVERRIDE {
method hasChildren (line 5687) | virtual bool hasChildren() const CATCH_OVERRIDE {
method addChild (line 5691) | virtual void addChild( Ptr<ITracker> const& child ) CATCH_OVERRIDE {
method ITracker (line 5695) | virtual ITracker* findChild( std::string const& name ) CATCH_OVERR...
method ITracker (line 5701) | virtual ITracker& parent() CATCH_OVERRIDE {
method isSectionTracker (line 5714) | virtual bool isSectionTracker() const CATCH_OVERRIDE { return fals...
method isIndexTracker (line 5715) | virtual bool isIndexTracker() const CATCH_OVERRIDE { return false; }
method open (line 5717) | void open() {
method markAsNeedingAnotherRun (line 5760) | virtual void markAsNeedingAnotherRun() CATCH_OVERRIDE {
method moveToParent (line 5764) | void moveToParent() {
method moveToThis (line 5768) | void moveToThis() {
class SectionTracker (line 5773) | class SectionTracker : public TrackerBase {
method SectionTracker (line 5775) | SectionTracker( std::string const& name, TrackerContext& ctx, ITra...
method isSectionTracker (line 5780) | virtual bool isSectionTracker() const CATCH_OVERRIDE { return true; }
method SectionTracker (line 5782) | static SectionTracker& acquire( TrackerContext& ctx, std::string c...
class IndexTracker (line 5803) | class IndexTracker : public TrackerBase {
method IndexTracker (line 5807) | IndexTracker( std::string const& name, TrackerContext& ctx, ITrack...
method isIndexTracker (line 5814) | virtual bool isIndexTracker() const CATCH_OVERRIDE { return true; }
method IndexTracker (line 5816) | static IndexTracker& acquire( TrackerContext& ctx, std::string con...
method index (line 5839) | int index() const { return m_index; }
method moveNext (line 5841) | void moveNext() {
function ITracker (line 5853) | inline ITracker& TrackerContext::startRun() {
function fatal (line 5875) | inline void fatal( std::string const& message, int exitCode ) {
type FatalConditionHandler (line 5890) | struct FatalConditionHandler {
method reset (line 5891) | void reset() {}
method handleSignal (line 5915) | static void handleSignal( int sig ) {
method FatalConditionHandler (line 5922) | FatalConditionHandler() : m_isSet( true ) {
method reset (line 5929) | void reset() {
type SignalDefs (line 5902) | struct SignalDefs { int id; const char* name; }
type FatalConditionHandler (line 5913) | struct FatalConditionHandler {
method reset (line 5891) | void reset() {}
method handleSignal (line 5915) | static void handleSignal( int sig ) {
method FatalConditionHandler (line 5922) | FatalConditionHandler() : m_isSet( true ) {
method reset (line 5929) | void reset() {
class StreamRedirect (line 5949) | class StreamRedirect {
method StreamRedirect (line 5952) | StreamRedirect( std::ostream& stream, std::string& targetString )
class RunContext (line 5974) | class RunContext : public IResultCapture, public IRunner {
method RunContext (line 5981) | explicit RunContext( Ptr<IConfig const> const& _config, Ptr<IStreami...
method testGroupStarting (line 5998) | void testGroupStarting( std::string const& testSpec, std::size_t gro...
method testGroupEnded (line 6001) | void testGroupEnded( std::string const& testSpec, Totals const& tota...
method Totals (line 6005) | Totals runTest( TestCase const& testCase ) {
method config (line 6048) | Ptr<IConfig const> config() const {
method assertionEnded (line 6054) | virtual void assertionEnded( AssertionResult const& result ) {
method sectionStarted (line 6070) | virtual bool sectionStarted (
method testForMissingAssertions (line 6091) | bool testForMissingAssertions( Counts& assertions ) {
method sectionEnded (line 6103) | virtual void sectionEnded( SectionEndInfo const& endInfo ) {
method sectionEndedEarly (line 6116) | virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) {
method pushScopedMessage (line 6126) | virtual void pushScopedMessage( MessageInfo const& message ) {
method popScopedMessage (line 6130) | virtual void popScopedMessage( MessageInfo const& message ) {
method getCurrentTestName (line 6134) | virtual std::string getCurrentTestName() const {
method AssertionResult (line 6140) | virtual const AssertionResult* getLastResult() const {
method handleFatalErrorCondition (line 6144) | virtual void handleFatalErrorCondition( std::string const& message ) {
method aborting (line 6177) | bool aborting() const {
method runCurrentTest (line 6183) | void runCurrentTest( std::string& redirectedCout, std::string& redir...
method invokeActiveTestCase (line 6229) | void invokeActiveTestCase() {
method ResultBuilder (line 6237) | ResultBuilder makeUnexpectedResultBuilder() const {
method handleUnfinishedSections (line 6244) | void handleUnfinishedSections() {
function IResultCapture (line 6272) | IResultCapture& getResultCapture() {
type Version (line 6287) | struct Version {
function createReporter (line 6317) | Ptr<IStreamingReporter> createReporter( std::string const& reporterNam...
function makeReporter (line 6327) | Ptr<IStreamingReporter> makeReporter( Ptr<Config> const& config ) {
function addListeners (line 6339) | Ptr<IStreamingReporter> addListeners( Ptr<IConfig const> const& config...
function Totals (line 6348) | Totals runTests( Ptr<Config> const& config ) {
method Totals (line 2255) | Totals operator - ( Totals const& other ) const {
method Totals (line 2262) | Totals delta( Totals const& prevTotals ) const {
method Totals (line 2273) | Totals& operator += ( Totals const& other ) {
function applyFilenamesAsTags (line 6379) | void applyFilenamesAsTags( IConfig const& config ) {
class Session (line 6399) | class Session : NonCopyable {
type OnUnusedOptions (line 6404) | struct OnUnusedOptions { enum DoWhat { Ignore, Fail }; }
type DoWhat (line 6404) | enum DoWhat { Ignore, Fail }
method Session (line 6406) | Session()
method showHelp (line 6419) | void showHelp( std::string const& processName ) {
method applyCommandLine (line 6426) | int applyCommandLine( int argc, char const* const* const argv, OnUnu...
method useConfigData (line 6448) | void useConfigData( ConfigData const& _configData ) {
method run (line 6453) | int run( int argc, char const* const* const argv ) {
method run (line 6461) | int run() {
method ConfigData (line 6492) | ConfigData& configData() {
method Config (line 6495) | Config& config() {
type RandomNumberGenerator (line 6525) | struct RandomNumberGenerator {
method result_type (line 6528) | result_type operator()( result_type n ) const { return std::rand() %...
method result_type (line 6531) | static constexpr result_type min() { return 0; }
method result_type (line 6532) | static constexpr result_type max() { return 1000000; }
method result_type (line 6533) | result_type operator()() const { return std::rand() % max(); }
method shuffle (line 6536) | static void shuffle( V& vector ) {
function sortTests (line 6546) | inline std::vector<TestCase> sortTests( IConfig const& config, std::ve...
function matchTest (line 6566) | bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IC...
function enforceNoDuplicateTestCases (line 6570) | void enforceNoDuplicateTestCases( std::vector<TestCase> const& functio...
function filterTests (line 6589) | std::vector<TestCase> filterTests( std::vector<TestCase> const& testCa...
class TestRegistry (line 6603) | class TestRegistry : public ITestCaseRegistry {
method TestRegistry (line 6605) | TestRegistry()
method registerTest (line 6611) | virtual void registerTest( TestCase const& testCase ) {
class FreeFunctionTestCase (line 6645) | class FreeFunctionTestCase : public SharedImpl<ITestCase> {
method FreeFunctionTestCase (line 6648) | FreeFunctionTestCase( TestFunction fun ) : m_fun( fun ) {}
method invoke (line 6650) | virtual void invoke() const {
function extractClassName (line 6660) | inline std::string extractClassName( std::string const& classOrQualifi...
function registerTestCase (line 6673) | void registerTestCase
function registerTestCaseFunction (line 6687) | void registerTestCaseFunction
class ReporterRegistry (line 6714) | class ReporterRegistry : public IReporterRegistry {
method IStreamingReporter (line 6720) | virtual IStreamingReporter* create( std::string const& name, Ptr<ICo...
method registerReporter (line 6727) | void registerReporter( std::string const& name, Ptr<IReporterFactory...
method registerListener (line 6730) | void registerListener( Ptr<IReporterFactory> const& factory ) {
method FactoryMap (line 6734) | virtual FactoryMap const& getFactories() const CATCH_OVERRIDE {
method Listeners (line 6737) | virtual Listeners const& getListeners() const CATCH_OVERRIDE {
class ExceptionTranslatorRegistry (line 6756) | class ExceptionTranslatorRegistry : public IExceptionTranslatorRegistry {
method registerTranslator (line 6762) | virtual void registerTranslator( const IExceptionTranslator* transla...
method translateActiveException (line 6766) | virtual std::string translateActiveException() const {
method tryTranslators (line 6797) | std::string tryTranslators() const {
class RegistryHub (line 6813) | class RegistryHub : public IRegistryHub, public IMutableRegistryHub {
method RegistryHub (line 6819) | RegistryHub() {
method IReporterRegistry (line 6821) | virtual IReporterRegistry const& getReporterRegistry() const CATCH_O...
method ITestCaseRegistry (line 6824) | virtual ITestCaseRegistry const& getTestCaseRegistry() const CATCH_O...
method IExceptionTranslatorRegistry (line 6827) | virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry...
method registerReporter (line 6832) | virtual void registerReporter( std::string const& name, Ptr<IReporte...
method registerListener (line 6835) | virtual void registerListener( Ptr<IReporterFactory> const& factory ...
method registerTest (line 6838) | virtual void registerTest( TestCase const& testInfo ) CATCH_OVERRIDE {
method registerTranslator (line 6841) | virtual void registerTranslator( const IExceptionTranslator* transla...
function RegistryHub (line 6852) | inline RegistryHub*& getTheRegistryHub() {
method RegistryHub (line 6819) | RegistryHub() {
method IReporterRegistry (line 6821) | virtual IReporterRegistry const& getReporterRegistry() const CATCH_O...
method ITestCaseRegistry (line 6824) | virtual ITestCaseRegistry const& getTestCaseRegistry() const CATCH_O...
method IExceptionTranslatorRegistry (line 6827) | virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry...
method registerReporter (line 6832) | virtual void registerReporter( std::string const& name, Ptr<IReporte...
method registerListener (line 6835) | virtual void registerListener( Ptr<IReporterFactory> const& factory ...
method registerTest (line 6838) | virtual void registerTest( TestCase const& testInfo ) CATCH_OVERRIDE {
method registerTranslator (line 6841) | virtual void registerTranslator( const IExceptionTranslator* transla...
function IRegistryHub (line 6860) | IRegistryHub& getRegistryHub() {
function IMutableRegistryHub (line 6863) | IMutableRegistryHub& getMutableRegistryHub() {
function cleanUp (line 6866) | void cleanUp() {
function translateActiveException (line 6871) | std::string translateActiveException() {
class StreamBufImpl (line 6911) | class StreamBufImpl : public StreamBufBase {
method StreamBufImpl (line 6916) | StreamBufImpl() {
method overflow (line 6925) | int overflow( int c ) {
method sync (line 6937) | int sync() {
type OutputDebugWriter (line 6961) | struct OutputDebugWriter {
class Context (line 6999) | class Context : public IMutableContext {
method Context (line 7001) | Context() : m_config( CATCH_NULL ), m_runner( CATCH_NULL ), m_result...
method IResultCapture (line 7011) | virtual IResultCapture* getResultCapture() {
method IRunner (line 7014) | virtual IRunner* getRunner() {
method getGeneratorIndex (line 7017) | virtual size_t getGeneratorIndex( std::string const& fileInfo, size_...
method advanceGeneratorsForCurrentTest (line 7022) | virtual bool advanceGeneratorsForCurrentTest() {
method getConfig (line 7027) | virtual Ptr<IConfig const> getConfig() const {
method setResultCapture (line 7032) | virtual void setResultCapture( IResultCapture* resultCapture ) {
method setRunner (line 7035) | virtual void setRunner( IRunner* runner ) {
method setConfig (line 7038) | virtual void setConfig( Ptr<IConfig const> const& config ) {
method IGeneratorsForTest (line 7045) | IGeneratorsForTest* findGeneratorsForCurrentTest() {
method IGeneratorsForTest (line 7055) | IGeneratorsForTest& getGeneratorsForCurrentTest() {
function IMutableContext (line 7075) | IMutableContext& getCurrentMutableContext() {
function IContext (line 7080) | IContext& getCurrentContext() {
function cleanUpContext (line 7084) | void cleanUpContext() {
type IColourImpl (line 7096) | struct IColourImpl {
type NoColourImpl (line 7101) | struct NoColourImpl : IColourImpl {
method use (line 7102) | void use( Colour::Code ) {}
method IColourImpl (line 7104) | static IColourImpl* instance() {
class Win32ColourImpl (line 7150) | class Win32ColourImpl : public IColourImpl {
method Win32ColourImpl (line 7152) | Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) )
method use (line 7160) | virtual void use( Colour::Code _colourCode ) {
method setTextAttribute (lin
Condensed preview — 592 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,920K chars).
[
{
"path": ".gitignore",
"chars": 142,
"preview": ".idea\n.DS_Store\ndepthmapX-build\nbuild\nbuild-*\nRegressionTest/rundir\n__pycache__\nCMakeLists.txt.user\n*_BACKUP_*\n*_BASE_*\n"
},
{
"path": ".mailmap",
"chars": 357,
"preview": "Petros Koutsolampros <2184600+pklampros@users.noreply.github.com> <2184600+orange-vertex@users.noreply.github.com>\nPetro"
},
{
"path": ".travis.yml",
"chars": 566,
"preview": "sudo: required\ndist: xenial\nlanguage: c++\nservices:\n - docker\n\nnotifications:\n slack: depthmapx:B3CKNlNDLrNz1vSOU5yo"
},
{
"path": "CMakeLists.txt",
"chars": 1813,
"preview": "set(CMAKE_OSX_DEPLOYMENT_TARGET \"10.9\" CACHE STRING \"Minimum macOS deployment version\")\nproject(depthmapX)\ncmake_minimum"
},
{
"path": "GuiUnitTest/.gitignore",
"chars": 741,
"preview": "# This file is used to ignore files which are generated\n# --------------------------------------------------------------"
},
{
"path": "GuiUnitTest/CMakeLists.txt",
"chars": 626,
"preview": "set(GuiUnitTest GuiUnitTest)\n\nset(CMAKE_INCLUDE_CURRENT_DIR ON)\n# Find the QtWidgets library\nfind_package(Qt5 COMPONENTS"
},
{
"path": "GuiUnitTest/main.cpp",
"chars": 731,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "GuiUnitTest/testsettings.cpp",
"chars": 1914,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "GuiUnitTest/testviewhelpers.cpp",
"chars": 1614,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "README.md",
"chars": 1286,
"preview": "## depthmapX - multi-platform spatial network analyses software\n\n\nThis is the home for the development of depthmapX.\n\n\nL"
},
{
"path": "RegressionTest/RegressionTestRunner.py",
"chars": 1907,
"preview": "import runhelpers\nimport config\nimport depthmaprunner\nimport performancerunner\nimport os\nimport sys\n\ndefaultConfigFile ="
},
{
"path": "RegressionTest/cmdlinewrapper.py",
"chars": 1179,
"preview": "class CommandLineError(Exception):\n def __init__(self, message):\n self.message = message\n \n\nclass DepthmapC"
},
{
"path": "RegressionTest/config.py",
"chars": 1215,
"preview": "import json\nimport os.path\nimport cmdlinewrapper\nfrom performanceregressionconfig import PerformanceRegressionConfig\n\n\nc"
},
{
"path": "RegressionTest/depthmaprunner.py",
"chars": 2884,
"preview": "import os.path\nimport cmdlinewrapper\nimport difflib\nimport pprint\n\nimport runhelpers\n\n\nclass DepthmapRunner():\n def _"
},
{
"path": "RegressionTest/performance_regression.json",
"chars": 5016,
"preview": "{\n \"rundir\": \"rundir\",\n \"basebinlocation\": \"../../BaselineBinaries\",\n \"testbinlocation\": \"../../../build\",\n \"perform"
},
{
"path": "RegressionTest/performanceregressionconfig.py",
"chars": 1460,
"preview": "\n\nclass PerformanceRegressionConfig:\n \"\"\" Encapsulate performance regression config\n This takes an optional pe"
},
{
"path": "RegressionTest/performancerunner.py",
"chars": 4901,
"preview": "from statistics import mean\nfrom collections import OrderedDict\n\nimport depthmaprunner\nimport os\nimport csv\n\nimport runh"
},
{
"path": "RegressionTest/regressionconfig.json",
"chars": 30992,
"preview": "{\n \"rundir\": \"rundir\",\n \"basebinlocation\": \"../../BaselineBinaries\",\n \"testbinlocation\": \"../../../build\",\n "
},
{
"path": "RegressionTest/regressionconfig_agents.json",
"chars": 7244,
"preview": "{\n \"rundir\": \"rundir\",\n \"basebinlocation\": \"../../BaselineBinaries\",\n \"testbinlocation\": \"../../../build\",\n "
},
{
"path": "RegressionTest/runhelpers.py",
"chars": 1597,
"preview": "import os\nimport shutil\nimport subprocess\nimport platform\n\ndef runTest():\n pass \n\nclass cd:\n \"\"\"Context manager for"
},
{
"path": "RegressionTest/test/context.py",
"chars": 268,
"preview": "import os\nimport sys\nsys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))\n\nimport cmdlinew"
},
{
"path": "RegressionTest/test/disposablefile.py",
"chars": 1184,
"preview": "import os\nimport shutil\n\nclass DisposableFile:\n def __init__( self, filename ):\n self.__filename = filename\n\n "
},
{
"path": "RegressionTest/test/fail/test_fail.py",
"chars": 356,
"preview": "import unittest\n\nclass TestFailure(unittest.TestCase):\n \"\"\"\n Test case that always fails to test that we captu"
},
{
"path": "RegressionTest/test/pass/test_pass.py",
"chars": 356,
"preview": "import unittest\n\nclass TestFailure(unittest.TestCase):\n \"\"\"\n Test case that always passes to test that we capt"
},
{
"path": "RegressionTest/test/test_RegressionTestRunner.py",
"chars": 1500,
"preview": "import unittest\nfrom test_config import writeConfig\nfrom RegressionTestRunner import RegressionTestRunner\nfrom disposabl"
},
{
"path": "RegressionTest/test/test_cmdlinewrapper.py",
"chars": 1690,
"preview": "import unittest\n\nimport collections\nfrom context import cmdlinewrapper\n\nclass TestDepthmapCmd(unittest.TestCase):\n de"
},
{
"path": "RegressionTest/test/test_config.py",
"chars": 1955,
"preview": "import unittest\nfrom context import config\nfrom disposablefile import DisposableFile\nimport RegressionTestRunner\nimport "
},
{
"path": "RegressionTest/test/test_depthmaprunner.py",
"chars": 6529,
"preview": "from context import depthmaprunner\n\nimport cmdlinewrapper\nfrom cmdlinewrapper import DepthmapCmd\nimport unittest\nfrom di"
},
{
"path": "RegressionTest/test/test_disposablefile.py",
"chars": 2528,
"preview": "import disposablefile\nimport unittest\nimport os.path\n\nclass TestDisposableFile(unittest.TestCase):\n def testFileDelet"
},
{
"path": "RegressionTest/test/test_main.py",
"chars": 549,
"preview": "import argparse\nimport unittest\n\nif __name__ == \"__main__\":\n parser = argparse.ArgumentParser(\"Find and run all unitt"
},
{
"path": "RegressionTest/test/test_performanceregressionconfig.py",
"chars": 1576,
"preview": "import unittest\nfrom context import performanceregressionconfig\nimport disposablefile\n\n\nclass TestDisabledConfig(unittes"
},
{
"path": "RegressionTest/test/test_performancerunner.py",
"chars": 6230,
"preview": "import csv\n\nimport os\nimport unittest\nfrom disposablefile import DisposableFile, DisposableDirectory\nfrom context import"
},
{
"path": "RegressionTest/test/test_runhelpers.py",
"chars": 2691,
"preview": "import unittest\nfrom context import runhelpers\nfrom disposablefile import DisposableDirectory\nimport os\nimport platform\n"
},
{
"path": "RegressionTest/test/test_test_main.py",
"chars": 989,
"preview": "import unittest\nfrom disposablefile import DisposableDirectory\nfrom context import runhelpers\nimport sys\n\nclass TestUnit"
},
{
"path": "ThirdParty/Catch/catch.hpp",
"chars": 384568,
"preview": "/*\n * Catch v1.6.1\n * Generated: 2017-01-20 12:33:53.497767\n * ------------------------------------------------------"
},
{
"path": "ThirdParty/FakeIt/Catch/fakeit.hpp",
"chars": 252565,
"preview": "#pragma once\n/*\n * FakeIt - A Simplified C++ Mocking Framework\n * Copyright (c) Eran Pe'er 2013\n * Generated: 2017-05"
},
{
"path": "ci/.gitattributes",
"chars": 17,
"preview": "*.sh test eol=lf\n"
},
{
"path": "ci/build.sh",
"chars": 1088,
"preview": "#!/bin/sh\n\nsource /opt/qt511/bin/qt511-env.sh\nif [ ! -d build ]; then\n mkdir build\nfi\ncd build\n# build\necho Building\n"
},
{
"path": "cliTest/CMakeLists.txt",
"chars": 1693,
"preview": "set(cliTest cliTest)\nset(cliTest_SRCS \n main.cpp\n ../depthmapXcli/printcommunicator.cpp\n ../depthmapXcli/comman"
},
{
"path": "cliTest/argumentholder.h",
"chars": 1222,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/main.cpp",
"chars": 733,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/selfcleaningfile.h",
"chars": 1045,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/testagentparser.cpp",
"chars": 18889,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "cliTest/testargumentholder.cpp",
"chars": 979,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/testaxialparser.cpp",
"chars": 5637,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/testcommandlineparser.cpp",
"chars": 10800,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/testexportparser.cpp",
"chars": 1949,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "cliTest/testimportparser.cpp",
"chars": 1511,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "cliTest/testisovistparser.cpp",
"chars": 5345,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/testlinkparser.cpp",
"chars": 3866,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "cliTest/testmapconvertparser.cpp",
"chars": 3834,
"preview": "// Copyright (C) 2018 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "cliTest/testparsingutils.cpp",
"chars": 1510,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/testperformancewriter.cpp",
"chars": 1021,
"preview": "#include <catch.hpp>\n#include \"../depthmapXcli/performancewriter.h\"\n#include \"selfcleaningfile.h\"\n#include <fstream>\n\nTE"
},
{
"path": "cliTest/testradiusconverter.cpp",
"chars": 1615,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/testsegmentparser.cpp",
"chars": 7300,
"preview": "// Copyright (C) 2018 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "cliTest/testselfcleaningfile.cpp",
"chars": 1752,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/testsimpletimer.cpp",
"chars": 1488,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/teststepdepthparser.cpp",
"chars": 5507,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "cliTest/testvgaparser.cpp",
"chars": 4183,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "cliTest/testvisprepparser.cpp",
"chars": 7983,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "depthmapX/CMakeLists.txt",
"chars": 4093,
"preview": "set(depthmapX depthmapX)\n\n# Find includes in corresponding build directories\nset(CMAKE_INCLUDE_CURRENT_DIR ON)\n# Instruc"
},
{
"path": "depthmapX/GraphDoc.cpp",
"chars": 96894,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/GraphDoc.h",
"chars": 10386,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/UI/AboutDlg.ui",
"chars": 3295,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CAboutDlg</class>\n <widget class=\"QDialog\" name=\"CAbou"
},
{
"path": "depthmapX/UI/AgentAnalysisDlg.ui",
"chars": 9358,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CAgentAnalysisDlg</class>\n <widget class=\"QDialog\" nam"
},
{
"path": "depthmapX/UI/AttributeChooserDlg.ui",
"chars": 2545,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CAttributeChooserDlg</class>\n <widget class=\"QDialog\" "
},
{
"path": "depthmapX/UI/AttributeSummary.ui",
"chars": 1552,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CAttributeSummary</class>\n <widget class=\"QDialog\" nam"
},
{
"path": "depthmapX/UI/AxialAnalysisOptionsDlg.ui",
"chars": 4780,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CAxialAnalysisOptionsDlg</class>\n <widget class=\"QDial"
},
{
"path": "depthmapX/UI/ColourScaleDlg.ui",
"chars": 7549,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CColourScaleDlg</class>\n <widget class=\"QDialog\" name="
},
{
"path": "depthmapX/UI/ColourScaleDlg.ui.bak",
"chars": 7470,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CColourScaleDlg</class>\n <widget class=\"QDialog\" name="
},
{
"path": "depthmapX/UI/ColumnPropertiesDlg.ui",
"chars": 2974,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CColumnPropertiesDlg</class>\n <widget class=\"QDialog\" "
},
{
"path": "depthmapX/UI/ConvertShapesDlg.ui",
"chars": 2718,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CConvertShapesDlg</class>\n <widget class=\"QDialog\" nam"
},
{
"path": "depthmapX/UI/DepthmapAlert.ui",
"chars": 1932,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CDepthmapAlert</class>\n <widget class=\"QDialog\" name=\""
},
{
"path": "depthmapX/UI/DepthmapOptionsDlg.ui",
"chars": 2964,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CDepthmapOptionsDlg</class>\n <widget class=\"QDialog\" n"
},
{
"path": "depthmapX/UI/EditConnectionsDlg.ui",
"chars": 3710,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CEditConnectionsDlg</class>\n <widget class=\"QDialog\" n"
},
{
"path": "depthmapX/UI/FewestLineOptionsDlg.ui",
"chars": 2350,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CFewestLineOptionsDlg</class>\n <widget class=\"QDialog\""
},
{
"path": "depthmapX/UI/FilePropertiesDlg.ui",
"chars": 5653,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CFilePropertiesDlg</class>\n <widget class=\"QDialog\" na"
},
{
"path": "depthmapX/UI/FindLocDlg.ui",
"chars": 2593,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CFindLocDlg</class>\n <widget class=\"QDialog\" name=\"CFi"
},
{
"path": "depthmapX/UI/GridDialog.ui",
"chars": 2892,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CGridDialog</class>\n <widget class=\"QDialog\" name=\"CGr"
},
{
"path": "depthmapX/UI/InsertColumnDlg.ui",
"chars": 3877,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CInsertColumnDlg</class>\n <widget class=\"QDialog\" name"
},
{
"path": "depthmapX/UI/IsovistPathDlg.ui",
"chars": 2867,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CIsovistPathDlg</class>\n <widget class=\"QDialog\" name="
},
{
"path": "depthmapX/UI/LayerChooserDlg.ui",
"chars": 2595,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CLayerChooserDlg</class>\n <widget class=\"QDialog\" name"
},
{
"path": "depthmapX/UI/LicenceDialog.ui",
"chars": 3237,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CLicenceDialog</class>\n <widget class=\"QDialog\" name=\""
},
{
"path": "depthmapX/UI/MakeLayerDlg.ui",
"chars": 5031,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CMakeLayerDlg</class>\n <widget class=\"QDialog\" name=\"C"
},
{
"path": "depthmapX/UI/MakeOptionsDlg.ui",
"chars": 2997,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CMakeOptionsDlg</class>\n <widget class=\"QDialog\" name="
},
{
"path": "depthmapX/UI/NewLayerDlg.ui",
"chars": 3502,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CNewLayerDlg</class>\n <widget class=\"QDialog\" name=\"CN"
},
{
"path": "depthmapX/UI/OptionsDlg.ui",
"chars": 7164,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>COptionsDlg</class>\n <widget class=\"QDialog\" name=\"COp"
},
{
"path": "depthmapX/UI/PromptReplace.ui",
"chars": 2453,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CPromptReplace</class>\n <widget class=\"QDialog\" name=\""
},
{
"path": "depthmapX/UI/PushDialog.ui",
"chars": 4335,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CPushDialog</class>\n <widget class=\"QDialog\" name=\"CPu"
},
{
"path": "depthmapX/UI/RenameObjectDlg.ui",
"chars": 1993,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CRenameObjectDlg</class>\n <widget class=\"QDialog\" name"
},
{
"path": "depthmapX/UI/SegmentAnalysisDlg.ui",
"chars": 7399,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CSegmentAnalysisDlg</class>\n <widget class=\"QDialog\" n"
},
{
"path": "depthmapX/UI/TopoMetDlg.ui",
"chars": 2800,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>CTopoMetDlg</class>\n <widget class=\"QDialog\" name=\"CTo"
},
{
"path": "depthmapX/UI/doAll.sh",
"chars": 1682,
"preview": "uic -o ../CompiledUI/ui_AboutDlg.h AboutDlg.ui\nuic -o ../CompiledUI/ui_AgentAnalysisDlg.h AgentAnalysisDlg.ui\nuic -o ../"
},
{
"path": "depthmapX/UI/licenseagreement.ui",
"chars": 6994,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>LicenseAgreement</class>\n <widget class=\"QDialog\" name"
},
{
"path": "depthmapX/compatibilitydefines.h",
"chars": 532,
"preview": "#ifndef COMPATIBILITYDEFINES_H\n#define COMPATIBILITYDEFINES_H\n\n#ifndef _WIN32\n#define TRUE 1\n#define FALSE 0\n\n#define LO"
},
{
"path": "depthmapX/coreapplication.cpp",
"chars": 1576,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/coreapplication.h",
"chars": 1646,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/dialogs/AboutDlg.cpp",
"chars": 2139,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/AboutDlg.h",
"chars": 882,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/AgentAnalysisDlg.cpp",
"chars": 2580,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/AgentAnalysisDlg.h",
"chars": 1353,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/AttributeChooserDlg.cpp",
"chars": 1564,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/AttributeChooserDlg.h",
"chars": 1199,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/AttributeSummary.cpp",
"chars": 3137,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/AttributeSummary.h",
"chars": 1083,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/AxialAnalysisOptionsDlg.cpp",
"chars": 8764,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n// Copyright (C) 2018, Petros Koutsolampros\r\n\r\n// This program is free softw"
},
{
"path": "depthmapX/dialogs/AxialAnalysisOptionsDlg.h",
"chars": 1339,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/CMakeLists.txt",
"chars": 1715,
"preview": "target_sources(depthmapX\n PUBLIC\n TopoMetDlg.h\n SegmentAnalysisDlg.h\n RenameObjectDlg.h\n "
},
{
"path": "depthmapX/dialogs/ColourScaleDlg.cpp",
"chars": 12566,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/ColourScaleDlg.h",
"chars": 2040,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/ColumnPropertiesDlg.cpp",
"chars": 7886,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/ColumnPropertiesDlg.h",
"chars": 1408,
"preview": "#// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n"
},
{
"path": "depthmapX/dialogs/ConvertShapesDlg.cpp",
"chars": 1712,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/ConvertShapesDlg.h",
"chars": 1070,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/EditConnectionsDlg.cpp",
"chars": 1761,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/EditConnectionsDlg.h",
"chars": 1072,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/FewestLineOptionsDlg.cpp",
"chars": 1276,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/FewestLineOptionsDlg.h",
"chars": 1035,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/FilePropertiesDlg.cpp",
"chars": 2012,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/FilePropertiesDlg.h",
"chars": 1197,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/FindLocDlg.cpp",
"chars": 1524,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/FindLocDlg.h",
"chars": 1026,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/GridDialog.cpp",
"chars": 1956,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n// Copyright (C) 2017 Christian Sailer\r\n\r\n// This program is free software: "
},
{
"path": "depthmapX/dialogs/GridDialog.h",
"chars": 1200,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n// Copyright (C) 2017 Christian Sailer\r\n\r\n// This program is free software: "
},
{
"path": "depthmapX/dialogs/InsertColumnDlg.cpp",
"chars": 3933,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/InsertColumnDlg.h",
"chars": 1401,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/IsovistPathDlg.cpp",
"chars": 1660,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/IsovistPathDlg.h",
"chars": 1036,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/LayerChooserDlg.cpp",
"chars": 1522,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/LayerChooserDlg.h",
"chars": 1245,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/LicenceDialog.cpp",
"chars": 1541,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/LicenceDialog.h",
"chars": 1057,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/MakeLayerDlg.cpp",
"chars": 5650,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/MakeLayerDlg.h",
"chars": 1494,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/MakeOptionsDlg.cpp",
"chars": 2264,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/MakeOptionsDlg.h",
"chars": 1095,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/NewLayerDlg.cpp",
"chars": 1869,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/NewLayerDlg.h",
"chars": 1057,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/OptionsDlg.cpp",
"chars": 6184,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/OptionsDlg.h",
"chars": 1329,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/PromptReplace.cpp",
"chars": 1285,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/PromptReplace.h",
"chars": 1034,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/PushDialog.cpp",
"chars": 2196,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/PushDialog.h",
"chars": 1296,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/RenameObjectDlg.cpp",
"chars": 1994,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/RenameObjectDlg.h",
"chars": 1139,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/SegmentAnalysisDlg.cpp",
"chars": 9735,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/SegmentAnalysisDlg.h",
"chars": 1414,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/TopoMetDlg.cpp",
"chars": 2949,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/TopoMetDlg.h",
"chars": 1234,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/dialogs/licenseagreement.cpp",
"chars": 911,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/dialogs/licenseagreement.h",
"chars": 1093,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/dialogs/settings/generalpage.cpp",
"chars": 1618,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/dialogs/settings/generalpage.h",
"chars": 1208,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/dialogs/settings/interfacepage.cpp",
"chars": 4684,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/dialogs/settings/interfacepage.h",
"chars": 2284,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/dialogs/settings/settingsdialog.cpp",
"chars": 3730,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/dialogs/settings/settingsdialog.h",
"chars": 1319,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/dialogs/settings/settingsdialog.qrc",
"chars": 139,
"preview": "<RCC>\n <qresource prefix=\"/\">\n <file>images/general.png</file>\n <file>images/interface.png</file>\n <"
},
{
"path": "depthmapX/dialogs/settings/settingspage.h",
"chars": 938,
"preview": "// Copyright (C) 2017 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/icons.rc",
"chars": 71,
"preview": "IDI_ICON1 ICON DISCARDABLE \"icons\\\\depthmapX.ico\"\n"
},
{
"path": "depthmapX/imainwindowmodule.h",
"chars": 947,
"preview": "// Copyright (C) 2020, Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// "
},
{
"path": "depthmapX/imainwindowmodulefactory.h",
"chars": 1038,
"preview": "// Copyright (C) 2017 Christian Sailer\n// Copyright (C) 2020 Petros Koutsolampros\n\n// This program is free software: you"
},
{
"path": "depthmapX/indexWidget.cpp",
"chars": 1761,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/indexWidget.h",
"chars": 1111,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/main.cpp",
"chars": 1024,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\n// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you"
},
{
"path": "depthmapX/mainwindow.cpp",
"chars": 138534,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/mainwindow.h",
"chars": 13835,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/mainwindowfactory.cpp",
"chars": 1137,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "depthmapX/mainwindowfactory.h",
"chars": 1023,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "depthmapX/mainwindowhelpers.cpp",
"chars": 1754,
"preview": "// Copyright (C) 2020 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/mainwindowhelpers.h",
"chars": 938,
"preview": "// Copyright (C) 2020 Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// i"
},
{
"path": "depthmapX/mainwindowmodulefactory.cpp",
"chars": 801,
"preview": "// Copyright (C) 2020, Petros Koutsolampros\n\n// This program is free software: you can redistribute it and/or modify\n// "
},
{
"path": "depthmapX/mainwindowmoduleregistry.cpp",
"chars": 1010,
"preview": "// Copyright (C) 2017, Christian Sailer\n// Copyright (C) 2020, Petros Koutsolampros\n\n// This program is free software: y"
},
{
"path": "depthmapX/mainwindowmoduleregistry.hpp",
"chars": 1351,
"preview": "// Copyright (C) 2017, Christian Sailer\n// Copyright (C) 2020, Petros Koutsolampros\n\n// This program is free software: y"
},
{
"path": "depthmapX/make_version_header.bat",
"chars": 2142,
"preview": "@echo off\ndel version_defs.h\necho // Copyright (C) 2018 Christian Sailer >> version_defs.h\n\necho // This program is free"
},
{
"path": "depthmapX/make_version_header.sh",
"chars": 1675,
"preview": "rm version_defs.h\nprintf \"// Copyright (C) 2018 Christian Sailer\\n\" >> version_defs.h\n\nprintf \"// This program is free s"
},
{
"path": "depthmapX/mdichild.cpp",
"chars": 4296,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/mdichild.h",
"chars": 1397,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/qrc_mdi.cpp",
"chars": 233660,
"preview": "/****************************************************************************\n** Resource object code\n**\n** Created: Sat"
},
{
"path": "depthmapX/renderthread.cpp",
"chars": 21159,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/resource.qrc",
"chars": 4348,
"preview": "<RCC>\n <qresource prefix=\"/\">\n <file>images/new.png</file>\n <file>images/open.png</file>\n <file>"
},
{
"path": "depthmapX/resources/Info.plist",
"chars": 2165,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "depthmapX/settings.h",
"chars": 2362,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "depthmapX/settingsimpl.cpp",
"chars": 1871,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "depthmapX/settingsimpl.h",
"chars": 1894,
"preview": "// Copyright (C) 2017 Christian Sailer\n\n// This program is free software: you can redistribute it and/or modify\n// it un"
},
{
"path": "depthmapX/treeWindow.cpp",
"chars": 2610,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/treeWindow.h",
"chars": 2310,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/views/3dview/3dview.cpp",
"chars": 37268,
"preview": "// depthmapX - spatial network analysis platform\r\n// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free "
},
{
"path": "depthmapX/views/3dview/3dview.h",
"chars": 6063,
"preview": "// depthmapX - spatial network analysis platform\r\n// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free "
},
{
"path": "depthmapX/views/3dview/glureimpl.h",
"chars": 7292,
"preview": "// Taken from https://github.com/Alexpux/superglu/blob/master/libutil/project.c\n// Only provided here temporarily until "
},
{
"path": "depthmapX/views/CMakeLists.txt",
"chars": 1252,
"preview": "target_sources(depthmapX\n PRIVATE\n mapview.cpp\n viewhelpers.cpp\n glview/gllinesuniform.cpp\n "
},
{
"path": "depthmapX/views/depthmapview/depthmapview.cpp",
"chars": 104236,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n// Copyright (C) 2017 Christian Sailer\r\n\r\n// This program is free software: "
},
{
"path": "depthmapX/views/depthmapview/depthmapview.h",
"chars": 7901,
"preview": "// Copyright (C) 2011-2012, Tasos Varoudis\r\n\r\n// This program is free software: you can redistribute it and/or modify\r\n/"
},
{
"path": "depthmapX/views/glview/gldynamicline.cpp",
"chars": 1865,
"preview": "// depthmapX - spatial network analysis platform\n// Copyright (C) 2017, Petros Koutsolampros\n\n// This program is free so"
},
{
"path": "depthmapX/views/glview/gldynamicline.h",
"chars": 1035,
"preview": "// depthmapX - spatial network analysis platform\n// Copyright (C) 2017, Petros Koutsolampros\n\n// This program is free so"
},
{
"path": "depthmapX/views/glview/gldynamicrect.cpp",
"chars": 5800,
"preview": "// depthmapX - spatial network analysis platform\n// Copyright (C) 2017, Petros Koutsolampros\n\n// This program is free so"
},
{
"path": "depthmapX/views/glview/gldynamicrect.h",
"chars": 2171,
"preview": "// depthmapX - spatial network analysis platform\n// Copyright (C) 2017, Petros Koutsolampros\n\n// This program is free so"
},
{
"path": "depthmapX/views/glview/gllines.cpp",
"chars": 5568,
"preview": "// depthmapX - spatial network analysis platform\n// Copyright (C) 2017, Petros Koutsolampros\n\n// This program is free so"
},
{
"path": "depthmapX/views/glview/gllines.h",
"chars": 1946,
"preview": "// depthmapX - spatial network analysis platform\n// Copyright (C) 2017, Petros Koutsolampros\n\n// This program is free so"
}
]
// ... and 392 more files (download for full content)
About this extraction
This page contains the full source code of the SpaceGroupUCL/depthmapX GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 592 files (29.1 MB), approximately 1.8M tokens, and a symbol index with 4189 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.