#include #include #include #include #include "Data.hh" // generic function comparing two values of some type T template 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("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 > 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; }