mirror of https://github.com/dnomd343/klotski.git
				
				
			
				 7 changed files with 43 additions and 102 deletions
			
			
		| @ -0,0 +1,34 @@ | |||
| #include <gtest/gtest.h> | |||
| 
 | |||
| #include "group/group.h" | |||
| #include "helper/cases.h" | |||
| 
 | |||
| using klotski::cases::Group; | |||
| using klotski::cases::GroupUnion; | |||
| 
 | |||
| using klotski::cases::TYPE_ID_LIMIT; | |||
| 
 | |||
| // TODO: basic type_id / group_id verify with create / unsafe_create
 | |||
| 
 | |||
| // TODO: hash check for every group
 | |||
| 
 | |||
| TEST(Group, cases) { | |||
| 
 | |||
|     for (uint32_t type_id = 0; type_id < TYPE_ID_LIMIT; ++type_id) { | |||
|         auto group_union = GroupUnion::unsafe_create(type_id); | |||
| 
 | |||
|         for (auto group : group_union.groups()) { | |||
| 
 | |||
|             auto &expect = group_cases(type_id, group.group_id()); | |||
|             auto codes = group.cases().codes(); | |||
| 
 | |||
|             EXPECT_EQ(codes, expect); | |||
| 
 | |||
|             EXPECT_EQ(codes.size(), group.size()); | |||
| 
 | |||
|         } | |||
|     } | |||
| 
 | |||
| } | |||
| 
 | |||
| // TODO: test from_raw_code / from_short_code / from_common_code
 | |||
| @ -1,100 +0,0 @@ | |||
| #include <hash.h> | |||
| #include <group/group.h> | |||
| #include <gtest/gtest.h> | |||
| #include <ranges/ranges.h> | |||
| #include <__format/format_functions.h> | |||
| 
 | |||
| TEST(Group, group_extend) { | |||
|     // auto src = klotski::codec::RawCode::from_common_code(0x1A9BF0C00)->unwrap();
 | |||
|     // auto codes = klotski::cases::group_extend_from_seed(src);
 | |||
|     //
 | |||
|     // for (auto &code: codes) {
 | |||
|     //     auto raw_code = klotski::codec::RawCode::create(code).value();
 | |||
|     //     code = raw_code.to_common_code().unwrap();
 | |||
|     // }
 | |||
|     // std::sort(codes.begin(), codes.end());
 | |||
|     // EXPECT_EQ(codes.size(), 25955);
 | |||
|     //
 | |||
|     // auto index = std::lower_bound(codes.begin(), codes.end(), 0x1A9BF0C00) - codes.begin();
 | |||
|     // EXPECT_EQ(index, 7472);
 | |||
|     //
 | |||
|     // auto hash_ret = hash::xxh3(codes.data(), codes.size() * sizeof(uint64_t));
 | |||
|     // EXPECT_EQ(hash_ret, 0x91BD28A749312A6D);
 | |||
| } | |||
| 
 | |||
| static std::vector<std::tuple<int, int, int>> target_nums() { | |||
| 
 | |||
|     std::vector<std::tuple<int, int, int>> results; | |||
| 
 | |||
|     for (int n = 0; n <= 7; ++n) { | |||
|         for (int n_2x1 = 0; n_2x1 <= n; ++n_2x1) { | |||
|             for (int n_1x1 = 0; n_1x1 <= (14 - n * 2); ++n_1x1) { | |||
|                 results.emplace_back(n, n_2x1, n_1x1); | |||
|             } | |||
|         } | |||
|     } | |||
| 
 | |||
|     results.resize(203); | |||
|     return results; | |||
| } | |||
| 
 | |||
| TEST(Group, ranges) { | |||
|     // auto ret = klotski::cases::spawn_ranges(2, 1, 4, 4);
 | |||
|     //
 | |||
|     // EXPECT_EQ(ret.size(), 34650);
 | |||
|     //
 | |||
|     // auto hash_ret = hash::xxh3(ret.data(), ret.size() * 4);
 | |||
|     // EXPECT_EQ(hash_ret, 0xF6F87606E4205EAF);
 | |||
| 
 | |||
|     klotski::cases::Ranges kk {}; | |||
| 
 | |||
|     // std::vector<uint32_t> ranges;
 | |||
|     for (auto [n, n_2x1, n_1x1] : target_nums()) { | |||
| 
 | |||
|         kk.spawn(n, n_2x1, n_1x1); | |||
| 
 | |||
|         // kk.spawn_more(n, n_2x1, n_1x1);
 | |||
| 
 | |||
|         // auto kk = klotski::cases::spawn_ranges(n, n_2x1, n_1x1);
 | |||
| 
 | |||
|         // ranges.insert(ranges.end(), kk.begin(), kk.end());
 | |||
|     } | |||
| 
 | |||
|     EXPECT_EQ(kk.size(), 7311885); | |||
| 
 | |||
|     klotski::cases::Ranges pp {kk}; | |||
|     for (auto &x : pp) { | |||
|         x = klotski::range_reverse(x); | |||
|     } | |||
| 
 | |||
|     // auto hash_ret = hash::xxh3(kk.ranges_);
 | |||
|     // EXPECT_EQ(hash_ret, 0xA1E247B01D5A9545);
 | |||
| 
 | |||
|     klotski::cases::Ranges result; | |||
|     // kk.derive(5, result);
 | |||
|     klotski::cases::derive_demo(kk, pp, result, 5); | |||
| 
 | |||
|     EXPECT_EQ(result.size(), 1355971); | |||
| 
 | |||
|     // std::cout << result.size() << std::endl;
 | |||
| 
 | |||
|     EXPECT_EQ(hash::xxh3(result), 0xf00ecc84b6f678a6); | |||
| 
 | |||
|     // std::cout << std::format("{:x}", hash::xxh3(result)) << std::endl;
 | |||
| 
 | |||
| 
 | |||
| } | |||
| 
 | |||
| TEST(Group, basic_ranges) { | |||
|     // auto ret = klotski::cases::basic_ranges();
 | |||
|     // std::cout << ret.size() << std::endl;
 | |||
| 
 | |||
|     // EXPECT_EQ(ret.size(), 7311921);
 | |||
| 
 | |||
|     // auto hash_ret = hash::xxh3(ret);
 | |||
|     // std::cout << std::format("{:X}", hash_ret) << std::endl;
 | |||
| 
 | |||
|     // EXPECT_EQ(hash_ret, 0xA1E247B01D5A9545); // no sorted
 | |||
|     // EXPECT_EQ(hash_ret, 0x00A926AB1121230D); // no reversed
 | |||
|     // EXPECT_EQ(hash_ret, 0x82B040060044E336);
 | |||
| } | |||
					Loading…
					
					
				
		Reference in new issue