78 lines
2.1 KiB
C++
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;
|
|
}
|