bsc-exc/run.cc
2019-05-06 15:51:45 +02:00

78 lines
2.1 KiB
C++

#include <iostream>
#include <vector>
#include <functional>
#include <string>
#include "Data.hh"
// generic function comparing two values of some type T
template <class T>
bool testEqual(const std::string& name, T expected, T real) {
if (expected != real) {
std::cout << "(" << name << ": <" << expected << ">"
<< ", " << real << ") ";
return false;
}
return true;
}
bool testReadingSize() {
std::cout << "testReadingSize...";
Data datA("testA");
return testEqual<int>("size", 1, datA.size());
}
bool testReadingMeasurement() {
std::cout << "testReadingMeasurement...";
Data datA("testA");
return testEqual("measurement", 10., datA.measurement(0));
}
bool testReadingBinEdges() {
std::cout << "testReadingBinEdges...";
Data datA("testA");
return testEqual("bin low", 0., datA.binLow(0)) &&
testEqual("bin high", 1., datA.binHigh(0));
}
bool testReadingErrors() {
std::cout << "testReadingErrors...";
Data datA("testA");
return testEqual("error", 2., datA.error(0));
}
bool testCopyConstructor() {
std::cout << "testCopyConstructor...";
Data a("testA");
Data b(a);
Data c = a; // equivalent to Data c(a)
return testEqual("measurement", 10., b.measurement(0)) &&
testEqual("measurement", 10., c.measurement(0));
}
void runTests() {
std::cout << "running tests...\n";
std::vector<std::function<bool()> > tests(
{testReadingSize, testReadingMeasurement, testReadingBinEdges,
testReadingErrors, testCopyConstructor});
for (auto test : tests)
std::cout << (test() ? " ok" : " FAILED!") << std::endl;
}
int main() {
using namespace std;
cout << "******************************************************" << endl;
runTests();
cout << "******************************************************" << endl;
// create an object which holds data of experiment A
Data datA("exp_A");
// here is the data from experiment A
cout << "bin 0: from " << datA.binLow(0) << " to " << datA.binHigh(1) << endl;
cout << "measurement of experiment A in bin 0: " << datA.measurement(0)
<< endl;
return 0;
}