SDFM_CONROL_TEAST_EFC/EFC_PlatformC28xTest/SdfmTest.hpp
2024-10-11 09:35:38 +03:00

141 lines
5.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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_ */