Update FSFW #45

Merged
meierj merged 26 commits from mueller/master into eive/develop 2022-03-25 14:56:19 +01:00
3 changed files with 88 additions and 6 deletions
Showing only changes of commit 97bc71a3ff - Show all commits

View File

@ -1,7 +1,13 @@
#ifndef FSFW_SRC_FSFW_VERSION_H_ #ifndef FSFW_SRC_FSFW_VERSION_H_
#define FSFW_SRC_FSFW_VERSION_H_ #define FSFW_SRC_FSFW_VERSION_H_
#include "fsfw/FSFW.h"
#if FSFW_CPP_OSTREAM_ENABLED == 1
#include <iostream>
#endif
#include <cstdint> #include <cstdint>
#include <cstdio>
namespace fsfw { namespace fsfw {
@ -28,6 +34,28 @@ class Version {
friend bool operator<=(const Version& v1, const Version& v2) { return ((v1 == v2) or (v1 < v2)); } friend bool operator<=(const Version& v1, const Version& v2) { return ((v1 == v2) or (v1 < v2)); }
friend bool operator>=(const Version& v1, const Version& v2) { return ((v1 == v2) or (v1 > v2)); } friend bool operator>=(const Version& v1, const Version& v2) { return ((v1 == v2) or (v1 > v2)); }
#if FSFW_CPP_OSTREAM_ENABLED == 1
/**
* Print format to given ostream using format "major.minor.revision"
* @param os
* @param v
* @return
*/
friend std::ostream& operator<<(std::ostream& os, const Version& v) {
os << v.major << "." << v.minor << "." << v.revision;
return os;
}
#endif
/**
* Get version as format "major.minor.revision"
* @param str
* @param maxLen
*/
void getVersion(char* str, size_t maxLen) const {
snprintf(str, maxLen, "%d.%d.%d", major, minor, revision);
}
}; };
extern const fsfw::Version FSFW_VERSION; extern const fsfw::Version FSFW_VERSION;

View File

@ -2,14 +2,13 @@ target_sources(${FSFW_TEST_TGT} PRIVATE
CatchDefinitions.cpp CatchDefinitions.cpp
CatchFactory.cpp CatchFactory.cpp
printChar.cpp printChar.cpp
version.cpp
) )
# if(FSFW_CUSTOM_UNITTEST_RUNNER) target_sources(${FSFW_TEST_TGT} PRIVATE
target_sources(${FSFW_TEST_TGT} PRIVATE CatchRunner.cpp
CatchRunner.cpp CatchSetup.cpp
CatchSetup.cpp )
)
# endif()
add_subdirectory(testcfg) add_subdirectory(testcfg)
add_subdirectory(action) add_subdirectory(action)

View File

@ -0,0 +1,55 @@
#include "fsfw/version.h"
#include <catch2/catch_test_macros.hpp>
#include "fsfw/serviceinterface.h"
#include "fsfw_tests/unit/CatchDefinitions.h"
TEST_CASE("Version API Tests", "[TestVersionAPI]") {
// Check that major version is non-zero
REQUIRE(fsfw::FSFW_VERSION.major > 0);
uint32_t fsfwMajor = fsfw::FSFW_VERSION.major;
REQUIRE(fsfw::Version(255, 0, 0) > fsfw::FSFW_VERSION);
REQUIRE(fsfw::Version(255, 0, 0) >= fsfw::FSFW_VERSION);
REQUIRE(fsfw::Version(0, 0, 0) < fsfw::FSFW_VERSION);
REQUIRE(fsfw::Version(0, 0, 0) <= fsfw::FSFW_VERSION);
fsfw::Version v1 = fsfw::Version(1, 1, 1);
fsfw::Version v2 = fsfw::Version(1, 1, 1);
v1.revision -= 1;
REQUIRE(v1 != v2);
REQUIRE(v1 < v2);
REQUIRE(v1 <= v2);
v1.revision += 1;
v1.minor -= 1;
REQUIRE(v1 != v2);
REQUIRE(v1 < v2);
REQUIRE(v1 <= v2);
v1.minor += 1;
v1.major -= 1;
REQUIRE(v1 != v2);
REQUIRE(v1 < v2);
REQUIRE(v1 <= v2);
v1.major += 1;
REQUIRE(v1 == v2);
v1.major += 1;
REQUIRE(v1 != v2);
REQUIRE(v1 > v2);
REQUIRE(v1 >= v2);
v1.major -= 1;
v1.minor += 1;
REQUIRE(v1 != v2);
REQUIRE(v1 > v2);
REQUIRE(v1 >= v2);
v1.minor -= 1;
v1.revision += 1;
REQUIRE(v1 != v2);
REQUIRE(v1 > v2);
REQUIRE(v1 >= v2);
v1.revision -= 1;
REQUIRE(v1 == v2);
sif::info << "v" << fsfw::FSFW_VERSION << std::endl;
char verString[10] = {};
fsfw::FSFW_VERSION.getVersion(verString, sizeof(verString));
sif::info << "v" << verString << std::endl;
}