https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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"
19class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, augment);
20class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, augmentParseError);
21class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, check);
22class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, dump);
23class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, isInstallationType);
24class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppCheckCapabilities);
25class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppCheckRequiredCapabilities);
26class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppIsRelocated);
27class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppisInTree);
28class GTEST_TEST_CLASS_NAME_(RegistryTest, addDataFilePath);
29class GTEST_TEST_CLASS_NAME_(RegistryTest, addMissingDataFilePath);
30class CapabilitiesTest;
31class DataFileUtilsTest;
32class RegistryTest;
33#endif
34
35class AppFactory;
36class Registry;
37class MooseApp;
38
40{
41
51{
52public:
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;
64 FRIEND_TEST(::CapabilitiesTest, augmentParseError);
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
95 FRIEND_TEST(::CapabilitiesTest, augmentParseError);
96#endif
99 };
100
108 void augment(const nlohmann::json & input, const AugmentPassKey);
109
111 Capabilities(Capabilities const &) = delete;
113
117
121 bool isRelocated() const { return isInstallationType("relocated"); }
122
126 bool isInTree() const { return isInstallationType("in_tree"); }
127
128private:
129#ifdef MOOSE_UNIT_TEST
130 friend class ::CapabilitiesTest;
131 friend class ::DataFileUtilsTest;
132 friend class ::RegistryTest;
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)
Generic AppFactory class for building Application objects.
Definition AppFactory.h:55
Base class for MOOSE-based applications.
Definition MooseApp.h:110
FRIEND_TEST(::CapabilitiesTest, augmentParseError)
FRIEND_TEST(::CapabilitiesTest, augment)
FRIEND_TEST(::CapabilitiesTest, augmentParseError)
GetCapabilitiesPassKey(const GetCapabilitiesPassKey &)
FRIEND_TEST(::RegistryTest, addDataFilePath)
FRIEND_TEST(::RegistryTest, addMissingDataFilePath)
FRIEND_TEST(::CapabilitiesTest, mooseAppCheckRequiredCapabilities)
FRIEND_TEST(::CapabilitiesTest, mooseAppCheckCapabilities)
FRIEND_TEST(::CapabilitiesTest, isInstallationType)
Holds the public (to MooseApp) facing CapabilityRegistry for storing and checking capabilities.
FRIEND_TEST(::CapabilitiesTest, mooseAppIsRelocated)
static Capabilities & getCapabilities(const GetCapabilitiesPassKey)
Get the singleton Capabilities.
Capabilities(Capabilities const &)=delete
Don't allow creation through copy/move construction or assignment.
Capabilities & operator=(Capabilities const &)=delete
FRIEND_TEST(::CapabilitiesTest, isInstallationType)
std::string dump() const
create a JSON dump of the capabilities registry
Capabilities & operator=(Capabilities &&)=delete
void registerMooseCapabilities()
Register the MOOSE capabilities.
Capabilities(Capabilities &&)=delete
void augment(const nlohmann::json &input, const AugmentPassKey)
Augment the capabilities with the given input capabilities.
FRIEND_TEST(::CapabilitiesTest, mooseAppisInTree)
bool isInstallationType(const std::string &installation_type) const
Helper for isRelocated() and isInTree()
Registry of capabilities that checks capability requirements.
CheckResult check(std::string requirements, const CapabilityRegistry::CheckOptions &options=CapabilityRegistry::CheckOptions()) const
Checks if a set of requirements is satisified by the capabilities.
The registry is used as a global singleton to collect information on all available MooseObject and Ac...
Definition Registry.h:179