-
Simon Heybrock authoredSimon Heybrock authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
IndexSetTest.h 2.22 KiB
#ifndef MANTID_KERNEL_INDEXSETTEST_H_
#define MANTID_KERNEL_INDEXSETTEST_H_
#include <cxxtest/TestSuite.h>
#include "MantidKernel/IndexSet.h"
#include "MantidKernel/Exception.h"
using namespace Mantid;
using namespace Mantid::Kernel;
class IndexSetTest : public CxxTest::TestSuite {
public:
void test_fullRangeConstructor() {
TS_ASSERT_THROWS_NOTHING(IndexSet set(3));
// Also empty set is supported
TS_ASSERT_THROWS_NOTHING(IndexSet set(0));
}
void test_rangeConstructor() {
// maximal possible range: 0...N-1
TS_ASSERT_THROWS_NOTHING(IndexSet set(0, 2, 3));
// smaller range works?
TS_ASSERT_THROWS_NOTHING(IndexSet set(1, 2, 3));
// min == max should work as well
TS_ASSERT_THROWS_NOTHING(IndexSet set(2, 2, 3));
}
void test_rangeConstructorErrorCases() {
// min negative
TS_ASSERT_THROWS(IndexSet set(-1, 2, 3), Exception::IndexError);
// min > max
TS_ASSERT_THROWS(IndexSet set(2, 1, 3), Exception::IndexError);
// max above count
TS_ASSERT_THROWS(IndexSet set(1, 3, 3), Exception::IndexError);
// does it still fail if both are wrong?
TS_ASSERT_THROWS(IndexSet set(3, 3, 3), Exception::IndexError);
}
void test_indexListConstructor() {
TS_ASSERT_THROWS_NOTHING(IndexSet set({1, 2}, 3));
// Empty set is supported
TS_ASSERT_THROWS_NOTHING(IndexSet set({}, 3));
}
void test_indexListConstructorErrorCases() {
TS_ASSERT_THROWS(IndexSet set({3}, 3), Exception::IndexError);
}
void test_size() {
size_t fullRange = 5;
IndexSet set1(fullRange);
TS_ASSERT_EQUALS(set1.size(), fullRange);
IndexSet set2(1, 2, fullRange);
TS_ASSERT_EQUALS(set2.size(), 2);
}
void test_fullRange() {
IndexSet set(3);
TS_ASSERT_EQUALS(set.size(), 3);
TS_ASSERT_EQUALS(set[0], 0);
TS_ASSERT_EQUALS(set[1], 1);
TS_ASSERT_EQUALS(set[2], 2);
}
void test_range() {
IndexSet set(1, 2, 3);
TS_ASSERT_EQUALS(set.size(), 2);
TS_ASSERT_EQUALS(set[0], 1);
TS_ASSERT_EQUALS(set[1], 2);
}
void test_indexList() {
// Note duplicate index
IndexSet set({2, 1, 2}, 3);
TS_ASSERT_EQUALS(set.size(), 2);
TS_ASSERT_EQUALS(set[0], 1);
TS_ASSERT_EQUALS(set[1], 2);
}
};
#endif /* MANTID_KERNEL_INDEXSETTEST_H_ */