TEST(Expression_Builder, can_expression_whith_unary_minus_and_whith_bracket) {
	ExpressionBuilder builder("4*(-3)", NULL);
	Expression* expression = builder.Build();
	ASSERT_EQ(4*(-3), expression->Calculate());
}
TEST(Expression_Builder, can_expression_whith_variable) {
	ExpressionBuilder builder("a*(1+2)", new ConsoleStub(2)); // à = 2;
	Expression* expression = builder.Build();
	ASSERT_EQ(2*(1 + 2), expression->Calculate());
}
TEST(Expression_Builder, can_expression_whith_unary_minus) {
	ExpressionBuilder builder("-3*2", NULL);
	Expression* expression = builder.Build();
	ASSERT_EQ(-3*2, expression->Calculate());
}
TEST(Expression_Builder, can_build_expression_whith_bracket) {
	ExpressionBuilder builder("(1+2)*3", NULL);
	Expression* expression = builder.Build();
	ASSERT_EQ( (1+2)*3, expression->Calculate());
}
TEST(Expression_Builder, can_build_digit)
{
	ExpressionBuilder builder("1", NULL);
	Expression* expression = builder.Build();
	ASSERT_EQ(1,expression->Calculate());
}
TEST(Expression_Builder, can_build_digit_divide) {
	ExpressionBuilder builder("3/2", NULL);
	Expression* expression = builder.Build();
	ASSERT_EQ(3.0/2.0, expression->Calculate());
}
TEST(Expression_Builder, can_build_digit_multiply) {
	ExpressionBuilder builder("2*3", NULL);
	Expression* expression = builder.Build();
	ASSERT_EQ(2*3, expression->Calculate());
}