https://mooseframework.inl.gov
Loading...
Searching...
No Matches
MooseObjectUnitTest.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 "gtest/gtest.h"
13
14#include "MooseMesh.h"
15#include "FEProblem.h"
16#include "AppFactory.h"
17#include "MooseMain.h"
18
69class MooseObjectUnitTest : public ::testing::Test
70{
71public:
75 MooseObjectUnitTest(const std::string & app_name)
76 : _app(Moose::createMooseApp(app_name, 0, nullptr)), _factory(_app->getFactory())
77 {
79 }
80
81protected:
83 {
84 InputParameters mesh_params = _factory.getValidParams("GeneratedMesh");
85 mesh_params.set<MooseEnum>("dim") = "3";
86 mesh_params.set<unsigned int>("nx") = 2;
87 mesh_params.set<unsigned int>("ny") = 2;
88 mesh_params.set<unsigned int>("nz") = 2;
89 _mesh = _factory.createUnique<MooseMesh>("GeneratedMesh", "name1", mesh_params);
90 _mesh->setMeshBase(_mesh->buildMeshBaseObject());
91 _mesh->buildMesh();
92
93 InputParameters problem_params = _factory.getValidParams("FEProblem");
94 problem_params.set<MooseMesh *>("mesh") = _mesh.get();
95 problem_params.set<std::string>(MooseBase::name_param) = "name2";
96 _fe_problem = _factory.create<FEProblem>("FEProblem", "problem", problem_params);
97
99
100 _app->actionWarehouse().problemBase() = _fe_problem;
101 }
102
103 template <typename T>
104 T & addObject(const std::string & type, const std::string & name, InputParameters & params);
105
106 std::unique_ptr<MooseMesh> _mesh;
107 std::shared_ptr<MooseApp> _app;
109 std::shared_ptr<FEProblem> _fe_problem;
110};
111
112template <typename T>
113T &
114MooseObjectUnitTest::addObject(const std::string & type,
115 const std::string & name,
116 InputParameters & params)
117{
118 auto objects = _fe_problem->addObject<T>(type, name, params);
119 mooseAssert(objects.size() == 1, "Doesn't work with threading");
120 return *objects[0];
121}
virtual void createQRules(libMesh::QuadratureType type, libMesh::Order order, libMesh::Order volume_order=libMesh::INVALID_ORDER, libMesh::Order face_order=libMesh::INVALID_ORDER, SubdomainID block=Moose::ANY_BLOCK_ID, bool allow_negative_qweights=true)
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Definition FEProblem.h:21
Generic factory class for build all sorts of objects.
Definition Factory.h:29
std::shared_ptr< MooseObject > create(const std::string &obj_name, const std::string &name, const InputParameters &parameters, THREAD_ID tid=0, bool print_deprecated=true)
Definition Factory.C:142
InputParameters getValidParams(const std::string &name) const
Get valid parameters for the object.
Definition Factory.C:68
std::unique_ptr< MooseObject > createUnique(const std::string &obj_name, const std::string &name, const InputParameters &parameters, THREAD_ID tid=0, bool print_deprecated=true)
Build an object (must be registered) - THIS METHOD IS DEPRECATED (Use create<T>())
Definition Factory.C:128
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
static const std::string name_param
The name of the parameter that contains the object name.
Definition MooseBase.h:55
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition MooseEnum.h:55
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition MooseMesh.h:95
void setMeshBase(std::unique_ptr< MeshBase > mesh_base)
Method to set the mesh_base object.
Definition MooseMesh.C:2922
Base class for building basic unit tests for MOOSE objects that can live alone (like user objects,...
std::shared_ptr< MooseApp > _app
std::shared_ptr< FEProblem > _fe_problem
T & addObject(const std::string &type, const std::string &name, InputParameters &params)
MooseObjectUnitTest(const std::string &app_name)
std::unique_ptr< MooseMesh > _mesh
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...