Ocean
Loading...
Searching...
No Matches
TestData.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_TEST_TEST_DATA_H
9#define META_OCEAN_TEST_TEST_DATA_H
10
11#include "ocean/test/Test.h"
12
13#include "ocean/base/Frame.h"
14#include "ocean/base/Value.h"
15
16namespace Ocean
17{
18
19namespace Test
20{
21
22// Forward declaration.
23class TestData;
24
25/**
26 * Definition of a shared pointer holding a TestData object.
27 * @ingroup test
28 */
29using SharedTestData = std::shared_ptr<TestData>;
30
31/**
32 * This class holds the test data necessary for one test iteration combining input data and potential expected test results.
33 * @ingroup test
34 */
35class OCEAN_TEST_EXPORT TestData
36{
37 public:
38
39 /**
40 * Definition of individual data types.
41 */
42 enum DataType : uint32_t
43 {
44 /// Invalid data type
45 DT_INVALID = 0u,
46 /// The data is a value.
48 /// The data is an image.
49 DT_IMAGE
50 };
51
52 public:
53
54 /**
55 * Default constructor.
56 */
57 TestData() = default;
58
59 /**
60 * Creates a new test data object holding a value.
61 * @param value The value of the new object, must be valid
62 * @param expectation The optional test expectation for the new object
63 */
64 explicit TestData(Value&& value, Value&& expectation = Value());
65
66 /**
67 * Creates a new test data object holding an image.
68 * @param image The image of the new object, must be valid
69 * @param expectation The optional test expectation for the new object
70 */
71 explicit TestData(Frame&& image, Value&& expectation);
72
73 /**
74 * Returns the data type of this test data object.
75 * @return The object's data type
76 */
77 inline DataType dataType() const;
78
79 /**
80 * Returns the value of this object.
81 * Ensure that `dataType() == DT_VALUE` before calling this function.
82 * @return The object's value
83 */
84 inline const Value& value() const;
85
86 /**
87 * Returns the image of this object.
88 * Ensure that `dataType() == DT_IMAGE` before calling this function.
89 * @return The object's image
90 */
91 inline const Frame& image() const;
92
93 /**
94 * Returns the potential expectation of this test object.
95 * @return The object's expectation, invalid if no expectation is defined
96 */
97 inline const Value& expectation() const;
98
99 /**
100 * Returns whether this object is valid and holds valid test data.
101 * @return True, if so
102 */
103 inline bool isValid() const;
104
105 /**
106 * Returns whether this object is valid and holds valid test data.
107 * @return True, if so
108 */
109 inline explicit operator bool() const;
110
111 protected:
112
113 /// The data type of this test object.
114 DataType dataType_ = DT_INVALID;
115
116 /// The object's value, invalid if not defined.
118
119 //// The object's image, invalid if not defined.
121
122 /// The object's expectation, invalid if not defined.
124};
125
127{
128 return dataType_;
129}
130
131inline const Value& TestData::value() const
132{
133 ocean_assert(dataType_ == DT_VALUE);
134
135 return value_;
136}
137
138inline const Frame& TestData::image() const
139{
140 ocean_assert(dataType_ == DT_IMAGE);
141
142 return image_;
143}
144
145inline const Value& TestData::expectation() const
146{
147 ocean_assert(dataType_ != DT_INVALID);
148
149 return expectation_;
150}
151
152inline bool TestData::isValid() const
153{
154 return dataType_ != DT_INVALID;
155}
156
157inline TestData::operator bool() const
158{
159 return isValid();
160}
161
162}
163
164}
165
166#endif // META_OCEAN_TEST_TEST_DATA_H
This class implements Ocean's image class.
Definition Frame.h:1808
This class holds the test data necessary for one test iteration combining input data and potential ex...
Definition TestData.h:36
const Value & expectation() const
Returns the potential expectation of this test object.
Definition TestData.h:145
Value value_
The object's value, invalid if not defined.
Definition TestData.h:117
bool isValid() const
Returns whether this object is valid and holds valid test data.
Definition TestData.h:152
TestData(Value &&value, Value &&expectation=Value())
Creates a new test data object holding a value.
TestData()=default
Default constructor.
const Value & value() const
Returns the value of this object.
Definition TestData.h:131
Frame image_
Definition TestData.h:120
DataType
Definition of individual data types.
Definition TestData.h:43
@ DT_INVALID
Invalid data type.
Definition TestData.h:45
@ DT_VALUE
The data is a value.
Definition TestData.h:47
@ DT_IMAGE
The data is an image.
Definition TestData.h:49
DataType dataType_
The data type of this test object.
Definition TestData.h:114
Value expectation_
The object's expectation, invalid if not defined.
Definition TestData.h:123
DataType dataType() const
Returns the data type of this test data object.
Definition TestData.h:126
TestData(Frame &&image, Value &&expectation)
Creates a new test data object holding an image.
const Frame & image() const
Returns the image of this object.
Definition TestData.h:138
This class implements a type independent value.
Definition Value.h:23
std::shared_ptr< TestData > SharedTestData
Definition of a shared pointer holding a TestData object.
Definition TestData.h:29
The namespace covering the entire Ocean framework.
Definition Accessor.h:15