|
|
@ -7,76 +7,99 @@ TEST(equihash_tests, check_basic_solver_cancelled) { |
|
|
|
Equihash<48,5> Eh48_5; |
|
|
|
crypto_generichash_blake2b_state state; |
|
|
|
Eh48_5.InitialiseState(state); |
|
|
|
std::set<std::vector<unsigned int>> solns; |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return false; |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == ListGeneration; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == ListSorting; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == ListColliding; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == RoundEnd; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == FinalSorting; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == FinalColliding; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialGeneration; |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialSorting; |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialSubtreeEnd; |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialIndexEnd; |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialEnd; |
|
|
|
})); |
|
|
|
} |
|
|
@ -86,76 +109,99 @@ TEST(equihash_tests, check_optimised_solver_cancelled) { |
|
|
|
Equihash<48,5> Eh48_5; |
|
|
|
crypto_generichash_blake2b_state state; |
|
|
|
Eh48_5.InitialiseState(state); |
|
|
|
std::set<std::vector<unsigned int>> solns; |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_NO_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_NO_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return false; |
|
|
|
})); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == ListGeneration; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == ListSorting; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == ListColliding; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == RoundEnd; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == FinalSorting; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == FinalColliding; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialGeneration; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialSorting; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialSubtreeEnd; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialIndexEnd; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](EhSolverCancelCheck pos) { |
|
|
|
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) { |
|
|
|
return false; |
|
|
|
}, [](EhSolverCancelCheck pos) { |
|
|
|
return pos == PartialEnd; |
|
|
|
}), EhSolverCancelledException); |
|
|
|
} |
|
|
|