int main(int argc, const char* argv[]) { bool testValidityFolder = false; Reader *input = new Reader(); std::vector<char> cornersMap(UNIQUE_CORNERS / 2+1); std::vector<char> edgesAMap(UNIQUE_EDGES / 2+1); std::vector<char> edgesBMap(UNIQUE_EDGES / 2+1); if (!Rubiks::Cube::TableFileLoad("Tables\\corners.bin", cornersMap)) { std::cout << "Corners.bin failed to load!\n"; } if (!Rubiks::Cube::TableFileLoad("Tables\\edges.bin", edgesAMap)) { std::cout << "Edges.bin failed to load!\n"; } if(!Rubiks::Cube::TableFileLoad("Tables\\edges2.bin", edgesBMap)) { std::cout << "Edges2.bin failed to load!\n"; } if (argv[1] && !testValidityFolder) // Single file to test if valid Rubiks Cube { #ifdef DEBUG_MODE // Only for putting debug information out. Else just print if its a valid cube. if (input->LoadCubeFile(argv[1], true)) { std::cout << "VALID_INPUT\n"; Rubiks::Cube cube = input->GetCube(); cube.LogCube(); cube.Solve(cornersMap, edgesAMap, edgesBMap); } else { std::cout << "INVALID_INPUT\n"; } system("pause"); #else bool valid = input->LoadCubeFile(argv[1], true); if (!valid) { std::cout << "Not a valid cube or file input.\n"; } else { Rubiks::Cube cube = input->GetCube(); cube.Solve(cornersMap, edgesAMap, edgesBMap); } system("pause"); #endif } else if (testValidityFolder) // Test an entire folder for validity { int passed = 0; for (int i = 0; i < 16; ++i) { input = new Reader(); std::stringstream file; file << "..\\..\\scrambles\\countstates\\cube" << i ; if (!input->LoadCubeFile(file.str(), true)) { std::cout << "Test " << i << " failed\n"; } else { Rubiks::Cube cube = input->GetCube(); ++passed; cube.Solve(cornersMap, edgesAMap, edgesBMap); } delete input; } std::cout << "Finished all tests " << " Passed:" << passed << "\n"; system("pause"); } else { std::cout << "Please provide input file path as argument before execution\n"; system("pause"); } }