Commit 4fdf47d2 authored by Pavel Vainerman's avatar Pavel Vainerman

Добавил тесты для IOBase.

parent dc2325da
......@@ -26,10 +26,12 @@ static const int NoSafety = -1;
IOBase& operator=(IOBase&& r) = default;
IOBase():
stype(UniversalIO::UnknownIOType),
cdiagram(0),
breaklim(0),
value(0),
craw(0),
cprev(0),
safety(0),
defval(0),
df(1),
......@@ -48,7 +50,11 @@ static const int NoSafety = -1;
front_type(ftUnknown),
front_prev_state(false),
front_state(false)
{}
{
si.id = UniSetTypes::DefaultObjectId;
si.node = UniSetTypes::DefaultObjectId;
cal.minRaw = cal.maxRaw = cal.minCal = cal.maxCal = cal.precision = 0;
}
bool check_channel_break( long val ); /*!< проверка обрыва провода */
......
SUBDIR=SMemoryTest
check_PROGRAMS = tests tests_with_conf tests_with_sm
noinst_PROGRAMS = tests tests_with_conf tests_with_sm
tests_SOURCES = tests.cc digitalfilter.cc
tests_LDADD = $(top_builddir)/lib/libUniSet2.la $(top_builddir)/extensions/lib/libUniSet2Extensions.la
tests_CPPFLAGS = -I$(top_builddir)/include -I$(top_builddir)/extensions/include
tests_with_conf_SOURCES = tests_with_conf.cc calibration.cc
tests_with_conf_SOURCES = tests_with_conf.cc calibration.cc iobase.cc
tests_with_conf_LDADD = $(top_builddir)/lib/libUniSet2.la $(top_builddir)/extensions/lib/libUniSet2Extensions.la
tests_with_conf_CPPFLAGS = -I$(top_builddir)/include -I$(top_builddir)/extensions/include
......
#include <catch.hpp>
#include "Exceptions.h"
#include "Extensions.h"
#include "UniXML.h"
#include "IOBase.h"
using namespace std;
using namespace UniSetTypes;
using namespace UniSetExtensions;
TEST_CASE("IOBase","[IOBase class tests]")
{
CHECK( UniSetTypes::conf != 0 );
SECTION("Default constructor (const data)")
{
IOBase ib;
CHECK( ib.si.id == DefaultObjectId );
CHECK( ib.si.node == DefaultObjectId );
CHECK( ib.stype == UniversalIO::UnknownIOType );
CHECK( ib.cal.minRaw == 0 );
CHECK( ib.cal.maxRaw == 0 );
CHECK( ib.cal.minCal == 0 );
CHECK( ib.cal.maxCal == 0 );
CHECK( ib.cdiagram == 0 );
CHECK( ib.breaklim == 0 );
CHECK( ib.value == 0 );
CHECK( ib.craw == 0 );
CHECK( ib.cprev == 0 ); /*!< предыдущее значение после калибровки */
CHECK( ib.safety == 0 ); /*!< безопасное состояние при завершении процесса */
CHECK( ib.defval == 0 ); /*!< состояние по умолчанию (при запуске) */
CHECK( ib.nofilter == 0 ); /*!< отключение фильтра */
CHECK_FALSE( ib.f_median ); /*!< признак использования медианного фильтра */
CHECK_FALSE( ib.f_ls ); /*!< признак использования адаптивного фильтра по методу наименьших квадратов */
CHECK_FALSE( ib.f_filter_iir ); /*!< признак использования рекурсивного фильтра */
CHECK_FALSE( ib.ignore ); /*!< игнорировать при опросе */
CHECK_FALSE( ib.invert ); /*!< инвертированная логика */
CHECK_FALSE( ib.noprecision );
CHECK_FALSE( ib.debounce_pause );
CHECK_FALSE( ib.debounce_state ); /*!< значение для фильтра антидребезга */
CHECK_FALSE( ib.ondelay_state ); /*!< значение для задержки включения */
CHECK_FALSE( ib.offdelay_state ); /*!< значение для задержки отключения */
// Порог
REQUIRE( ib.t_ai == DefaultObjectId );
CHECK_FALSE( ib.front ); // флаг работы по фронту
REQUIRE( ib.front_type == IOBase::ftUnknown );
CHECK_FALSE( ib.front_prev_state );
CHECK_FALSE( ib.front_state );
}
SECTION("Init from xml")
{
xmlNode* cnode = conf->getNode("iobasetest");
CHECK( cnode != NULL );
UniXML::iterator it(cnode);
UInterface ui;
ObjectId shmID = conf->getControllerID("SharedMemory");
CHECK( shmID != DefaultObjectId );
SMInterface shm(shmID,&ui,DefaultObjectId);
IOBase ib;
IOBase::initItem(&ib,it,&shm,"",false);
CHECK( ib.si.id == 1 );
CHECK( ib.si.node == conf->getLocalNode() );
CHECK( ib.defval == -10 );
CHECK( ib.cal.precision == 3 );
CHECK( ib.cal.minRaw == -100 );
CHECK( ib.cal.maxRaw == 100 );
CHECK( ib.cal.minCal == 0 );
CHECK( ib.cal.maxCal == 50 );
}
SECTION("Debounce function")
{
}
SECTION("Delay function")
{
}
SECTION("Front function")
{
}
SECTION("'Channel break' function")
{
}
}
......@@ -30,6 +30,10 @@
<LockDir name=""/>
<testnode name="testnode" id2="-100"/>
<iobasetest id="1" name="TestInput1_S" textname="IOBase test 1" iotype="AI" default="-10" rmin="-100" rmax="100" cmin="0" cmax="50" precision="3" />
<iobasetest2 id="1" name="TestInput2_S" textname="IOBase test 2" iotype="AI" default="10" rmin="-100" rmax="100" cmin="0" cmax="50" precision="3" />
<Services>
<LocalTimeService name="TimeService" MaxCountTimers="100" AskLifeTimeSEC="10"/>
<LocalInfoServer name="InfoServer" dbrepeat="1">
......@@ -43,6 +47,8 @@
</UniSet>
<iobasetest name="iobasetest" />
<dlog name="dlog" levels="" file=""/>
<ObjectsMap idfromfile="1">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment