mirror of https://github.com/dnomd343/klotski.git
				
				
			
				 2 changed files with 23 additions and 28 deletions
			
			
		| @ -1,40 +1,35 @@ | |||||
| #include <unordered_set> | #include <unordered_set> | ||||
| #include "core.h" | #include "core.h" | ||||
|  | #include "group.h" | ||||
| #include "all_cases.h" | #include "all_cases.h" | ||||
| #include "gtest/gtest.h" | #include "gtest/gtest.h" | ||||
| 
 | 
 | ||||
|  | using klotski::Group; | ||||
| using klotski::RawCode; | using klotski::RawCode; | ||||
| using klotski::AllCases; | using klotski::AllCases; | ||||
| 
 | 
 | ||||
| TEST(Core, demo) { | using klotski::TYPE_ID_LIMIT; | ||||
|     auto raw_codes = std::unordered_set<uint64_t>(); |  | ||||
| //    auto raw_codes_ = std::vector<uint64_t>();
 |  | ||||
| 
 | 
 | ||||
|  | TEST(Core, next_cases) { | ||||
|  |     auto test = [](uint32_t type_id) { | ||||
|  |         auto raw_codes = std::unordered_set<uint64_t>(); | ||||
|         raw_codes.reserve(klotski::ALL_CASES_SIZE_SUM); |         raw_codes.reserve(klotski::ALL_CASES_SIZE_SUM); | ||||
| //    raw_codes_.reserve(klotski::ALL_CASES_SIZE_SUM);
 |         for (auto &&common_code: Group::all_cases(type_id)) { // load all cases in a type
 | ||||
| 
 |  | ||||
|     for (auto &&common_code : AllCases::release()) { // load all raw codes
 |  | ||||
| 
 |  | ||||
| //        EXPECT_NE(common_code.to_raw_code(), 0);
 |  | ||||
| 
 |  | ||||
|             raw_codes.emplace(common_code.to_raw_code().unwrap()); |             raw_codes.emplace(common_code.to_raw_code().unwrap()); | ||||
| //        raw_codes_.emplace_back(common_code.to_raw_code().unwrap());
 |  | ||||
|         } |         } | ||||
| 
 | 
 | ||||
|     std::cout << "init ok" << std::endl; |  | ||||
| 
 |  | ||||
|         auto core = klotski::Core( |         auto core = klotski::Core( | ||||
|             [&raw_codes](auto &&code, auto &&mask) { |             [&raw_codes](auto &&code, auto &&mask) { | ||||
|             EXPECT_NE(raw_codes.find(code), raw_codes.end()); |                 EXPECT_NE(raw_codes.find(code), raw_codes.end()); // verify next case
 | ||||
| //            new_case(std::forward<decltype(code)>(code), std::forward<decltype(mask)>(mask));
 |                 EXPECT_EQ(mask >> __builtin_ctzll(mask), 0b111); // verify mask
 | ||||
|             } |             } | ||||
|         ); |         ); | ||||
| 
 |  | ||||
| 
 |  | ||||
|         for (auto &&raw_code: raw_codes) { |         for (auto &&raw_code: raw_codes) { | ||||
|         core.next_cases(raw_code, 0); |             core.next_cases(raw_code, 0); // search next cases
 | ||||
|  |         } | ||||
|  |     }; | ||||
|  |     // TODO: using multi-threads
 | ||||
|  |     for (uint32_t type_id = 0; type_id < TYPE_ID_LIMIT; ++type_id) { | ||||
|  |         test(type_id); | ||||
|     } |     } | ||||
| 
 |  | ||||
| 
 |  | ||||
| //    EXPECT_EQ(raw_codes.size(), 29334498);
 |  | ||||
| } | } | ||||
|  | |||||
					Loading…
					
					
				
		Reference in new issue