Skip to content
Snippets Groups Projects
Select Git revision
  • 198e751a26abbeff812e19beaec057cecf03c1e8
  • develop default protected
  • feature/advection
  • feature/composite-scheme-other-fluxes
  • origin/stage/bouguettaia
  • save_clemence
  • feature/local-dt-fsi
  • feature/variational-hydro
  • feature/gmsh-reader
  • feature/reconstruction
  • feature/kinetic-schemes
  • feature/composite-scheme-sources
  • feature/serraille
  • feature/composite-scheme
  • hyperplastic
  • feature/polynomials
  • feature/gks
  • feature/implicit-solver-o2
  • feature/coupling_module
  • feature/implicit-solver
  • feature/merge-local-dt-fsi
  • v0.5.0 protected
  • v0.4.1 protected
  • v0.4.0 protected
  • v0.3.0 protected
  • v0.2.0 protected
  • v0.1.0 protected
  • Kidder
  • v0.0.4 protected
  • v0.0.3 protected
  • v0.0.2 protected
  • v0 protected
  • v0.0.1 protected
33 results

Partitioner.hpp

Blame
  • 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;
          std::ifstream fin(filename.c_str());
    
          do {
            char c = fin.get();
            if (c != EOF) {
              file_content += c;
            }
          } while (fin);
    
          REQUIRE(file_content == "true bar\n");
        }
    
        std::filesystem::remove(filename);
        REQUIRE(not std::filesystem::exists(filename));
      }
    
      REQUIRE(BinOp<language::shift_left_op>{}.eval(3, 2) == (3 << 2));
      REQUIRE(BinOp<language::shift_right_op>{}.eval(17, 2) == (17 >> 2));
    }