Skip to content

Commit 53f547d

Browse files
committed
Added APITests (#64)
1 parent 9b69ae5 commit 53f547d

10 files changed

+616
-29
lines changed

include/dbcppp/CApi.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ extern "C"
100100
DBCPPP_API void dbcppp_AttributeDefinitionFree(const dbcppp_AttributeDefinition* attribute_defintion);
101101
DBCPPP_API dbcppp_EObjectType dbcppp_AttributeDefinitionObjectType(const dbcppp_AttributeDefinition* attribute_definition);
102102
DBCPPP_API const char* dbcppp_AttributeDefinitionName(const dbcppp_AttributeDefinition* attribute_definition);
103-
DBCPPP_API dbcppp_EAttributeDefinitionValueType dbcppp_AttributeDefinitionValue_Type(const dbcppp_AttributeDefinition* attribute_definition);
103+
DBCPPP_API dbcppp_EAttributeDefinitionValueType dbcppp_AttributeDefinitionValueType(const dbcppp_AttributeDefinition* attribute_definition);
104104
DBCPPP_API int64_t dbcppp_AttributeDefinitionValueTypeAsInt_Minimum(const dbcppp_AttributeDefinition* attribute_definition);
105105
DBCPPP_API int64_t dbcppp_AttributeDefinitionValueTypeAsInt_Maximum(const dbcppp_AttributeDefinition* attribute_definition);
106106
DBCPPP_API uint64_t dbcppp_AttributeDefinitionValueTypeAsHex_Minimum(const dbcppp_AttributeDefinition* attribute_definition);
@@ -139,8 +139,8 @@ extern "C"
139139
DBCPPP_API double dbcppp_EnvironmentVariableInitialValue(const dbcppp_EnvironmentVariable* env_var);
140140
DBCPPP_API uint64_t dbcppp_EnvironmentVariableEvId(const dbcppp_EnvironmentVariable* env_var);
141141
DBCPPP_API dbcppp_EEnvironmentVariableAccessType dbcppp_EnvironmentVariableAccessType(const dbcppp_EnvironmentVariable* env_var);
142-
DBCPPP_API const char* dbcppp_EnvironmentVariableNodes_Get(const dbcppp_EnvironmentVariable* env_var, uint64_t i);
143-
DBCPPP_API uint64_t dbcppp_EnvironmentVariableNodes_Size(const dbcppp_EnvironmentVariable* env_var);
142+
DBCPPP_API const char* dbcppp_EnvironmentVariableAccessNodes_Get(const dbcppp_EnvironmentVariable* env_var, uint64_t i);
143+
DBCPPP_API uint64_t dbcppp_EnvironmentVariableAccessNodes_Size(const dbcppp_EnvironmentVariable* env_var);
144144
DBCPPP_API uint64_t dbcppp_EnvironmentVariableValueEncodingDescriptions_GetValue(const dbcppp_EnvironmentVariable* env_var, int64_t i);
145145
DBCPPP_API const char* dbcppp_EnvironmentVariableValueEncodingDescriptions_GetDescription(const dbcppp_EnvironmentVariable* env_var, int64_t i);
146146
DBCPPP_API uint64_t dbcppp_EnvironmentVariableValueEncodingDescriptions_Size(const dbcppp_EnvironmentVariable* env_var);
@@ -170,8 +170,9 @@ extern "C"
170170
DBCPPP_API const dbcppp_Attribute* dbcppp_MessageAttributeValues_Get(const dbcppp_Message* msg, uint64_t i);
171171
DBCPPP_API uint64_t dbcppp_MessageAttributeValues_Size(const dbcppp_Message* msg);
172172
DBCPPP_API const char* dbcppp_MessageComment(const dbcppp_Message* msg);
173-
173+
174174
DBCPPP_API const dbcppp_Network* dbcppp_NetworkLoadDBCFromFile(const char* filename);
175+
DBCPPP_API const dbcppp_Network* dbcppp_NetworkLoadDBCFromMemory(const char* data);
175176
DBCPPP_API const dbcppp_Network* dbcppp_NetworkCreate(
176177
const char* version
177178
, const char** new_symbols

include/dbcppp/EnvironmentVariable.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,14 @@ namespace dbcppp
2424
};
2525
enum class EAccessType
2626
{
27-
Unrestricted, Read, Write, ReadWrite
27+
Unrestricted = 0x0000,
28+
Read = 0x0001,
29+
Write = 0x0002,
30+
ReadWrite = 0x0003,
31+
Unrestricted_ = 0x8000,
32+
Read_ = 0x8001,
33+
Write_ = 0x8002,
34+
ReadWrite_ = 0x8003
2835
};
2936

3037
static std::unique_ptr<IEnvironmentVariable> Create(

include/dbcppp/Signal.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ namespace dbcppp
3333
};
3434
enum class EByteOrder
3535
{
36-
LittleEndian, BigEndian
36+
BigEndian = 0,
37+
LittleEndian = 1
3738
};
3839
enum class EValueType
3940
{

src/libdbcppp/CApi.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ extern "C"
173173
auto ad = reinterpret_cast<const AttributeDefinitionImpl*>(attribute_definition);
174174
return ad->Name().c_str();
175175
}
176-
DBCPPP_API dbcppp_EAttributeDefinitionValueType dbcppp_AttributeDefinitionValue_Type(const dbcppp_AttributeDefinition* attribute_definition)
176+
DBCPPP_API dbcppp_EAttributeDefinitionValueType dbcppp_AttributeDefinitionValueType(const dbcppp_AttributeDefinition* attribute_definition)
177177
{
178178
auto ad = reinterpret_cast<const AttributeDefinitionImpl*>(attribute_definition);
179179
if (std::get_if<IAttributeDefinition::ValueTypeInt>(&ad->ValueType()))
@@ -404,12 +404,12 @@ extern "C"
404404
default: return dbcppp_EEnvironmentVariableAccessType::dbcppp_EnvironmentVariableAccessTypeReadWrite;
405405
}
406406
}
407-
DBCPPP_API const char* dbcppp_EnvironmentVariableNodes_Get(const dbcppp_EnvironmentVariable* env_var, uint64_t i)
407+
DBCPPP_API const char* dbcppp_EnvironmentVariableAccessNodes_Get(const dbcppp_EnvironmentVariable* env_var, uint64_t i)
408408
{
409409
auto env_var_i = reinterpret_cast<const EnvironmentVariableImpl*>(env_var);
410410
return env_var_i->AccessNodes_Get(i).c_str();
411411
}
412-
DBCPPP_API uint64_t dbcppp_EnvironmentVariableNodes_Size(const dbcppp_EnvironmentVariable* env_var)
412+
DBCPPP_API uint64_t dbcppp_EnvironmentVariableAccessNodes_Size(const dbcppp_EnvironmentVariable* env_var)
413413
{
414414
auto env_var_i = reinterpret_cast<const EnvironmentVariableImpl*>(env_var);
415415
return env_var_i->AccessNodes_Size();

src/libdbcppp/DBCAST2Network.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include <regex>
33
#include <fstream>
44
#include <variant>
5+
#include <sstream>
56

67
#include <boost/variant.hpp>
78

@@ -498,22 +499,15 @@ static auto getEnvironmentVariables(const G_Network& gnet)
498499
case 1: var_type = IEnvironmentVariable::EVarType::Float; break;
499500
case 2: var_type = IEnvironmentVariable::EVarType::String; break;
500501
}
501-
if (ev.access_type == "DUMMY_NODE_VECTOR0")
502-
{
503-
access_type = IEnvironmentVariable::EAccessType::Unrestricted;
504-
}
505-
else if (ev.access_type == "DUMMY_NODE_VECTOR1")
506-
{
507-
access_type = IEnvironmentVariable::EAccessType::Read;
508-
}
509-
else if (ev.access_type == "DUMMY_NODE_VECTOR2")
510-
{
511-
access_type = IEnvironmentVariable::EAccessType::Write;
512-
}
513-
else
514-
{
515-
access_type = IEnvironmentVariable::EAccessType::ReadWrite;
516-
}
502+
access_type = IEnvironmentVariable::EAccessType::Unrestricted;
503+
if (ev.access_type == "DUMMY_NODE_VECTOR0") access_type = IEnvironmentVariable::EAccessType::Unrestricted;
504+
else if (ev.access_type == "DUMMY_NODE_VECTOR1") access_type = IEnvironmentVariable::EAccessType::Read;
505+
else if (ev.access_type == "DUMMY_NODE_VECTOR2") access_type = IEnvironmentVariable::EAccessType::Write;
506+
else if (ev.access_type == "DUMMY_NODE_VECTOR3") access_type = IEnvironmentVariable::EAccessType::ReadWrite;
507+
else if (ev.access_type == "DUMMY_NODE_VECTOR8000") access_type = IEnvironmentVariable::EAccessType::Unrestricted_;
508+
else if (ev.access_type == "DUMMY_NODE_VECTOR8001") access_type = IEnvironmentVariable::EAccessType::Read_;
509+
else if (ev.access_type == "DUMMY_NODE_VECTOR8002") access_type = IEnvironmentVariable::EAccessType::Write_;
510+
else if (ev.access_type == "DUMMY_NODE_VECTOR8003") access_type = IEnvironmentVariable::EAccessType::ReadWrite_;
517511
for (auto& evd : gnet.environment_variable_datas)
518512
{
519513
if (evd.name == ev.name)
@@ -689,7 +683,13 @@ extern "C"
689683
DBCPPP_API const dbcppp_Network* dbcppp_NetworkLoadDBCFromFile(const char* filename)
690684
{
691685
std::ifstream is(filename);
692-
std::unique_ptr<INetwork> result = INetwork::LoadDBCFromIs(is);
693-
return reinterpret_cast<const dbcppp_Network*>(result.release());
686+
auto net = INetwork::LoadDBCFromIs(is);
687+
return reinterpret_cast<const dbcppp_Network*>(net.release());
688+
}
689+
DBCPPP_API const dbcppp_Network* dbcppp_NetworkLoadDBCFromMemory(const char* data)
690+
{
691+
std::istringstream iss(data);
692+
auto net = INetwork::LoadDBCFromIs(iss);
693+
return reinterpret_cast<const dbcppp_Network*>(net.release());
694694
}
695695
}

src/libdbcppp/Network2DBC.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,10 @@ DBCPPP_API std::ostream& dbcppp::Network2DBC::operator<<(std::ostream& os, const
237237
case IEnvironmentVariable::EAccessType::Read: os << "DUMMY_NODE_VECTOR1"; break;
238238
case IEnvironmentVariable::EAccessType::Write: os << "DUMMY_NODE_VECTOR2"; break;
239239
case IEnvironmentVariable::EAccessType::ReadWrite: os << "DUMMY_NODE_VECTOR3"; break;
240+
case IEnvironmentVariable::EAccessType::Unrestricted_: os << "DUMMY_NODE_VECTOR8000"; break;
241+
case IEnvironmentVariable::EAccessType::Read_: os << "DUMMY_NODE_VECTOR8001"; break;
242+
case IEnvironmentVariable::EAccessType::Write_: os << "DUMMY_NODE_VECTOR8002"; break;
243+
case IEnvironmentVariable::EAccessType::ReadWrite_: os << "DUMMY_NODE_VECTOR8003"; break;
240244
}
241245
bool first = true;
242246
for (const std::string& n : ev.AccessNodes())

tests/APITests.cpp

Lines changed: 240 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,246 @@
11

22
#include "Catch2.h"
3-
#include "dbcppp/Network.h"
3+
#include <dbcppp/CApi.h>
4+
#include <dbcppp/Network.h>
45

5-
TEST_CASE("APITest ", "[]")
6+
using namespace dbcppp;
7+
8+
TEST_CASE("API Test: AttributeDefinition", "[]")
9+
{
10+
constexpr char* test_dbc =
11+
"VERSION \"\"\n"
12+
"NS_ :\n"
13+
"BS_:\n"
14+
"BU_:\n"
15+
"BA_DEF_ BO_ \"AD_Name\" INT 1 3000;";
16+
17+
SECTION("CPP API")
18+
{
19+
std::istringstream iss(test_dbc);
20+
auto net = INetwork::LoadDBCFromIs(iss);
21+
REQUIRE(net);
22+
23+
REQUIRE(net->AttributeDefinitions_Size() == 1);
24+
REQUIRE(net->AttributeDefinitions_Get(0).ObjectType() == IAttributeDefinition::EObjectType::Message);
25+
REQUIRE(net->AttributeDefinitions_Get(0).Name() == "AD_Name");
26+
auto value_type = std::get_if<IAttributeDefinition::ValueTypeInt>(&net->AttributeDefinitions_Get(0).ValueType());
27+
REQUIRE(value_type);
28+
REQUIRE(value_type->minimum == 1);
29+
REQUIRE(value_type->maximum == 3000);
30+
}
31+
SECTION("C API")
32+
{
33+
auto net = dbcppp_NetworkLoadDBCFromMemory(test_dbc);
34+
REQUIRE(net);
35+
36+
REQUIRE(dbcppp_NetworkAttributeDefinitions_Size(net) == 1);
37+
auto attr_def = dbcppp_NetworkAttributeDefinitions_Get(net, 0);
38+
REQUIRE(dbcppp_AttributeDefinitionObjectType(attr_def) == dbcppp_ObjectType_Message);
39+
REQUIRE(dbcppp_AttributeDefinitionName(attr_def) == std::string("AD_Name"));
40+
REQUIRE(dbcppp_AttributeDefinitionValueType(attr_def) == dbcppp_AttributeDefinitionValueTypeInt);
41+
REQUIRE(dbcppp_AttributeDefinitionValueTypeAsInt_Minimum(attr_def) == 1);
42+
REQUIRE(dbcppp_AttributeDefinitionValueTypeAsInt_Maximum(attr_def) == 3000);
43+
}
44+
}
45+
TEST_CASE("API Test: BitTiming", "[]")
646
{
47+
constexpr char* test_dbc =
48+
"VERSION \"\"\n"
49+
"NS_ :\n"
50+
"BS_: 1 : 2, 3\n"
51+
"BU_:\n";
52+
53+
SECTION("CPP API")
54+
{
55+
std::istringstream iss(test_dbc);
56+
auto net = INetwork::LoadDBCFromIs(iss);
57+
REQUIRE(net);
58+
59+
REQUIRE(net->BitTiming().Baudrate() == 1);
60+
REQUIRE(net->BitTiming().BTR1() == 2);
61+
REQUIRE(net->BitTiming().BTR2() == 3);
62+
}
63+
SECTION("C API")
64+
{
65+
auto net = dbcppp_NetworkLoadDBCFromMemory(test_dbc);
66+
REQUIRE(net);
67+
68+
auto bt = dbcppp_NetworkBitTiming(net);
69+
REQUIRE(bt);
70+
REQUIRE(dbcppp_BitTimingBaudrate(bt) == 1);
71+
REQUIRE(dbcppp_BitTimingBTR1(bt) == 2);
72+
REQUIRE(dbcppp_BitTimingBTR2(bt) == 3);
73+
}
74+
}
75+
TEST_CASE("API Test: EnvironmentVariable", "[]")
76+
{
77+
constexpr char* test_dbc =
78+
"VERSION \"\"\n"
79+
"NS_ :\n"
80+
"BS_:\n"
81+
"BU_:\n"
82+
"EV_ EnvVarName : 0 [1|2] \"Unit\" 5.5 1 DUMMY_NODE_VECTOR0 Node0;\n"
83+
"CM_ EV_ EnvVarName \"Comment\";\n";
84+
85+
SECTION("CPP API")
86+
{
87+
std::istringstream iss(test_dbc);
88+
auto net = INetwork::LoadDBCFromIs(iss);
89+
REQUIRE(net);
90+
91+
REQUIRE(net->EnvironmentVariables_Size() == 1);
92+
REQUIRE(net->EnvironmentVariables_Get(0).Name() == "EnvVarName");
93+
REQUIRE(net->EnvironmentVariables_Get(0).VarType() == IEnvironmentVariable::EVarType::Integer);
94+
REQUIRE(net->EnvironmentVariables_Get(0).Minimum() == 1);
95+
REQUIRE(net->EnvironmentVariables_Get(0).Maximum() == 2);
96+
REQUIRE(net->EnvironmentVariables_Get(0).Unit() == "Unit");
97+
REQUIRE(net->EnvironmentVariables_Get(0).InitialValue() == 5.5);
98+
REQUIRE(net->EnvironmentVariables_Get(0).EvId() == 1);
99+
REQUIRE(net->EnvironmentVariables_Get(0).AccessType() == IEnvironmentVariable::EAccessType::Unrestricted);
100+
REQUIRE(net->EnvironmentVariables_Get(0).AccessNodes_Size() == 1);
101+
REQUIRE(net->EnvironmentVariables_Get(0).AccessNodes_Get(0) == "Node0");
102+
}
103+
SECTION("C API")
104+
{
105+
auto net = dbcppp_NetworkLoadDBCFromMemory(test_dbc);
106+
REQUIRE(net);
107+
108+
REQUIRE(dbcppp_NetworkEnvironmentVariables_Size(net) == 1);
109+
auto ev = dbcppp_NetworkEnvironmentVariables_Get(net, 0);
110+
REQUIRE(ev);
111+
REQUIRE(dbcppp_EnvironmentVariableName(ev) == std::string("EnvVarName"));
112+
REQUIRE(dbcppp_EnvironmentVariableVarType(ev) == dbcppp_EnvironmentVariableVarTypeInteger);
113+
REQUIRE(dbcppp_EnvironmentVariableMinimum(ev) == 1);
114+
REQUIRE(dbcppp_EnvironmentVariableMaximum(ev) == 2);
115+
REQUIRE(dbcppp_EnvironmentVariableUnit(ev) == std::string("Unit"));
116+
REQUIRE(dbcppp_EnvironmentVariableInitialValue(ev) == 5.5);
117+
REQUIRE(dbcppp_EnvironmentVariableEvId(ev) == 1);
118+
REQUIRE(dbcppp_EnvironmentVariableAccessType(ev) == dbcppp_EnvironmentVariableAccessTypeUnrestricted);
119+
REQUIRE(dbcppp_EnvironmentVariableAccessNodes_Size(ev) == 1);
120+
REQUIRE(dbcppp_EnvironmentVariableAccessNodes_Get(ev, 0) == std::string("Node0"));
121+
}
122+
}
123+
TEST_CASE("API Test: Signal", "[]")
124+
{
125+
constexpr char* test_dbc =
126+
"VERSION \"\"\n"
127+
"NS_ :\n"
128+
"BS_: 1 : 2, 3\n"
129+
"BU_:\n"
130+
"BO_ 1 Msg0: 8 Sender0\n"
131+
" SG_ Sig0: 0|1@1+ (1,0) [1|12] \"Unit0\" Vector__XXX\n"
132+
" SG_ Sig1 m0 : 1|1@0- (1,0) [1|12] \"Unit1\" Recv0, Recv1\n"
133+
" SG_ Sig2 M : 2|1@0- (1,0) [1|12] \"Unit2\" Recv0, Recv1\n";
134+
135+
SECTION("CPP API")
136+
{
137+
std::istringstream iss(test_dbc);
138+
auto net = INetwork::LoadDBCFromIs(iss);
139+
REQUIRE(net);
140+
141+
REQUIRE(net->Messages_Size() == 1);
142+
REQUIRE(net->Messages_Get(0).Signals_Size() == 3);
143+
REQUIRE(net->Messages_Get(0).Signals_Get(0).Name() == "Sig0");
144+
REQUIRE(net->Messages_Get(0).Signals_Get(0).MultiplexerIndicator() == ISignal::EMultiplexer::NoMux);
145+
REQUIRE(net->Messages_Get(0).Signals_Get(0).StartBit() == 0);
146+
REQUIRE(net->Messages_Get(0).Signals_Get(0).BitSize() == 1);
147+
REQUIRE(net->Messages_Get(0).Signals_Get(0).ByteOrder() == ISignal::EByteOrder::LittleEndian);
148+
REQUIRE(net->Messages_Get(0).Signals_Get(0).ValueType() == ISignal::EValueType::Unsigned);
149+
REQUIRE(net->Messages_Get(0).Signals_Get(0).Factor() == 1);
150+
REQUIRE(net->Messages_Get(0).Signals_Get(0).Offset() == 0);
151+
REQUIRE(net->Messages_Get(0).Signals_Get(0).Minimum() == 1);
152+
REQUIRE(net->Messages_Get(0).Signals_Get(0).Maximum() == 12);
153+
REQUIRE(net->Messages_Get(0).Signals_Get(0).Unit() == "Unit0");
154+
REQUIRE(net->Messages_Get(0).Signals_Get(0).Receivers_Size() == 1);
155+
REQUIRE(net->Messages_Get(0).Signals_Get(0).Receivers_Get(0) == "Vector__XXX");
156+
157+
REQUIRE(net->Messages_Get(0).Signals_Get(1).Name() == "Sig1");
158+
REQUIRE(net->Messages_Get(0).Signals_Get(1).MultiplexerIndicator() == ISignal::EMultiplexer::MuxValue);
159+
REQUIRE(net->Messages_Get(0).Signals_Get(1).StartBit() == 1);
160+
REQUIRE(net->Messages_Get(0).Signals_Get(1).BitSize() == 1);
161+
REQUIRE(net->Messages_Get(0).Signals_Get(1).ByteOrder() == ISignal::EByteOrder::BigEndian);
162+
REQUIRE(net->Messages_Get(0).Signals_Get(1).ValueType() == ISignal::EValueType::Signed);
163+
REQUIRE(net->Messages_Get(0).Signals_Get(1).Factor() == 1);
164+
REQUIRE(net->Messages_Get(0).Signals_Get(1).Offset() == 0);
165+
REQUIRE(net->Messages_Get(0).Signals_Get(1).Minimum() == 1);
166+
REQUIRE(net->Messages_Get(0).Signals_Get(1).Maximum() == 12);
167+
REQUIRE(net->Messages_Get(0).Signals_Get(1).Unit() == "Unit1");
168+
REQUIRE(net->Messages_Get(0).Signals_Get(1).Receivers_Size() == 2);
169+
REQUIRE(net->Messages_Get(0).Signals_Get(1).Receivers_Get(0) == "Recv0");
170+
REQUIRE(net->Messages_Get(0).Signals_Get(1).Receivers_Get(1) == "Recv1");
171+
172+
REQUIRE(net->Messages_Get(0).Signals_Get(2).Name() == "Sig2");
173+
REQUIRE(net->Messages_Get(0).Signals_Get(2).MultiplexerIndicator() == ISignal::EMultiplexer::MuxSwitch);
174+
REQUIRE(net->Messages_Get(0).Signals_Get(2).StartBit() == 2);
175+
REQUIRE(net->Messages_Get(0).Signals_Get(2).BitSize() == 1);
176+
REQUIRE(net->Messages_Get(0).Signals_Get(2).ByteOrder() == ISignal::EByteOrder::BigEndian);
177+
REQUIRE(net->Messages_Get(0).Signals_Get(2).ValueType() == ISignal::EValueType::Signed);
178+
REQUIRE(net->Messages_Get(0).Signals_Get(2).Factor() == 1);
179+
REQUIRE(net->Messages_Get(0).Signals_Get(2).Offset() == 0);
180+
REQUIRE(net->Messages_Get(0).Signals_Get(2).Minimum() == 1);
181+
REQUIRE(net->Messages_Get(0).Signals_Get(2).Maximum() == 12);
182+
REQUIRE(net->Messages_Get(0).Signals_Get(2).Unit() == "Unit2");
183+
REQUIRE(net->Messages_Get(0).Signals_Get(2).Receivers_Size() == 2);
184+
REQUIRE(net->Messages_Get(0).Signals_Get(2).Receivers_Get(0) == "Recv0");
185+
REQUIRE(net->Messages_Get(0).Signals_Get(2).Receivers_Get(1) == "Recv1");
186+
}
187+
SECTION("C API")
188+
{
189+
auto net = dbcppp_NetworkLoadDBCFromMemory(test_dbc);
190+
REQUIRE(net);
191+
192+
REQUIRE(dbcppp_NetworkMessages_Size(net) == 1);
193+
auto msg = dbcppp_NetworkMessages_Get(net, 0);
194+
REQUIRE(msg);
195+
REQUIRE(dbcppp_MessageSignals_Size(msg) == 3);
196+
auto sig = dbcppp_MessageSignals_Get(msg, 0);
197+
REQUIRE(sig);
198+
REQUIRE(dbcppp_SignalName(sig) == std::string("Sig0"));
199+
REQUIRE(dbcppp_SignalMultiplexerIndicator(sig) == dbcppp_SignalMultiplexerNoMux);
200+
REQUIRE(dbcppp_SignalStartBit(sig) == 0);
201+
REQUIRE(dbcppp_SignalBitSize(sig) == 1);
202+
REQUIRE(dbcppp_SignalByteOrder(sig) == dbcppp_SignalByteOrderLittleEndian);
203+
REQUIRE(dbcppp_SignalValueType(sig) == dbcppp_SignalValueTypeUnsigned);
204+
REQUIRE(dbcppp_SignalFactor(sig) == 1);
205+
REQUIRE(dbcppp_SignalOffset(sig) == 0);
206+
REQUIRE(dbcppp_SignalMinimum(sig) == 1);
207+
REQUIRE(dbcppp_SignalMaximum(sig) == 12);
208+
REQUIRE(dbcppp_SignalReceivers_Size(sig) == 1);
209+
REQUIRE(dbcppp_SignalReceivers_Get(sig, 0) == std::string("Vector__XXX"));
210+
}
211+
}
212+
TEST_CASE("API Test: Message", "[]")
213+
{
214+
constexpr char* test_dbc =
215+
"VERSION \"\"\n"
216+
"NS_ :\n"
217+
"BS_: 1 : 2, 3\n"
218+
"BU_:\n"
219+
"BO_ 1 Msg0: 8 Sender0\n"
220+
" SG_ Sig0: 0|1@1+ (1,0) [1|12] \"Unit0\" Vector__XXX\n"
221+
" SG_ Sig1 m0 : 1|1@0- (1,0) [1|12] \"Unit1\" Recv0, Recv1\n"
222+
" SG_ Sig2 M : 2|1@0- (1,0) [1|12] \"Unit2\" Recv0, Recv1\n";
223+
224+
SECTION("CPP API")
225+
{
226+
std::istringstream iss(test_dbc);
227+
auto net = INetwork::LoadDBCFromIs(iss);
228+
REQUIRE(net);
229+
230+
REQUIRE(net->Messages_Size() == 1);
231+
REQUIRE(net->Messages_Get(0).Id() == 1);
232+
REQUIRE(net->Messages_Get(0).MessageSize() == 8);
233+
REQUIRE(net->Messages_Get(0).Transmitter() == "Sender0");
234+
REQUIRE(net->Messages_Get(0).Signals_Size() == 3);
235+
}
236+
SECTION("C API")
237+
{
238+
auto net = dbcppp_NetworkLoadDBCFromMemory(test_dbc);
239+
REQUIRE(net);
7240

241+
REQUIRE(dbcppp_NetworkMessages_Size(net) == 1);
242+
auto msg = dbcppp_NetworkMessages_Get(net, 0);
243+
REQUIRE(msg);
244+
REQUIRE(dbcppp_MessageSignals_Size(msg) == 3);
245+
}
8246
}

0 commit comments

Comments
 (0)