43#include <catch2/catch_session.hpp>
44#include <catch2/catch_test_macros.hpp>
45#include <catch2/reporters/catch_reporter_event_listener.hpp>
46#include <catch2/reporters/catch_reporter_registrars.hpp>
52#include "quest/include/quest.h"
53#include "tests/utils/cache.hpp"
54#include "tests/utils/macros.hpp"
55#include "tests/utils/random.hpp"
63extern "C" void validationErrorHandler(
const char* errFunc,
const char* errMsg) {
65 throw std::runtime_error(std::string(errFunc) +
": " + std::string(errMsg));
74class startListener :
public Catch::EventListenerBase {
76 using Catch::EventListenerBase::EventListenerBase;
77 void testRunStarting(Catch::TestRunInfo
const&)
override {
89 std::cout << std::endl;
90 std::cout <<
"QuEST execution environment:" << std::endl;
92 std::cout <<
" multithreaded: " << env.isMultithreaded << std::endl;
93 std::cout <<
" distributed: " << env.isDistributed << std::endl;
94 std::cout <<
" GPU-accelerated: " << env.isGpuAccelerated << std::endl;
95 std::cout <<
" cuQuantum: " << (env.isGpuAccelerated && COMPILE_CUQUANTUM) << std::endl;
96 std::cout <<
" num nodes: " << env.numNodes << std::endl;
97 std::cout <<
" num qubits: " << getNumCachedQubits() << std::endl;
99 std::cout << std::endl;
101 std::cout <<
"Tested Qureg deployments:" << std::endl;
102 for (
auto& [label, qureg]: getCachedStatevecs())
103 std::cout <<
" " << label << std::endl;
104 std::cout << std::endl;
108CATCH_REGISTER_LISTENER(startListener)
115int main(
int argc,
char* argv[]) {
123 setRandomTestStateSeeds();
126 createCachedQuregs();
127 createCachedFullStateDiagMatrs();
131 std::cout.rdbuf(
nullptr);
134 int result = Catch::Session().run( argc, argv );
136 destroyCachedFullStateDiagMatrs();
137 destroyCachedQuregs();
void setInputErrorHandler(void(*callback)(const char *func, const char *msg))
const int FLOAT_PRECISION
const int TEST_MAX_NUM_QUBIT_PERMUTATIONS