File: option.cpp

package info (click to toggle)
fenics-dolfinx 1%3A0.10.0.post5-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,956 kB
  • sloc: cpp: 36,535; python: 25,391; makefile: 223; sh: 174; xml: 55
file content (49 lines) | stat: -rw-r--r-- 1,887 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Copyright (C) 2024 Paul T. Kühner
//
// This file is part of DOLFINX (https://www.fenicsproject.org)
//
// SPDX-License-Identifier:    LGPL-3.0-or-later

#include <catch2/catch_test_macros.hpp>
#include <cstdint>
#include <dolfinx/refinement/option.h>

using namespace dolfinx::refinement;

TEST_CASE("Refinement Option", "refinement,option")
{
  // Internal binary structure
  CHECK(static_cast<std::uint8_t>(Option::none) == 0);
  CHECK(static_cast<std::uint8_t>(Option::parent_facet) == 1);
  CHECK(static_cast<std::uint8_t>(Option::parent_cell) == 2);
  CHECK(static_cast<std::uint8_t>(Option::parent_cell_and_facet) == 3);

  // Extraction of flags from possible multiple set flags
  CHECK(option_parent_cell(Option::none) == false);
  CHECK(option_parent_facet(Option::none) == false);

  CHECK(option_parent_cell(Option::parent_facet) == false);
  CHECK(option_parent_facet(Option::parent_facet) == true);

  CHECK(option_parent_cell(Option::parent_cell) == true);
  CHECK(option_parent_facet(Option::parent_cell) == false);

  CHECK(option_parent_cell(Option::parent_cell_and_facet) == true);
  CHECK(option_parent_facet(Option::parent_cell_and_facet) == true);

  // Logical combination of options
  CHECK((Option::none | Option::none) == Option::none);
  CHECK((Option::none | Option::parent_facet) == Option::parent_facet);
  CHECK((Option::none | Option::parent_cell) == Option::parent_cell);

  CHECK((Option::parent_cell_and_facet | Option::none)
        == Option::parent_cell_and_facet);
  CHECK((Option::parent_cell_and_facet | Option::parent_facet)
        == Option::parent_cell_and_facet);
  CHECK((Option::parent_cell_and_facet | Option::parent_cell)
        == Option::parent_cell_and_facet);

  CHECK((Option::parent_cell | Option::none) == Option::parent_cell);
  CHECK((Option::parent_cell | Option::parent_facet)
        == Option::parent_cell_and_facet);
}