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

Add tests for insert and replace

parent 89930b8d
...@@ -3,19 +3,18 @@ ...@@ -3,19 +3,18 @@
namespace rtg { namespace rtg {
template<class R, class T> template <class R, class T>
auto erase(R&& r, const T& value) 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) 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 } // namespace rtg
#endif #endif
...@@ -62,7 +62,7 @@ struct minus_op ...@@ -62,7 +62,7 @@ struct minus_op
} }
}; };
void literal_test() void literal_test1()
{ {
rtg::program p; rtg::program p;
...@@ -74,6 +74,20 @@ void literal_test() ...@@ -74,6 +74,20 @@ void literal_test()
EXPECT(result != rtg::literal{4}); 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() void param_test()
{ {
rtg::program p; rtg::program p;
...@@ -102,9 +116,28 @@ void replace_test() ...@@ -102,9 +116,28 @@ void replace_test()
EXPECT(result != rtg::literal{3}); 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() int main()
{ {
literal_test(); literal_test1();
literal_test2();
param_test(); param_test();
replace_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