25 #ifndef WPROTONDATA_TEST_H
26 #define WPROTONDATA_TEST_H
31 #include <cxxtest/TestSuite.h>
33 #include <core/common/test/WException_test.h>
35 #include "../WProtonData.h"
49 "PDGEncoding",
"trackID",
"parentID",
"trackLocalTime",
"time",
"edep",
"stepLength",
"trackLength",
50 "posX",
"posY",
"posZ",
"localPosX",
"localPosY",
"localPosZ",
"momDirX",
"momDirY",
"momDirZ",
51 "baseID",
"level1ID",
"level2ID",
"level3ID",
"level4ID",
"layerID",
"photonID",
"nPhantomCompton",
52 "nCrystalCompton",
"nPhantomRayleigh",
"nCrystalRayleigh",
"primaryID",
"sourcePosX",
"sourcePosY",
53 "sourcePosZ",
"sourceID",
"eventID",
"runID",
"axialPos",
"rotationAngle",
"volumeID",
"processName",
54 "comptVolName",
"RayleighVolName"
64 "2212",
"1",
"0",
"4.20922e-09",
"4.20922e-09",
"0.0199097",
"0.0250083",
"725.314",
"-1.86984",
"4.55793",
65 "225.244",
"-1.86984",
"4.55793",
"0.0125",
"-0.00614681",
"0.0255574",
"0.999654",
"0",
"0",
"0",
"0",
"0",
"0",
66 "0",
"0",
"0",
"0",
"0",
"1",
"-0.154322",
"0.156973",
"-500",
"0",
"1",
"0",
"277.4",
"0",
67 "[0;1;0;3;-1;-1;-1;-1;-1;-1]",
"Transportation",
"NULL",
"NULL"
70 "2212",
"1",
"0",
"4.54012e-09",
"4.54012e-09",
"0.0179175",
"0.0250066",
"777.726",
"-2.04548",
"5.6447",
71 "277.644",
"-2.04548",
"5.6447",
"0.0125",
"-0.00435673",
"0.0234654",
"0.999715",
"0",
"1",
"0",
"0",
"0",
"0",
72 "0",
"0",
"0",
"0",
"0",
"1",
"-0.154322",
"0.156973",
"-500",
"0",
"1",
"0",
"277.4",
"0",
73 "[0;1;1;3;-1;-1;-1;-1;-1;-1]",
"Transportation",
"NULL",
"NULL"
76 "2212",
"1",
"0",
"4.89277e-09",
"4.89277e-09",
"0.143599",
"0.0250046",
"833.49",
"-2.26821",
"6.88172",
77 "333.394",
"-2.26821",
"6.88172",
"0.0125",
"-0.00791184",
"0.0166431",
"0.99983",
"1",
"0",
"0",
"0",
"0",
"0",
78 "0",
"0",
"0",
"0",
"0",
"1",
"-0.154322",
"0.156973",
"-500",
"0",
"1",
"0",
"461.8",
"0",
79 "[0;2;0;3;-1;-1;-1;-1;-1;-1]",
"Transportation",
"NULL",
"NULL"
82 "2212",
"1",
"0",
"4.92791e-09",
"4.92791e-09",
"0.0204459",
"0.0250016",
"838.991",
"-2.30588",
"6.96663",
83 "338.894",
"-2.30588",
"6.96663",
"0.0125",
"0.0113033",
"0.00148302",
"0.999935",
"1",
"1",
"0",
"0",
"0",
"0",
84 "0",
"0",
"0",
"0",
"0",
"1",
"-0.154322",
"0.156973",
"-500",
"0",
"1",
"0",
"461.8",
"0",
85 "[0;2;1;3;-1;-1;-1;-1;-1;-1]",
"Transportation",
"NULL",
"NULL"
88 "2212",
"1",
"0",
"4.96345e-09",
"4.96345e-09",
"0.0160251",
"0.0250035",
"844.492",
"-2.25045",
"6.96272",
89 "344.394",
"-2.25045",
"6.96272",
"0.0125",
"0.0167816",
"-0.00606",
"0.999841",
"1",
"2",
"0",
"0",
"0",
"0",
90 "0",
"0",
"0",
"0",
"0",
"1",
"-0.154322",
"0.156973",
"-500",
"0",
"1",
"0",
"461.8",
"0",
91 "[0;2;2;3;-1;-1;-1;-1;-1;-1]",
"Transportation",
"NULL",
"NULL"
100 TS_ASSERT_THROWS_NOTHING(
115 TS_ASSERT_THROWS_EQUALS(
118 strcmp( e.
what(),
"No empty header allowed!" ),
132 TS_ASSERT_THROWS_EQUALS(
135 strcmp( e.
what(),
"Can not set header! No header specified!" ),
149 TS_ASSERT_THROWS_EQUALS(
152 strcmp( e.
what(),
"Can not set data! No data specified!" ),
165 std::tuple< std::string, int > refData1(
"test 1", 0 );
166 std::tuple< std::string, int > refData2(
"test 2", 1 );
167 std::tuple< std::string, int > refData3(
"test 3", 2 );
168 std::tuple< std::string, int > refData4(
"test 4", 3 );
170 protonData.
setStateIndex( std::get< 0 >( refData1 ), std::get< 1 >( refData1 ) );
171 protonData.
setStateIndex( std::get< 0 >( refData2 ), std::get< 1 >( refData2 ) );
172 protonData.
setStateIndex( std::get< 0 >( refData3 ), std::get< 1 >( refData3 ) );
173 protonData.
setStateIndex( std::get< 0 >( refData4 ), std::get< 1 >( refData4 ) );
189 std::tuple< std::string, int > refData1(
"test 1", 0 );
190 std::tuple< std::string, int > refData2(
"test 2", 1 );
191 std::tuple< std::string, int > refData3(
"test 3", 2 );
192 std::tuple< std::string, int > refData4(
"test 4", 3 );
195 std::tuple< std::string, int > refData5(
"test 5", -1 );
196 std::tuple< std::string, int > refData6(
"test 6", -1 );
198 protonData.
setStateIndex( std::get< 0 >( refData1 ), std::get< 1 >( refData1 ) );
199 protonData.
setStateIndex( std::get< 0 >( refData2 ), std::get< 1 >( refData2 ) );
200 protonData.
setStateIndex( std::get< 0 >( refData3 ), std::get< 1 >( refData3 ) );
201 protonData.
setStateIndex( std::get< 0 >( refData4 ), std::get< 1 >( refData4 ) );
202 protonData.
setStateIndex( std::get< 0 >( refData5 ), std::get< 1 >( refData5 ) );
203 protonData.
setStateIndex( std::get< 0 >( refData6 ), std::get< 1 >( refData6 ) );
205 TS_ASSERT_EQUALS( protonData.
isColumnAvailable( std::get< 0 >( refData1 ) ),
true );
206 TS_ASSERT_EQUALS( protonData.
isColumnAvailable( std::get< 0 >( refData2 ) ),
true );
207 TS_ASSERT_EQUALS( protonData.
isColumnAvailable( std::get< 0 >( refData3 ) ),
true );
208 TS_ASSERT_EQUALS( protonData.
isColumnAvailable( std::get< 0 >( refData4 ) ),
true );
209 TS_ASSERT_EQUALS( protonData.
isColumnAvailable( std::get< 0 >( refData5 ) ),
false );
210 TS_ASSERT_EQUALS( protonData.
isColumnAvailable( std::get< 0 >( refData6 ) ),
false );
227 for(
size_t headerCounter = 0; headerCounter < header.size(); headerCounter++ )
229 TS_ASSERT_EQUALS( protonData.
getColumnIndex( header.at( headerCounter ) ), headerCounter );
234 TS_ASSERT_EQUALS( protonData.
getColumnIndex(
"unavailable" ), -1 );
245 std::vector< std::string > testIntList
247 "1",
"0",
"10",
"+1",
"-1",
248 "1e+1",
"+1e+1",
"-1e+1",
249 "1e1",
"+1e1",
"-1e1",
252 std::vector< std::string > testDoubleList
254 "1000.1",
"1.",
".1",
"1.1",
255 "+1.",
"-1.",
"+.1",
"-.1",
256 "+1e-1",
"0.001e-12",
260 std::vector< std::string > testStringList
264 "-",
"--1.",
"1.e.1",
268 for(
auto trueCondition : testIntList )
273 for(
auto trueCondition : testDoubleList )
278 for(
auto falseCondition : testStringList )
292 std::vector< std::string > refColumnTypes
294 "int",
"int",
"int",
"double",
"double",
"double",
"double",
"double",
"double",
"double",
295 "double",
"double",
"double",
"double",
"double" ,
"double",
"double" ,
"int",
"int",
"int",
"int",
296 "int",
"int",
"int",
"int",
"int",
"int",
"int",
"int",
"double",
"double",
297 "int",
"int",
"int",
"int",
"double",
"int",
"string",
"string",
"string",
"string",
303 for(
auto columnTyp : *testColumnTypes )
305 TS_ASSERT_EQUALS( columnTyp, refColumnTypes.at( counter++ ) );
std::shared_ptr< std::vector< std::vector< std::string > > > ContentSPtr
represents a pointer to the Content
std::shared_ptr< std::vector< std::string > > ContentElemSPtr
represents a shared pointer to a ContentElem object.
std::vector< std::vector< std::string > > Content
represents a vector containing a vector of strings.
virtual const char * what() const
Returns the message string set on throw.
Test class of WMProtonData class.
WDataSetCSV::Content sampleColumnNames
A sample of column names.
void testSetCSVHeaderNull()
Tests, if setCSVHeader throws an exception, when parameter is a null pointer.
void testDetectColumnTypesFromCsvData()
Tests internal variable m_columnTypes with the method -getColumnTypes-.
void testSetCSVDataNull()
Tests, if setCSVHeader throws an exception, when parameter is a null pointer.
void testGetColumnIndex()
Tests the content of -m_columnMap-.
void testSetCSVHeaderEmpty()
Tests, if setCSVHeader throws an exception, when the new header is empty.
void testConstructor()
Test the constructor of WProtonData, so no exception is thrown, when input parameters are correct.
WDataSetCSV::Content sampleDataRows
A sample of data rows.
void testSetterGetterStateIndex()
Tests the setter and getter for the member variable -m_ColumnnMapSelectedIndex-.
void testIsColumnAvailable()
Tests the availability of the single selections.
void testDetermineColumnTypeByString()
Tests method -determineColumnTypeByString-.
int getColumnIndex(std::string columnName)
getter
WDataSetCSV::ContentElemSPtr getColumnTypes()
Get column types, stored in a string vector.
int getColumnIndexBySelection(std::string selectedName)
getter
std::string determineColumnTypeByString(std::string cellValue)
Determines column type due to cellValue.
void setCSVData(WDataSetCSV::ContentSPtr csvData)
setter
void setStateIndex(std::string columnName, int index)
setter
void setCSVHeader(WDataSetCSV::ContentSPtr csvHeader)
setter
bool isColumnAvailable(std::string columnName)
checks whether columns are available