#include #include #include #include // TODO: only for debug #include #include "group/group.h" #include "helper/cases.h" #include "common_code/common_code.h" TEST(GroupUnion, demo) { // for (auto i = 0; i < block_nums().size(); ++i) { // std::cout << block_nums()[i].n_2x1 + block_nums()[i].n_1x2 << ", "; // std::cout << block_nums()[i].n_2x1 << ", "; // std::cout << block_nums()[i].n_1x1 << std::endl; // } std::vector> pp; pp.resize(block_nums().size()); for (uint64_t head = 0; head < 16; ++head) { for (auto range : AllCases::instance().fetch()[head]) { uint64_t common_code = head << 32 | range; auto type_id = to_type_id(cal_block_num(common_code)); pp[type_id].emplace_back(common_code); } } for (uint32_t type_id = 0; type_id < klotski::cases::TYPE_ID_LIMIT; ++type_id) { auto cases = klotski::cases::GroupUnion::unsafe_create(type_id).cases(); std::vector extend {}; for (uint64_t head = 0; head < 16; ++head) { for (auto range : cases[head]) { extend.emplace_back(head << 32 | range); } } std::cout << "type_id " << type_id << " -> " << extend.size() << std::endl; EXPECT_EQ(extend, pp[type_id]); } }