Select Git revision
ASTDotPrinter.cpp
test_BinaryExpressionProcessor_raw.cpp 3.35 KiB
#include <catch2/catch_test_macros.hpp>
#include <catch2/matchers/catch_matchers_all.hpp>
#include <language/node_processor/BinaryExpressionProcessor.hpp>
#include <language/utils/OFStream.hpp>
#include <utils/Stringify.hpp>
#include <utils/pugs_config.hpp>
// clazy:excludeall=non-pod-global-static
TEST_CASE("BinaryExpressionProcessor raw operators", "[language]")
{
REQUIRE(BinOp<language::and_op>{}.eval(true, true) == true);
REQUIRE(BinOp<language::and_op>{}.eval(true, false) == false);
REQUIRE(BinOp<language::and_op>{}.eval(false, true) == false);
REQUIRE(BinOp<language::and_op>{}.eval(false, false) == false);
REQUIRE(BinOp<language::or_op>{}.eval(true, true) == true);
REQUIRE(BinOp<language::or_op>{}.eval(true, false) == true);
REQUIRE(BinOp<language::or_op>{}.eval(false, true) == true);
REQUIRE(BinOp<language::or_op>{}.eval(false, false) == false);
REQUIRE(BinOp<language::xor_op>{}.eval(true, true) == false);
REQUIRE(BinOp<language::xor_op>{}.eval(true, false) == true);
REQUIRE(BinOp<language::xor_op>{}.eval(false, true) == true);
REQUIRE(BinOp<language::xor_op>{}.eval(false, false) == false);
REQUIRE(BinOp<language::eqeq_op>{}.eval(3, 3) == true);
REQUIRE(BinOp<language::eqeq_op>{}.eval(2, 3) == false);
REQUIRE(BinOp<language::not_eq_op>{}.eval(3, 3) == false);
REQUIRE(BinOp<language::not_eq_op>{}.eval(2, 3) == true);
REQUIRE(BinOp<language::lesser_op>{}.eval(2.9, 3) == true);
REQUIRE(BinOp<language::lesser_op>{}.eval(3, 3) == false);
REQUIRE(BinOp<language::lesser_op>{}.eval(3.1, 3) == false);
REQUIRE(BinOp<language::lesser_or_eq_op>{}.eval(2.9, 3) == true);
REQUIRE(BinOp<language::lesser_or_eq_op>{}.eval(3, 3) == true);
REQUIRE(BinOp<language::lesser_or_eq_op>{}.eval(3.1, 3) == false);
REQUIRE(BinOp<language::greater_op>{}.eval(2.9, 3) == false);
REQUIRE(BinOp<language::greater_op>{}.eval(3, 3) == false);
REQUIRE(BinOp<language::greater_op>{}.eval(3.1, 3) == true);
REQUIRE(BinOp<language::greater_or_eq_op>{}.eval(2.9, 3) == false);
REQUIRE(BinOp<language::greater_or_eq_op>{}.eval(3, 3) == true);
REQUIRE(BinOp<language::greater_or_eq_op>{}.eval(3.1, 3) == true);
REQUIRE(BinOp<language::plus_op>{}.eval(2.9, 3) == (2.9 + 3));
REQUIRE(BinOp<language::minus_op>{}.eval(2.9, 3) == (2.9 - 3));
REQUIRE(BinOp<language::multiply_op>{}.eval(2.9, 3) == (2.9 * 3));
REQUIRE(BinOp<language::divide_op>{}.eval(2.9, 3) == (2.9 / 3));
{
std::filesystem::path path{PUGS_BINARY_DIR};
path.append("tests").append(std::string{"binary_expression_processor_shift_left_"} + stringify(getpid()));
std::string filename = path.string();
std::shared_ptr<const OStream> p_fout = std::make_shared<OFStream>(filename);
BinOp<language::shift_left_op>{}.eval(p_fout, true);
BinOp<language::shift_left_op>{}.eval(p_fout, std::string{" bar\n"});
p_fout.reset();
REQUIRE(std::filesystem::exists(filename));
{
std::string file_content;