1 #define BOOST_TEST_DYN_LINK
2 #include <boost/test/unit_test.hpp>
15 BOOST_AUTO_TEST_SUITE(EnumeratorTest)
24 Eigen::Vector3d a, b, c;
27 std::vector<std::string> m_names;
32 ScelEnumByProps e(primclex, enum_props);
34 BOOST_CHECK_EQUAL(e.name(),
"ScelEnumByProps");
40 for(; it != end; ++it, ++count) {
41 m_names.push_back(it->get_name());
44 BOOST_CHECK_EQUAL(count, 20);
45 BOOST_CHECK(it == end);
46 BOOST_CHECK(!e.valid());
53 BOOST_CHECK_EQUAL(it.step(), 0);
55 BOOST_CHECK_EQUAL(it.step(), 1);
57 auto it_B = e.begin();
58 BOOST_CHECK_EQUAL(it_B.step(), 0);
60 BOOST_CHECK_EQUAL(it_B.step(), 1);
62 BOOST_CHECK_EQUAL(it.step(), 1);
65 BOOST_CHECK_EQUAL(it.step(), 6);
68 BOOST_CHECK_EQUAL(it.step(), 5);
72 BOOST_CHECK(e.end() == e.end());
78 BOOST_CHECK(it == e.end());
83 auto it_B = e.begin();
84 BOOST_CHECK(it == it_B);
87 BOOST_CHECK(it != it_B);
90 BOOST_CHECK(it == it_B);
92 BOOST_CHECK_EQUAL(std::distance(it, it_B), 0);
95 BOOST_CHECK_EQUAL(std::distance(it, it_B), 2);
96 BOOST_CHECK_EQUAL(std::distance(it_B, it), -2);
100 BOOST_CHECK_EQUAL(std::distance(e.begin(), e.begin()), 0);
101 BOOST_CHECK_EQUAL(std::distance(e.end(), e.end()), 0);
102 BOOST_CHECK_EQUAL(std::distance(e.begin(), e.end()), e.size());
103 BOOST_CHECK_EQUAL(std::distance(e.begin(), e.end()), e.size());
107 BOOST_CHECK_EQUAL(std::distance(e.rbegin(), e.rbegin()), 0);
108 BOOST_CHECK_EQUAL(std::distance(e.rend(), e.rend()), 0);
109 BOOST_CHECK_EQUAL(std::distance(e.rbegin(), e.rend()), e.size());
110 BOOST_CHECK_EQUAL(std::distance(e.rbegin(), e.rend()), e.size());
115 BOOST_AUTO_TEST_SUITE_END()
Data structure for holding supercell enumeration properties.
const Lattice & lattice() const
EigenIndex Index
For long integer indexing:
BOOST_AUTO_TEST_CASE(Test1)
PrimClex is the top-level data structure for a CASM project.
Enumerate over Supercell.
std::tuple< LatVec, LatVec, LatVec > vectors()
virtual void check_init()
Check project initialization.
const Structure & get_prim() const
const Access to primitive Structure