Hush Full Node software. We were censored from Github, this is where all development happens now.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

209 lines
5.9 KiB

#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include "crypto/equihash.h"
TEST(equihash_tests, check_basic_solver_cancelled) {
Equihash<48,5> Eh48_5;
crypto_generichash_blake2b_state state;
Eh48_5.InitialiseState(state);
{
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return false;
}));
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == ListSorting;
}), EhSolverCancelledException);
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == RoundEnd;
}), EhSolverCancelledException);
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == FinalColliding;
}), EhSolverCancelledException);
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == PartialSorting;
}));
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == PartialIndexEnd;
}));
}
{
ASSERT_NO_THROW(Eh48_5.BasicSolve(state, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == PartialEnd;
}));
}
}
TEST(equihash_tests, check_optimised_solver_cancelled) {
Equihash<48,5> Eh48_5;
crypto_generichash_blake2b_state state;
Eh48_5.InitialiseState(state);
{
ASSERT_NO_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return false;
}));
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == ListSorting;
}), EhSolverCancelledException);
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == RoundEnd;
}), EhSolverCancelledException);
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == FinalColliding;
}), EhSolverCancelledException);
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == PartialSorting;
}), EhSolverCancelledException);
}
{
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, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == PartialIndexEnd;
}), EhSolverCancelledException);
}
{
ASSERT_THROW(Eh48_5.OptimisedSolve(state, [](std::vector<eh_index> soln) {
return false;
}, [](EhSolverCancelCheck pos) {
return pos == PartialEnd;
}), EhSolverCancelledException);
}
}