#include "nest/expr/VarNode.h"
#include "nest/expr/DerefNode.h"
#include "nest/expr/AddNode.h"
+#include "nest/expr/MulNode.h"
#include <memory>
} // namespace nest
nest::Expr operator+(const nest::Expr &, const nest::Expr &);
+nest::Expr operator*(const nest::Expr &, const nest::Expr &);
#endif // __NEST_EXPR_H__
{
return std::make_shared<nest::expr::AddNode>(lhs, rhs);
}
+
+nest::Expr operator*(const nest::Expr &lhs, const nest::Expr &rhs)
+{
+ return std::make_shared<nest::expr::MulNode>(lhs, rhs);
+}
ASSERT_EQ(add->lhs().get(), left.get());
ASSERT_EQ(add->rhs().get(), right.get());
}
+
+TEST(EXPR, operator_mul)
+{
+ auto left = std::make_shared<DummyNode>();
+ auto right = std::make_shared<DummyNode>();
+
+ auto expr = left * right;
+
+ ASSERT_NE(expr->asMul(), nullptr);
+
+ auto add = expr->asMul();
+
+ ASSERT_EQ(add->lhs().get(), left.get());
+ ASSERT_EQ(add->rhs().get(), right.get());
+}