https://mooseframework.inl.gov
Capabilities.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "CapabilityRegistry.h"
13 
14 #include "nlohmann/json_fwd.h"
15 
16 #ifdef MOOSE_UNIT_TEST
17 // forward declare unit tests
18 #include "gtest/gtest.h"
19 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, augment);
20 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, augmentParseError);
21 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, check);
22 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, dump);
23 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, isInstallationType);
24 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppCheckCapabilities);
25 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppCheckRequiredCapabilities);
26 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppIsRelocated);
27 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppisInTree);
28 class GTEST_TEST_CLASS_NAME_(RegistryTest, addDataFilePath);
29 class GTEST_TEST_CLASS_NAME_(RegistryTest, addMissingDataFilePath);
30 class CapabilitiesTest;
31 class DataFileUtilsTest;
32 class RegistryTest;
33 #endif
34 
35 class AppFactory;
36 class Registry;
37 class MooseApp;
38 
39 namespace Moose::internal
40 {
41 
51 {
52 public:
55  {
56  friend AppFactory;
57  friend MooseApp;
58  friend Registry;
59 #ifdef MOOSE_UNIT_TEST
60  friend class ::CapabilitiesTest;
61  friend class ::DataFileUtilsTest;
62  friend class ::RegistryTest;
63  FRIEND_TEST(::CapabilitiesTest, augment);
64  FRIEND_TEST(::CapabilitiesTest, augmentParseError);
65  FRIEND_TEST(::CapabilitiesTest, check);
66  FRIEND_TEST(::CapabilitiesTest, dump);
67  FRIEND_TEST(::CapabilitiesTest, isInstallationType);
68  FRIEND_TEST(::CapabilitiesTest, mooseAppCheckCapabilities);
69  FRIEND_TEST(::CapabilitiesTest, mooseAppCheckRequiredCapabilities);
70  FRIEND_TEST(::RegistryTest, addDataFilePath);
71  FRIEND_TEST(::RegistryTest, addMissingDataFilePath);
72 #endif
75  };
76 
84  static Capabilities & getCapabilities(const GetCapabilitiesPassKey);
85 
87  std::string dump() const;
88 
91  {
92  friend MooseApp;
93 #ifdef MOOSE_UNIT_TEST
94  FRIEND_TEST(::CapabilitiesTest, augment);
95  FRIEND_TEST(::CapabilitiesTest, augmentParseError);
96 #endif
99  };
100 
108  void augment(const nlohmann::json & input, const AugmentPassKey);
109 
111  Capabilities(Capabilities const &) = delete;
112  Capabilities & operator=(Capabilities const &) = delete;
113 
114  Capabilities(Capabilities &&) = delete;
115  Capabilities & operator=(Capabilities &&) = delete;
117 
121  bool isRelocated() const { return isInstallationType("relocated"); }
122 
126  bool isInTree() const { return isInstallationType("in_tree"); }
127 
128 private:
129 #ifdef MOOSE_UNIT_TEST
130  friend class ::CapabilitiesTest;
131  friend class ::DataFileUtilsTest;
132  friend class ::RegistryTest;
133  FRIEND_TEST(::CapabilitiesTest, isInstallationType);
134  FRIEND_TEST(::CapabilitiesTest, mooseAppIsRelocated);
135  FRIEND_TEST(::CapabilitiesTest, mooseAppisInTree);
136 #endif
137 
141  bool isInstallationType(const std::string & installation_type) const;
142 
153 
154  // Private constructor for singleton pattern
155  Capabilities();
156 };
157 
158 } // namespace Moose::internal
class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, augment)
void registerMooseCapabilities()
Register the MOOSE capabilities.
Definition: Capabilities.C:127
static Capabilities & getCapabilities(const GetCapabilitiesPassKey)
Get the singleton Capabilities.
Definition: Capabilities.C:52
std::string dump() const
create a JSON dump of the capabilities registry
Definition: Capabilities.C:63
Base class for MOOSE-based applications.
Definition: MooseApp.h:108
void augment(const nlohmann::json &input, const AugmentPassKey)
Augment the capabilities with the given input capabilities.
Definition: Capabilities.C:80
GetCapabilitiesPassKey(const GetCapabilitiesPassKey &)
Definition: Capabilities.h:74
Holds the public (to MooseApp) facing CapabilityRegistry for storing and checking capabilities...
Definition: Capabilities.h:50
Generic AppFactory class for building Application objects.
Definition: AppFactory.h:54
CheckResult check(std::string requirements, const CapabilityRegistry::CheckOptions &options=CapabilityRegistry::CheckOptions()) const
Checks if a set of requirements is satisified by the capabilities.
FRIEND_TEST(::CapabilitiesTest, isInstallationType)
Registry of capabilities that checks capability requirements.
Capabilities & operator=(Capabilities const &)=delete
FRIEND_TEST(::CapabilitiesTest, augment)
The registry is used as a global singleton to collect information on all available MooseObject and Ac...
Definition: Registry.h:171
bool isInstallationType(const std::string &installation_type) const
Helper for isRelocated() and isInTree()
Definition: Capabilities.C:119