@@ -57,7 +57,7 @@ TEST_CASE("Testing dbc file loading", "[fileio]") {
57
57
58
58
REQUIRE (parser->get_messages () == msgs);
59
59
60
- REQUIRE (parser->get_messages ().front ().signals () == msg.signals ());
60
+ REQUIRE (parser->get_messages ().front ().getSignals () == msg.getSignals ());
61
61
}
62
62
}
63
63
@@ -80,13 +80,13 @@ TEST_CASE("Testing big endian, little endian") {
80
80
parser.parse_file (filename);
81
81
82
82
REQUIRE (parser.get_messages ().size () == 1 );
83
- REQUIRE (parser.get_messages ().at (0 ).signals ().size () == 2 );
83
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().size () == 2 );
84
84
{
85
- const auto signal = parser.get_messages ().at (0 ).signals ().at (0 );
85
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (0 );
86
86
REQUIRE (signal.is_bigendian == true );
87
87
}
88
88
{
89
- const auto signal = parser.get_messages ().at (0 ).signals ().at (1 );
89
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (1 );
90
90
REQUIRE (signal.is_bigendian == false );
91
91
}
92
92
}
@@ -104,31 +104,31 @@ TEST_CASE("Testing negative values") {
104
104
parser.parse_file (filename);
105
105
106
106
REQUIRE (parser.get_messages ().size () == 1 );
107
- REQUIRE (parser.get_messages ().at (0 ).signals ().size () == 4 );
107
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().size () == 4 );
108
108
109
109
SECTION (" Evaluating first message" ) {
110
- const auto signal = parser.get_messages ().at (0 ).signals ().at (0 );
110
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (0 );
111
111
REQUIRE (signal.factor == 0.1 );
112
112
REQUIRE (signal.offset == 0 );
113
113
REQUIRE (signal.min == -3276.8 );
114
114
REQUIRE (signal.max == -3276.7 );
115
115
}
116
116
SECTION (" Evaluating second message" ) {
117
- const auto signal = parser.get_messages ().at (0 ).signals ().at (1 );
117
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (1 );
118
118
REQUIRE (signal.factor == 0.1 );
119
119
REQUIRE (signal.offset == 0 );
120
120
REQUIRE (signal.min == -3276.8 );
121
121
REQUIRE (signal.max == -3276.7 );
122
122
}
123
123
SECTION (" Evaluating third message" ) {
124
- const auto signal = parser.get_messages ().at (0 ).signals ().at (2 );
124
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (2 );
125
125
REQUIRE (signal.factor == 10 );
126
126
REQUIRE (signal.offset == 0 );
127
127
REQUIRE (signal.min == -3276.8 );
128
128
REQUIRE (signal.max == -3276.7 );
129
129
}
130
130
SECTION (" Evaluating fourth message" ) {
131
- const auto signal = parser.get_messages ().at (0 ).signals ().at (3 );
131
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (3 );
132
132
REQUIRE (signal.factor == 1 );
133
133
REQUIRE (signal.offset == -10 );
134
134
REQUIRE (signal.min == 0 );
@@ -146,9 +146,101 @@ TEST_CASE("Special characters in unit") {
146
146
parser.parse_file (filename);
147
147
148
148
REQUIRE (parser.get_messages ().size () == 1 );
149
- REQUIRE (parser.get_messages ().at (0 ).signals ().size () == 1 );
149
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().size () == 1 );
150
150
SECTION (" Checking that signal with special characters as unit is parsed correctly" ) {
151
- const auto signal = parser.get_messages ().at (0 ).signals ().at (0 );
151
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (0 );
152
152
REQUIRE (signal.unit .compare (" Km/h" ) == 0 );
153
153
}
154
154
}
155
+
156
+ TEST_CASE (" Signal Value Description" ) {
157
+ const auto * filename = std::tmpnam (NULL );
158
+
159
+ create_tmp_dbc_with (filename, R"( BO_ 234 MSG1: 8 Vector__XXX
160
+ SG_ State1 : 0|8@1+ (1,0) [0|200] "Km/h" DEVICE1,DEVICE2,DEVICE3
161
+ SG_ State2 : 0|8@1+ (1,0) [0|204] "" DEVICE1,DEVICE2,DEVICE3
162
+ VAL_ 234 State1 123 "Description 1" 0 "Description 2" 90903489 "Big value and special characters &$§())!" ;)" );
163
+
164
+ auto parser = libdbc::DbcParser ();
165
+ parser.parse_file (filename);
166
+
167
+ REQUIRE (parser.get_messages ().size () == 1 );
168
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().size () == 2 );
169
+
170
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().at (0 ).svDescriptions .size () == 3 );
171
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().at (1 ).svDescriptions .size () == 0 );
172
+
173
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (0 );
174
+ REQUIRE (signal.svDescriptions .at (0 ).value == 123 );
175
+ REQUIRE (signal.svDescriptions .at (0 ).description == " Description 1" );
176
+ REQUIRE (signal.svDescriptions .at (1 ).value == 0 );
177
+ REQUIRE (signal.svDescriptions .at (1 ).description == " Description 2" );
178
+ REQUIRE (signal.svDescriptions .at (2 ).value == 90903489 );
179
+ REQUIRE (signal.svDescriptions .at (2 ).description == " Big value and special characters &$§())!" );
180
+ }
181
+
182
+ TEST_CASE (" Signal Value Description Extended CAN id" ) {
183
+ /*
184
+ * It should not crash, even extended CAN id is used
185
+ */
186
+ const auto * filename = std::tmpnam (NULL );
187
+
188
+ create_tmp_dbc_with (filename, R"( BO_ 3221225472 MSG1: 8 Vector__XXX
189
+ SG_ State1 : 0|8@1+ (1,0) [0|200] "Km/h" DEVICE1,DEVICE2,DEVICE3
190
+ SG_ State2 : 0|8@1+ (1,0) [0|204] "" DEVICE1,DEVICE2,DEVICE3
191
+ VAL_ 3221225472 State1 123 "Description 1" 0 "Description 2" 4000000000 "Big value and special characters &$§())!" ;)" );
192
+
193
+ auto parser = libdbc::DbcParser ();
194
+ parser.parse_file (filename);
195
+
196
+ REQUIRE (parser.get_messages ().size () == 1 );
197
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().size () == 2 );
198
+
199
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().at (0 ).svDescriptions .size () == 3 );
200
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().at (1 ).svDescriptions .size () == 0 );
201
+
202
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (0 );
203
+ REQUIRE (signal.svDescriptions .at (0 ).value == 123 );
204
+ REQUIRE (signal.svDescriptions .at (0 ).description == " Description 1" );
205
+ REQUIRE (signal.svDescriptions .at (1 ).value == 0 );
206
+ REQUIRE (signal.svDescriptions .at (1 ).description == " Description 2" );
207
+ REQUIRE (signal.svDescriptions .at (2 ).value == 4000000000 );
208
+ REQUIRE (signal.svDescriptions .at (2 ).description == " Big value and special characters &$§())!" );
209
+ }
210
+
211
+ TEST_CASE (" Signal Value Multiple VAL_" ) {
212
+ /*
213
+ * It should not crash, even extended CAN id is used
214
+ */
215
+ const auto * filename = std::tmpnam (NULL );
216
+
217
+ create_tmp_dbc_with (filename, R"( BO_ 3221225472 MSG1: 8 Vector__XXX
218
+ SG_ State1 : 0|8@1+ (1,0) [0|200] "Km/h" DEVICE1,DEVICE2,DEVICE3
219
+ SG_ State2 : 0|8@1+ (1,0) [0|204] "" DEVICE1,DEVICE2,DEVICE3"
220
+ BO_ 123 MSG1: 8 Vector__XXX
221
+ SG_ State1 : 0|8@1+ (1,0) [0|200] "Km/h" DEVICE1,DEVICE2,DEVICE3
222
+ SG_ State2 : 0|8@1+ (1,0) [0|204] "" DEVICE1,DEVICE2,DEVICE3
223
+ VAL_ 3221225472 State1 123 "Description 1" 0 "Description 2"
224
+ VAL_ 123 State1 123 "Description 3" 0 "Description 4")" );
225
+
226
+ auto parser = libdbc::DbcParser ();
227
+ parser.parse_file (filename);
228
+
229
+ REQUIRE (parser.get_messages ().size () == 1 );
230
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().size () == 2 );
231
+
232
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().at (0 ).svDescriptions .size () == 2 );
233
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().at (1 ).svDescriptions .size () == 2 );
234
+
235
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (0 );
236
+ REQUIRE (signal.svDescriptions .at (0 ).value == 123 );
237
+ REQUIRE (signal.svDescriptions .at (0 ).description == " Description 1" );
238
+ REQUIRE (signal.svDescriptions .at (1 ).value == 0 );
239
+ REQUIRE (signal.svDescriptions .at (1 ).description == " Description 2" );
240
+
241
+ const auto signal2 = parser.get_messages ().at (0 ).getSignals ().at (0 );
242
+ REQUIRE (signal2.svDescriptions .at (0 ).value == 123 );
243
+ REQUIRE (signal2.svDescriptions .at (0 ).description == " Description 3" );
244
+ REQUIRE (signal2.svDescriptions .at (1 ).value == 0 );
245
+ REQUIRE (signal2.svDescriptions .at (1 ).description == " Description 4" );
246
+ }
0 commit comments