Scheduler
stateSpaceBuilderTest.cpp
Go to the documentation of this file.
1 
10 #include "stateSpaceTest.h"
11 
12 class StateSpaceBuilderTest : public ::testing::Test
13 {
14 public:
15  std::shared_ptr<Mdp::StateSpace> stateSpace{nullptr};
17  void SetUp() override;
18  void TearDown() override;
19 };
20 
22 {
23  dim1 = new Dimension;
24  dim2 = new Dimension;
25  dim3 = new Dimension;
26  prio1 = new Prio;
27  prio2 = new Prio;
28 }
29 
31 {
32  /*nothing to do*/
33 }
34 
36 {
37  builder->setDomainModel(std::make_shared<TestDomainModel>());
38 }
39 
40 TEST_F(StateSpaceBuilderTest, throwsIfNoStateAndNoDimension)
41 {
43  EXPECT_THROW(builder.getStateSpace(), std::runtime_error);
44 }
45 
47 {
48  builder->addDimension(dim);
49  builder->getStateSpace();
50 }
51 
52 TEST_F(StateSpaceBuilderTest, throwsIfDimensionHasZeroPositions)
53 {
55  dim1->nbOfPositions = 0;
56  EXPECT_THROW(addOneDimensionAndBuild(dim1, &builder), std::runtime_error);
57 }
58 
59 TEST_F(StateSpaceBuilderTest, throwsIfDomainModelNotSet)
60 {
61  dim1->nbOfPositions = 2;
62  EXPECT_THROW(addOneDimensionAndBuild(dim1, &builder), std::runtime_error);
63 }
64 
65 TEST_F(StateSpaceBuilderTest, stateSpaceHasRightNumberOfStates)
66 {
67  dim1->nbOfPositions = 2;
68  dim2->nbOfPositions = 3;
75  EXPECT_EQ(dim1->nbOfPositions * dim2->nbOfPositions + 2u, stateSpace->size());
76  EXPECT_EQ(8u, stateSpace->size());
77 }
78 
79 
80 
81 
82 
83 
84 
85 
void setDomainModel(std::shared_ptr< DomainModel > model)
sets the domain model used by the state space to determine current state
TEST_F(StateSpaceBuilderTest, throwsIfNoStateAndNoDimension)
Dimension * dim2
std::shared_ptr< StateSpace > getStateSpace()
call this function last!
Prio * prio2
void addDimension(StateSpaceDimension *dimension)
adds a dimension to the state space
size_t nbOfPositions
Mdp::StateSpaceBuilder builder
void setDomainModel(Mdp::StateSpaceBuilder *builder)
Prio * prio1
std::shared_ptr< Mdp::StateSpace > stateSpace
void addPriorityState(PriorityState *)
adds single states to the state space
Dimension * dim3
void addOneDimensionAndBuild(Mdp::StateSpaceDimension *dim, Mdp::StateSpaceBuilder *builder)
this models a dimension in the state space.
Dimension * dim1
builds a domain specific state space