ATLAS Offline Software
ColumnarMemoryTest.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 
8 #ifndef COLUMNAR_TEST_FIXTURES__COLUMNAR_MEMORY_TEST_H
9 #define COLUMNAR_TEST_FIXTURES__COLUMNAR_MEMORY_TEST_H
10 
11 #include <AsgTools/AsgTool.h>
17 
18 #include <gtest/gtest.h>
19 
20 #include <optional>
21 
22 namespace columnar
23 {
24  namespace TestUtils
25  {
27  struct ColumnMapType;
28  }
29 
30  struct ColumnarMemoryTest : public testing::Test
31  {
33 
35  std::string makeUniqueName ();
36 
38  static bool checkMode ();
39 
42  };
43 
44 
45 
46  namespace TestUtils
47  {
53 
55  {
58 
59  public:
60 
61  explicit ColumnarTestToolHandle (asg::AsgTool& val_tool);
62 
64  void renameContainers (const std::vector<std::pair<std::string,std::string>>& renames);
65 
67  void initialize ();
68 
70  void applySystematicVariation (const std::string& sysName);
71 
73  [[nodiscard]] std::vector<ColumnInfo> getColumnInfo () const;
74 
76  std::vector<std::string> getColumnNames () const;
77 
79  std::vector<std::string> getRecommendedSystematics () const;
80 
82  [[nodiscard]] ToolColumnVectorMap& getToolWrapper ();
83  [[nodiscard]] const ToolColumnVectorMap& getToolWrapper () const;
84 
86  [[nodiscard]] const ColumnVectorHeader& getColumnHeader () const {
87  return *m_columnHeader;}
88 
90  [[nodiscard]] IColumnarTool* getTool ();
91 
92 
93 
96 
97  private:
98 
99  IColumnarTool* m_tool = nullptr;
101 
102  std::shared_ptr<ColumnVectorHeader> m_columnHeader;
103  std::shared_ptr<ToolColumnVectorMap> m_toolWrapper;
104  };
105 
106 
107 
109  {
110  ColumnMapType (ColumnarTestToolHandle& val_toolHandle);
111 
112  void addColumn (const std::string& name, std::vector<std::any> data);
113 
114  std::size_t columnSize (const std::string& name);
115 
116  void setExpectation (const std::string& name, std::vector<std::any> values);
117 
119  void connectColumnsToTool ();
120 
121  void call ();
122 
123  void checkExpectations ();
124 
125  template<typename T> void addTypedColumn (const std::string& name, std::vector<T> data)
126  {
127  addColumn (name, std::vector<std::any> (data.begin(), data.end()));
128  }
129 
130  private:
131 
133 
134  std::unique_ptr<ColumnVectorData> m_columnData;
135 
137  {
138  std::optional<ColumnInfo> info;
139  std::optional<ManualColumnData> input;
140  std::optional<ManualColumnData> expectation;
141  };
142  std::unordered_map<std::string,MyColumnData> m_userColumns;
143  };
144  }
145 }
146 
147 #endif
CaloCondBlobAlgs_fillNoiseFromASCII.sysName
sysName
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:92
columnar::TestUtils::ColumnMapType::setExpectation
void setExpectation(const std::string &name, std::vector< std::any > values)
Definition: ColumnarMemoryTest.cxx:186
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
columnar::IColumnarTool
an interface for tools that operate on columnar data
Definition: IColumnarTool.h:214
columnar::ColumnarMemoryTest
Definition: ColumnarMemoryTest.h:31
columnar::TestUtils::ColumnMapType::addColumn
void addColumn(const std::string &name, std::vector< std::any > data)
Definition: ColumnarMemoryTest.cxx:174
columnar::ColumnVectorHeader
the header information for the entire columnar data vector
Definition: ColumnVectorWrapper.h:97
TestUtils
Definition: TestUtils.py:1
columnar::TestUtils::ColumnarTestToolHandle::applySystematicVariation
void applySystematicVariation(const std::string &sysName)
set the tool to apply the given systematic variation
Definition: ColumnarMemoryTest.cxx:85
columnar::TestUtils::ColumnarTestToolHandle::renameContainers
void renameContainers(const std::vector< std::pair< std::string, std::string >> &renames)
rename the columns the tool uses
Definition: ColumnarMemoryTest.cxx:63
columnar::TestUtils::ColumnarTestToolHandle::getToolWrapper
ToolColumnVectorMap & getToolWrapper()
get the tool wrapper
Definition: ColumnarMemoryTest.cxx:131
columnar::ToolColumnVectorMap
a class that interfaces an IColumnarTool to a ColumnVectorHeader
Definition: ToolColumnVectorMap.h:30
columnar::TestUtils::ColumnarTestToolHandle::initialize
void initialize()
initialize the tool
Definition: ColumnarMemoryTest.cxx:76
ISystematicsTool.h
columnar::TestUtils::ColumnMapType::call
void call()
Definition: ColumnarMemoryTest.cxx:260
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:808
columnar::TestUtils::ColumnarTestToolHandle
a handle to a columnar tool for running tests
Definition: ColumnarMemoryTest.h:55
IColumnarTool.h
columnar::TestUtils::ColumnarTestToolHandle::m_toolWrapper
std::shared_ptr< ToolColumnVectorMap > m_toolWrapper
Definition: ColumnarMemoryTest.h:103
columnar::TestUtils::ColumnarTestToolHandle::getColumnInfo
std::vector< ColumnInfo > getColumnInfo() const
get the expected column info
Definition: ColumnarMemoryTest.cxx:98
columnar::TestUtils::ColumnMapType::columnSize
std::size_t columnSize(const std::string &name)
Definition: ColumnarMemoryTest.cxx:198
columnar::ColumnarMemoryTest::makeUniqueName
std::string makeUniqueName()
make a unique tool name to be used in unit tests
Definition: ColumnarMemoryTest.cxx:33
columnar::TestUtils::ColumnarTestToolHandle::m_tool
IColumnarTool * m_tool
Definition: ColumnarMemoryTest.h:99
columnar::ColumnarMemoryTest::ColumnarMemoryTest
ColumnarMemoryTest()
Definition: ColumnarMemoryTest.cxx:26
columnar::TestUtils::ColumnMapType::m_columnData
std::unique_ptr< ColumnVectorData > m_columnData
Definition: ColumnarMemoryTest.h:134
columnar::TestUtils::ColumnarTestToolHandle::getColumnNames
std::vector< std::string > getColumnNames() const
get the expected column names
Definition: ColumnarMemoryTest.cxx:108
columnar::final
CM final
Definition: ColumnAccessor.h:106
columnar::TestUtils::ColumnMapType::m_userColumns
std::unordered_map< std::string, MyColumnData > m_userColumns
Definition: ColumnarMemoryTest.h:142
ManualColumnData.h
columnar::TestUtils::ColumnarTestToolHandle::m_columnHeader
std::shared_ptr< ColumnVectorHeader > m_columnHeader
Definition: ColumnarMemoryTest.h:102
columnar::TestUtils::ColumnarTestToolHandle::ColumnarTestToolHandle
ColumnarTestToolHandle(asg::AsgTool &val_tool)
Definition: ColumnarMemoryTest.cxx:52
columnar::TestUtils::ColumnarTestToolHandle::getTool
IColumnarTool * getTool()
get the contained tool
Definition: ColumnarMemoryTest.cxx:151
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
columnar::TestUtils::ColumnMapType
Definition: ColumnarMemoryTest.h:109
columnar::TestUtils::ColumnMapType::MyColumnData::expectation
std::optional< ManualColumnData > expectation
Definition: ColumnarMemoryTest.h:140
columnar::TestUtils::ColumnarTestToolHandle::getRecommendedSystematics
std::vector< std::string > getRecommendedSystematics() const
get the recommended systematics
Definition: ColumnarMemoryTest.cxx:118
CP::ISystematicsTool
Interface for all CP tools supporting systematic variations.
Definition: ISystematicsTool.h:32
columnar::TestUtils::ColumnarTestToolHandle::m_systTool
CP::ISystematicsTool * m_systTool
Definition: ColumnarMemoryTest.h:100
ToolWrapper.h
columnar
Definition: ClusterDef.h:16
columnar::TestUtils::ColumnMapType::m_toolHandle
ColumnarTestToolHandle * m_toolHandle
Definition: ColumnarMemoryTest.h:132
columnar::TestUtils::ColumnMapType::connectColumnsToTool
void connectColumnsToTool()
add the columns we have to the tool
Definition: ColumnarMemoryTest.cxx:209
columnar::TestUtils::ColumnMapType::checkExpectations
void checkExpectations()
Definition: ColumnarMemoryTest.cxx:269
ColumnInfo.h
columnar::ColumnarMemoryTest::checkMode
static bool checkMode()
check whether we have the right mode
Definition: ColumnarMemoryTest.cxx:42
AsgTool.h
columnar::TestUtils::ColumnMapType::MyColumnData::input
std::optional< ManualColumnData > input
Definition: ColumnarMemoryTest.h:139
columnar::TestUtils::ColumnarTestToolHandle::getColumnHeader
const ColumnVectorHeader & getColumnHeader() const
get the column header
Definition: ColumnarMemoryTest.h:86
python.difftuple.renames
dictionary renames
Definition: difftuple.py:22
columnar::TestUtils::ColumnMapType::ColumnMapType
ColumnMapType(ColumnarTestToolHandle &val_toolHandle)
Definition: ColumnarMemoryTest.cxx:159
columnar::TestUtils::ColumnMapType::addTypedColumn
void addTypedColumn(const std::string &name, std::vector< T > data)
Definition: ColumnarMemoryTest.h:125
columnar::TestUtils::ColumnMapType::MyColumnData::info
std::optional< ColumnInfo > info
Definition: ColumnarMemoryTest.h:138
columnar::TestUtils::ColumnMapType::MyColumnData
Definition: ColumnarMemoryTest.h:137