141 lines
5.0 KiB
C++
141 lines
5.0 KiB
C++
/*
|
||
* SdfmTest.hpp
|
||
*
|
||
* Created on: 27 авг. 2024 г.
|
||
* Author: sedov
|
||
*/
|
||
|
||
#ifndef SDFMTEST_HPP_
|
||
#define SDFMTEST_HPP_
|
||
|
||
|
||
#include "UnitTestInterface.hh"
|
||
namespace umlib { namespace tests {
|
||
template<class SdfmImplementation>
|
||
class SdfmTest : public UnitTestInterface {
|
||
typedef SdfmImplementation SdfmImpl;
|
||
public:
|
||
SdfmTest();
|
||
~SdfmTest();
|
||
void run(TestResult & test_result);
|
||
private:
|
||
void test_create( TestResult & test_result );
|
||
void teast_startClk( TestResult & test_result );
|
||
void teast_initGPIO( TestResult & test_result );
|
||
void teast_DataFilterInit(TestResult & test_result);
|
||
void teast_ComporatorFilterInit(TestResult & test_result);
|
||
void teast_ComporatorFilter(TestResult & test_result);
|
||
|
||
/* void test_create_volatile( TestResult & test_result );
|
||
void test_set_after_test_and_set( TestResult & test_result );
|
||
void test_set_after_test_and_set_volatile( TestResult & test_result );
|
||
void test_clear_after_create( TestResult & test_result );
|
||
void test_clear_after_create_volatile( TestResult & test_result );
|
||
void test_clear( TestResult & test_result );
|
||
void test_clear_volatile( TestResult & test_result );
|
||
|
||
void test_once_set( TestResult & test_result );
|
||
void test_once_set_volatile( TestResult & test_result );*/
|
||
|
||
struct SdfmTrySet : public TaskInterface {
|
||
SdfmImpl flag;
|
||
volatile bool on_task = false;
|
||
volatile bool on_main = false;
|
||
|
||
void reset() {
|
||
|
||
on_task = false;
|
||
on_main = false;
|
||
|
||
flag.clear();
|
||
|
||
}
|
||
|
||
void do_task() {
|
||
|
||
on_task = not flag.test_and_set();
|
||
|
||
}
|
||
|
||
void do_main() {
|
||
|
||
on_main = not flag.test_and_set();
|
||
|
||
}
|
||
|
||
bool fault() {
|
||
|
||
return (on_task and on_main) or
|
||
(not on_task and not on_main);
|
||
|
||
}
|
||
|
||
};
|
||
};
|
||
|
||
|
||
|
||
|
||
template<class SdfmImplementation>
|
||
inline umlib::tests::SdfmTest<SdfmImplementation>::SdfmTest() {}
|
||
|
||
template<class SdfmImplementation>
|
||
inline umlib::tests::SdfmTest<SdfmImplementation>::~SdfmTest() {}
|
||
|
||
template<class SdfmImplementation>
|
||
inline void umlib::tests::SdfmTest<SdfmImplementation>::run( TestResult & test_result ) {
|
||
test_create( test_result );
|
||
teast_startClk(test_result);
|
||
teast_initGPIO(test_result);
|
||
teast_DataFilterInit(test_result );
|
||
teast_ComporatorFilterInit(test_result);
|
||
teast_ComporatorFilter(test_result);
|
||
}
|
||
template<class SdfmImplementation>
|
||
inline void umlib::tests::SdfmTest<SdfmImplementation>::test_create( TestResult & test_result ) {
|
||
SdfmImpl flag;
|
||
//Проверили факт запуска теперь нужно проверить что sdfm запускается
|
||
test_result.assert_true( flag.teast_SDFM_create(), "teast_SDFM should return true");
|
||
|
||
}
|
||
template<class SdfmImplementation>
|
||
inline void umlib::tests::SdfmTest<SdfmImplementation>::teast_startClk(TestResult & test_result ) {
|
||
SdfmImpl flag;
|
||
//Проверили факт запуска теперь нужно проверить что sdfm запускается
|
||
test_result.assert_true( flag.teast_SDFM_startClk(), "teast_init_clk should return true");
|
||
|
||
}
|
||
template<class SdfmImplementation>
|
||
inline void umlib::tests::SdfmTest<SdfmImplementation>::teast_initGPIO(TestResult & test_result ) {
|
||
SdfmImpl flag;
|
||
//Проверили факт запуска теперь нужно проверить что sdfm запускается
|
||
test_result.assert_true( flag.teast_SDFM_initGPIO(), "teast_init_GPIO should return true");
|
||
|
||
}
|
||
template<class SdfmImplementation>
|
||
inline void umlib::tests::SdfmTest<SdfmImplementation>::teast_DataFilterInit(TestResult & test_result ) {
|
||
SdfmImpl flag;
|
||
//Проверили факт запуска теперь нужно проверить что sdfm запускается
|
||
test_result.assert_true( flag.teast_SDFM_DataFilterInit(), "teast_init_DATA_FILTER should return true");
|
||
|
||
}
|
||
template<class SdfmImplementation>
|
||
inline void umlib::tests::SdfmTest<SdfmImplementation>::teast_ComporatorFilterInit(TestResult & test_result ) {
|
||
SdfmImpl flag;
|
||
//Проверили факт запуска теперь нужно проверить что sdfm запускается
|
||
test_result.assert_true( flag.teast_SDFM_ComporatorFilterInit(), "teast_init_Comporator_FILTER should return true");
|
||
|
||
}
|
||
template<class SdfmImplementation>
|
||
inline void umlib::tests::SdfmTest<SdfmImplementation>::teast_ComporatorFilter(TestResult & test_result ) {
|
||
SdfmImpl flag;
|
||
//Проверили факт запуска теперь нужно проверить что sdfm запускается
|
||
test_result.assert_true( flag.teast_SDFM_ComporatorFilter(), "teast_Comporator_FILTER should return true");
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
#endif /* SDFMTEST_HPP_ */
|