Commit 8d437959 authored by Paul's avatar Paul
Browse files

Add tests for insert and replace

parent 89930b8d
......@@ -3,19 +3,18 @@
namespace rtg {
template<class R, class T>
template <class R, class T>
auto erase(R&& r, const T& value)
{
return r.erase(std::remove(r.begin(), r.end(), value), r.end());
return r.erase(std::remove(r.begin(), r.end(), value), r.end());
}
template<class R, class P>
template <class R, class P>
auto erase_if(R&& r, P&& pred)
{
return r.erase(std::remove_if(r.begin(), r.end(), pred), r.end());
return r.erase(std::remove_if(r.begin(), r.end(), pred), r.end());
}
} // namespace rtg
#endif
......@@ -62,7 +62,7 @@ struct minus_op
}
};
void literal_test()
void literal_test1()
{
rtg::program p;
......@@ -74,6 +74,20 @@ void literal_test()
EXPECT(result != rtg::literal{4});
}
void literal_test2()
{
rtg::program p;
auto one = p.add_literal(1);
auto two = p.add_literal(2);
auto sum1 = p.add_instruction(sum_op{}, one, two);
p.add_instruction(sum_op{}, sum1, two);
auto result = p.eval({});
EXPECT(result == rtg::literal{5});
EXPECT(result != rtg::literal{3});
}
void param_test()
{
rtg::program p;
......@@ -102,9 +116,28 @@ void replace_test()
EXPECT(result != rtg::literal{3});
}
void insert_replace_test()
{
rtg::program p;
auto one = p.add_literal(1);
auto two = p.add_literal(2);
auto sum1 = p.add_instruction(sum_op{}, one, two);
p.add_instruction(sum_op{}, sum1, two);
auto sum0 = p.insert_instruction(sum1, sum_op{}, two, two);
p.replace_instruction(sum1, minus_op{}, sum0, two);
auto result = p.eval({});
EXPECT(result == rtg::literal{4});
EXPECT(result != rtg::literal{5});
}
int main()
{
literal_test();
literal_test1();
literal_test2();
param_test();
replace_test();
insert_replace_test();
}
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