74 lines
1.7 KiB
C++
74 lines
1.7 KiB
C++
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
|
|
#include <doctest/doctest.h>
|
|
#include <iostream>
|
|
|
|
|
|
#include "../device/adc_device_attribute.h"
|
|
|
|
using namespace adc;
|
|
|
|
template <typename T>
|
|
struct V {
|
|
static T getter()
|
|
{
|
|
return _v;
|
|
}
|
|
static void setter(const T& v)
|
|
{
|
|
_v = v;
|
|
}
|
|
|
|
static bool validator(const T& v)
|
|
{
|
|
if (v < 1)
|
|
return false;
|
|
else
|
|
return true;
|
|
}
|
|
|
|
private:
|
|
inline static T _v = 1;
|
|
};
|
|
|
|
|
|
TEST_CASE("[ADC DEVICE ATTRIBUTE]")
|
|
{
|
|
double av = -10;
|
|
using vv = V<unsigned>;
|
|
|
|
using attr_t = AdcDeviceAttribute<std::string_view, std::string>;
|
|
|
|
std::string_view id{"ATTR_A"};
|
|
|
|
// attr_t attr(id, adc::constants::AdcDefaultTrivialConvTypes, vv::getter, vv::setter);
|
|
attr_t attr("id", adc::constants::AdcDefaultTrivialConvTypes, vv::getter, vv::setter);
|
|
|
|
attr = 10.7;
|
|
av = attr;
|
|
|
|
std::cout << "ATTR = " << av << "\n";
|
|
std::cout << "ATTR = " << (unsigned)attr << "\n";
|
|
|
|
// attr_t aw("ATTR_WO", nullptr, vv::setter, nullptr);
|
|
attr_t aw("ATTR_WO", adc::constants::AdcDefaultTrivialConvTypes, vv::setter);
|
|
// attr_t aw(id, adc::constants::AdcDefaultTrivialConvTypes, vv::setter);
|
|
|
|
std::cout << "ACC_TYPE: " << aw.accessType() << "\n";
|
|
// av = aw;
|
|
aw = 4534.6588;
|
|
|
|
// attr_t ar("ATTR_RO", adc::constants::AdcDefaultTrivialConvTypes, vv::getter);
|
|
auto ar = attr_t::makeArithAttr("ATTR_RO", vv::getter);
|
|
std::cout << "ACC_TYPE: " << ar.accessType() << "\n";
|
|
|
|
std::cout << "ATTR_RO = " << (double)ar << "\n";
|
|
|
|
auto ar1 = ar;
|
|
std::cout << "ATTR1_RO = " << (double)ar1 << "\n";
|
|
|
|
auto ar2(ar1);
|
|
std::cout << "ATTR2_RO = " << (double)ar2 << "\n";
|
|
|
|
std::cout << "ATTR2_RO_SER = " << ar2.serialize() << "\n";
|
|
}
|