F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Models.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title Os/Models/Models.cpp
3 // \brief test used to validate Os/Models before use
4 // ======================================================================
6 #include "Os/Directory.hpp"
7 #include "Os/File.hpp"
8 #include "Os/FileSystem.hpp"
21 #include "Os/Mutex.hpp"
22 #include "Os/Os.hpp"
23 #include "Os/Queue.hpp"
24 #include "Os/RawTime.hpp"
25 #include "Os/Task.hpp"
26 
27 // Check consistency of every constant in the Os::File::Status enum
28 static_assert(static_cast<FwIndexType>(Os::File::Status::MAX_STATUS) ==
29  static_cast<FwIndexType>(Os::FileStatus::NUM_CONSTANTS),
30  "File status and FPP shadow enum have inconsistent number of values");
31 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::OP_OK) == Os::FileStatus::T::OP_OK,
32  "File status and FPP shadow enum do not match");
33 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::DOESNT_EXIST) == Os::FileStatus::T::DOESNT_EXIST,
34  "File status and FPP shadow enum do not match");
35 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::NO_SPACE) == Os::FileStatus::T::NO_SPACE,
36  "File status and FPP shadow enum do not match");
37 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::NO_PERMISSION) == Os::FileStatus::T::NO_PERMISSION,
38  "File status and FPP shadow enum do not match");
39 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::BAD_SIZE) == Os::FileStatus::T::BAD_SIZE,
40  "File status and FPP shadow enum do not match");
41 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::NOT_OPENED) == Os::FileStatus::T::NOT_OPENED,
42  "File status and FPP shadow enum do not match");
43 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::FILE_EXISTS) == Os::FileStatus::T::FILE_EXISTS,
44  "File status and FPP shadow enum do not match");
45 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::NOT_SUPPORTED) == Os::FileStatus::T::NOT_SUPPORTED,
46  "File status and FPP shadow enum do not match");
47 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::INVALID_MODE) == Os::FileStatus::T::INVALID_MODE,
48  "File status and FPP shadow enum do not match");
49 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::INVALID_ARGUMENT) == Os::FileStatus::T::INVALID_ARGUMENT,
50  "File status and FPP shadow enum do not match");
51 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::NO_MORE_RESOURCES) ==
52  Os::FileStatus::T::NO_MORE_RESOURCES,
53  "File status and FPP shadow enum do not match");
54 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::OTHER_ERROR) == Os::FileStatus::T::OTHER_ERROR,
55  "File status and FPP shadow enum do not match");
56 static_assert(static_cast<Os::FileStatus::T>(Os::File::Status::OUTSIDE_SANDBOX) == Os::FileStatus::T::OUTSIDE_SANDBOX,
57  "File status and FPP shadow enum do not match");
58 
59 // Check consistency of every constant in the Os::File::Mode enum
60 static_assert(static_cast<FwIndexType>(Os::File::Mode::MAX_OPEN_MODE) ==
61  static_cast<FwIndexType>(Os::FileMode::NUM_CONSTANTS),
62  "File mode and FPP shadow enum have inconsistent number of values");
63 static_assert(static_cast<Os::FileMode::T>(Os::File::Mode::OPEN_NO_MODE) == Os::FileMode::T::OPEN_NO_MODE,
64  "File mode and FPP shadow enum do not match");
65 static_assert(static_cast<Os::FileMode::T>(Os::File::Mode::OPEN_READ) == Os::FileMode::T::OPEN_READ,
66  "File mode and FPP shadow enum do not match");
67 static_assert(static_cast<Os::FileMode::T>(Os::File::Mode::OPEN_CREATE) == Os::FileMode::T::OPEN_CREATE,
68  "File mode and FPP shadow enum do not match");
69 static_assert(static_cast<Os::FileMode::T>(Os::File::Mode::OPEN_WRITE) == Os::FileMode::T::OPEN_WRITE,
70  "File mode and FPP shadow enum do not match");
71 static_assert(static_cast<Os::FileMode::T>(Os::File::Mode::OPEN_SYNC_WRITE) == Os::FileMode::T::OPEN_SYNC_WRITE,
72  "File mode and FPP shadow enum do not match");
73 static_assert(static_cast<Os::FileMode::T>(Os::File::Mode::OPEN_APPEND) == Os::FileMode::T::OPEN_APPEND,
74  "File mode and FPP shadow enum do not Mode");
75 
76 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::OP_OK) == Os::TaskStatus::T::OP_OK,
77  "Task status and FPP shadow enum do not match");
78 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::INVALID_HANDLE) == Os::TaskStatus::T::INVALID_HANDLE,
79  "Task status and FPP shadow enum do not match");
80 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::INVALID_PARAMS) == Os::TaskStatus::T::INVALID_PARAMS,
81  "Task status and FPP shadow enum do not match");
82 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::INVALID_PRIORITY) == Os::TaskStatus::T::INVALID_PRIORITY,
83  "Task status and FPP shadow enum do not match");
84 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::INVALID_STACK) == Os::TaskStatus::T::INVALID_STACK,
85  "Task status and FPP shadow enum do not match");
86 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::UNKNOWN_ERROR) == Os::TaskStatus::T::UNKNOWN_ERROR,
87  "Task status and FPP shadow enum do not match");
88 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::INVALID_AFFINITY) == Os::TaskStatus::T::INVALID_AFFINITY,
89  "Task status and FPP shadow enum do not match");
90 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::DELAY_ERROR) == Os::TaskStatus::T::DELAY_ERROR,
91  "Task status and FPP shadow enum do not match");
92 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::JOIN_ERROR) == Os::TaskStatus::T::JOIN_ERROR,
93  "Task status and FPP shadow enum do not match");
94 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::ERROR_RESOURCES) == Os::TaskStatus::T::ERROR_RESOURCES,
95  "Task status and FPP shadow enum do not match");
96 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::ERROR_PERMISSION) == Os::TaskStatus::T::ERROR_PERMISSION,
97  "Task status and FPP shadow enum do not match");
98 static_assert(static_cast<Os::TaskStatus::T>(Os::Task::Status::INVALID_STATE) == Os::TaskStatus::T::INVALID_STATE,
99  "Task status and FPP shadow enum do not match");
100 
101 static_assert(static_cast<Os::MutexStatus::T>(Os::Mutex::Status::OP_OK) == Os::MutexStatus::T::OP_OK,
102  "Mutex status and FPP shadow enum do not match");
103 static_assert(static_cast<Os::MutexStatus::T>(Os::Mutex::Status::ERROR_BUSY) == Os::MutexStatus::T::ERROR_BUSY,
104  "Mutex status and FPP shadow enum do not match");
105 static_assert(static_cast<Os::MutexStatus::T>(Os::Mutex::Status::ERROR_DEADLOCK) == Os::MutexStatus::T::ERROR_DEADLOCK,
106  "Mutex status and FPP shadow enum do not match");
107 static_assert(static_cast<Os::MutexStatus::T>(Os::Mutex::Status::ERROR_OTHER) == Os::MutexStatus::T::ERROR_OTHER,
108  "Mutex status and FPP shadow enum do not match");
109 
110 // Check consistency of every constant in the Os::Directory::Status enum
111 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::OP_OK) == Os::DirectoryStatus::T::OP_OK,
112  "Directory status and FPP shadow enum do not match");
113 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::DOESNT_EXIST) ==
114  Os::DirectoryStatus::T::DOESNT_EXIST,
115  "Directory status and FPP shadow enum do not match");
116 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::NO_PERMISSION) ==
117  Os::DirectoryStatus::T::NO_PERMISSION,
118  "Directory status and FPP shadow enum do not match");
119 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::NOT_OPENED) ==
120  Os::DirectoryStatus::T::NOT_OPENED,
121  "Directory status and FPP shadow enum do not match");
122 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::NOT_DIR) == Os::DirectoryStatus::T::NOT_DIR,
123  "Directory status and FPP shadow enum do not match");
124 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::NO_MORE_FILES) ==
125  Os::DirectoryStatus::T::NO_MORE_FILES,
126  "Directory status and FPP shadow enum do not match");
127 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::FILE_LIMIT) ==
128  Os::DirectoryStatus::T::FILE_LIMIT,
129  "Directory status and FPP shadow enum do not match");
130 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::BAD_DESCRIPTOR) ==
131  Os::DirectoryStatus::T::BAD_DESCRIPTOR,
132  "Directory status and FPP shadow enum do not match");
133 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::ALREADY_EXISTS) ==
134  Os::DirectoryStatus::T::ALREADY_EXISTS,
135  "Directory status and FPP shadow enum do not match");
136 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::NOT_SUPPORTED) ==
137  Os::DirectoryStatus::T::NOT_SUPPORTED,
138  "Directory status and FPP shadow enum do not match");
139 static_assert(static_cast<Os::DirectoryStatus::T>(Os::Directory::Status::OTHER_ERROR) ==
141  "Directory status and FPP shadow enum do not match");
142 
143 // Check consistency of every constant in the Os::Directory::Mode enum
144 static_assert(static_cast<FwIndexType>(Os::Directory::OpenMode::MAX_OPEN_MODE) ==
145  static_cast<FwIndexType>(Os::DirectoryOpenMode::NUM_CONSTANTS),
146  "File mode and FPP shadow enum have inconsistent number of values");
147 static_assert(static_cast<Os::DirectoryOpenMode::T>(Os::Directory::OpenMode::READ) == Os::DirectoryOpenMode::T::READ,
148  "Directory mode and FPP shadow enum do not match");
149 static_assert(static_cast<Os::DirectoryOpenMode::T>(Os::Directory::OpenMode::CREATE_IF_MISSING) ==
150  Os::DirectoryOpenMode::T::CREATE_IF_MISSING,
151  "Directory mode and FPP shadow enum do not match");
152 static_assert(static_cast<Os::DirectoryOpenMode::T>(Os::Directory::OpenMode::CREATE_EXCLUSIVE) ==
153  Os::DirectoryOpenMode::T::CREATE_EXCLUSIVE,
154  "Directory mode and FPP shadow enum do not match");
155 
156 // Check consistency of every constant in the Os::FileSystem::Status enum
157 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::OP_OK) == Os::FileSystemStatus::T::OP_OK,
158  "FileSystem status and FPP shadow enum do not match");
159 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::ALREADY_EXISTS) ==
160  Os::FileSystemStatus::T::ALREADY_EXISTS,
161  "FileSystem status and FPP shadow enum do not match");
162 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::NO_SPACE) ==
164  "FileSystem status and FPP shadow enum do not match");
165 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::NO_PERMISSION) ==
166  Os::FileSystemStatus::T::NO_PERMISSION,
167  "FileSystem status and FPP shadow enum do not match");
168 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::NOT_DIR) == Os::FileSystemStatus::T::NOT_DIR,
169  "FileSystem status and FPP shadow enum do not match");
170 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::IS_DIR) == Os::FileSystemStatus::T::IS_DIR,
171  "FileSystem status and FPP shadow enum do not match");
172 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::NOT_EMPTY) ==
173  Os::FileSystemStatus::T::NOT_EMPTY,
174  "FileSystem status and FPP shadow enum do not match");
175 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::INVALID_PATH) ==
177  "FileSystem status and FPP shadow enum do not match");
178 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::DOESNT_EXIST) ==
179  Os::FileSystemStatus::T::DOESNT_EXIST,
180  "FileSystem status and FPP shadow enum do not match");
181 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::FILE_LIMIT) ==
182  Os::FileSystemStatus::T::FILE_LIMIT,
183  "FileSystem status and FPP shadow enum do not match");
184 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::BUSY) == Os::FileSystemStatus::T::BUSY,
185  "FileSystem status and FPP shadow enum do not match");
186 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::NO_MORE_FILES) ==
187  Os::FileSystemStatus::T::NO_MORE_FILES,
188  "FileSystem status and FPP shadow enum do not match");
189 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::BUFFER_TOO_SMALL) ==
190  Os::FileSystemStatus::T::BUFFER_TOO_SMALL,
191  "FileSystem status and FPP shadow enum do not match");
192 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::EXDEV_ERROR) ==
193  Os::FileSystemStatus::T::EXDEV_ERROR,
194  "FileSystem status and FPP shadow enum do not match");
195 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::OVERFLOW_ERROR) ==
196  Os::FileSystemStatus::T::OVERFLOW_ERROR,
197  "FileSystem status and FPP shadow enum do not match");
198 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::NOT_SUPPORTED) ==
199  Os::FileSystemStatus::T::NOT_SUPPORTED,
200  "FileSystem status and FPP shadow enum do not match");
201 static_assert(static_cast<Os::FileSystemStatus::T>(Os::FileSystem::Status::OTHER_ERROR) ==
203  "FileSystem status and FPP shadow enum do not match");
204 
205 // Check consistency of every constant in the Os::RawTime::Status enum
206 static_assert(static_cast<Os::RawTimeStatus::T>(Os::RawTime::Status::OP_OK) == Os::RawTimeStatus::T::OP_OK,
207  "RawTime status enums do not match");
208 static_assert(static_cast<Os::RawTimeStatus::T>(Os::RawTime::Status::OP_OVERFLOW) == Os::RawTimeStatus::T::OP_OVERFLOW,
209  "RawTime status enums do not match");
210 static_assert(static_cast<Os::RawTimeStatus::T>(Os::RawTime::Status::INVALID_PARAMS) ==
211  Os::RawTimeStatus::T::INVALID_PARAMS,
212  "RawTime status enums do not match");
213 static_assert(static_cast<Os::RawTimeStatus::T>(Os::RawTime::Status::OTHER_ERROR) == Os::RawTimeStatus::T::OTHER_ERROR,
214  "Generic status enums do not match");
215 
216 // Check consistency of every constant in the Os::Queue::Status enum
217 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::OP_OK) == Os::QueueStatus::T::OP_OK,
218  "Queue status enums do not match");
219 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::ALREADY_CREATED) ==
220  Os::QueueStatus::T::ALREADY_CREATED,
221  "Queue status enums do not match");
222 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::EMPTY) == Os::QueueStatus::T::EMPTY,
223  "Queue status enums do not match");
224 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::UNINITIALIZED) == Os::QueueStatus::T::UNINITIALIZED,
225  "Queue status enums do not match");
226 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::SIZE_MISMATCH) == Os::QueueStatus::T::SIZE_MISMATCH,
227  "Queue status enums do not match");
228 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::SEND_ERROR) == Os::QueueStatus::T::SEND_ERROR,
229  "Queue status enums do not match");
230 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::RECEIVE_ERROR) == Os::QueueStatus::T::RECEIVE_ERROR,
231  "Queue status enums do not match");
232 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::INVALID_PRIORITY) ==
233  Os::QueueStatus::T::INVALID_PRIORITY,
234  "Queue status enums do not match");
235 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::FULL) == Os::QueueStatus::T::FULL,
236  "Queue status enums do not match");
237 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::UNKNOWN_ERROR) == Os::QueueStatus::T::UNKNOWN_ERROR,
238  "Queue status enums do not match");
239 static_assert(static_cast<Os::QueueStatus::T>(Os::Queue::Status::ALLOCATION_FAILED) ==
240  Os::QueueStatus::T::ALLOCATION_FAILED,
241  "Queue status enums do not match");
242 
243 // Check consistency of every constant in the Os::Queue::BlockingType enum
244 static_assert(static_cast<Os::QueueBlockingType::T>(Os::Queue::BlockingType::BLOCKING) ==
245  Os::QueueBlockingType::T::BLOCKING,
246  "Queue BlockingType enums do not match");
247 static_assert(static_cast<Os::QueueBlockingType::T>(Os::Queue::BlockingType::NONBLOCKING) ==
248  Os::QueueBlockingType::T::NONBLOCKING,
249  "Queue BlockingType enums do not match");
250 
251 // Check Generic mappings
252 static_assert(static_cast<Os::GenericStatus::T>(Os::Generic::Status::OP_OK) == Os::GenericStatus::T::OP_OK,
253  "Generic status enums do not match");
254 static_assert(static_cast<Os::GenericStatus::T>(Os::Generic::Status::ERROR) == Os::GenericStatus::T::ERROR,
255  "Generic status enums do not match");
256 
257 // Check consistency of every constant in the Os::CountingSemaphore::Status enum
258 static_assert(static_cast<Os::CountingSemaphoreStatus::T>(Os::CountingSemaphore::Status::OP_OK) ==
260  "CountingSemaphore status enums do not match");
261 static_assert(static_cast<Os::CountingSemaphoreStatus::T>(Os::CountingSemaphore::Status::ERROR_TIMEOUT) ==
262  Os::CountingSemaphoreStatus::T::ERROR_TIMEOUT,
263  "CountingSemaphore status enums do not match");
264 static_assert(static_cast<Os::CountingSemaphoreStatus::T>(Os::CountingSemaphore::Status::ERROR_INVALID) ==
265  Os::CountingSemaphoreStatus::T::ERROR_INVALID,
266  "CountingSemaphore status enums do not match");
267 static_assert(static_cast<Os::CountingSemaphoreStatus::T>(Os::CountingSemaphore::Status::ERROR_NOT_IMPLEMENTED) ==
268  Os::CountingSemaphoreStatus::T::ERROR_NOT_IMPLEMENTED,
269  "CountingSemaphore status enums do not match");
270 static_assert(static_cast<Os::CountingSemaphoreStatus::T>(Os::CountingSemaphore::Status::NOT_SUPPORTED) ==
271  Os::CountingSemaphoreStatus::T::NOT_SUPPORTED,
272  "CountingSemaphore status enums do not match");
273 static_assert(static_cast<Os::CountingSemaphoreStatus::T>(Os::CountingSemaphore::Status::ERROR_OTHER) ==
274  Os::CountingSemaphoreStatus::T::ERROR_OTHER,
275  "CountingSemaphore status enums do not match");
The number of enumerated constants.
Resolved path falls outside the allowed directory.
Operation succeeded.
Definition: Os.hpp:27
A catch-all for other errors. Have to look in implementation-specific code.
Operation failed.
Definition: Os.hpp:28
Path is malformed or cannot be resolved.
No space left on the device for writing.
The number of enumerated constants.
The number of enumerated constants.