Commit 86e31c07 authored by Paul's avatar Paul
Browse files

Add tests for combiner matchers

parent 75ff4513
......@@ -184,18 +184,6 @@ matcher_result match_instruction(program& p, instruction_ref ins, M&& m)
return result;
}
template <class T, class... Ts>
std::array<T, sizeof...(Ts) + 1> make_array(T x, Ts... xs)
{
return {x, xs...};
}
template <class... Ts>
bool all_of_eager(Ts... xs)
{
return make_array((xs, true)...) == make_array(static_cast<bool>(xs)...);
}
namespace matchers {
template <class... Ts>
......
......@@ -250,6 +250,45 @@ void match_args7()
EXPECT(bool{r.result == pass});
}
void match_all_of()
{
migraph::program p;
auto one = p.add_literal(1);
auto two = p.add_literal(2);
auto sum = p.add_instruction(sum_op{}, one, two);
p.add_instruction(pass_op{}, sum);
auto m = matchers::name("sum")(matchers::all_of(matchers::arg(0)(matchers::name("@literal")),
matchers::arg(1)(matchers::name("@literal"))));
auto r = find_match(p, m);
EXPECT(bool{r.result == sum});
}
void match_any_of()
{
migraph::program p;
auto one = p.add_literal(1);
auto two = p.add_literal(2);
auto sum = p.add_instruction(sum_op{}, one, two);
p.add_instruction(pass_op{}, sum);
auto m = matchers::name("sum")(matchers::any_of(matchers::arg(0)(matchers::name("sum")),
matchers::arg(1)(matchers::name("@literal"))));
auto r = find_match(p, m);
EXPECT(bool{r.result == sum});
}
void match_none_of()
{
migraph::program p;
auto one = p.add_literal(1);
auto two = p.add_literal(2);
auto sum = p.add_instruction(sum_op{}, one, two);
p.add_instruction(pass_op{}, sum);
auto m = matchers::name("sum")(matchers::none_of(matchers::arg(0)(matchers::name("sum")),
matchers::arg(1)(matchers::name("sum"))));
auto r = find_match(p, m);
EXPECT(bool{r.result == sum});
}
void match_bind1()
{
migraph::program p;
......@@ -295,5 +334,9 @@ int main()
match_args6();
match_args7();
match_all_of();
match_any_of();
match_none_of();
match_bind1();
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment