@@ -214,3 +214,42 @@ VAL_ 3221225472 State1 123 "Description 1" 0 "Description 2" 4000000000 "Big val
214
214
REQUIRE (signal.svDescriptions .at (2 ).description == " Big value and special characters &$§())!" );
215
215
216
216
}
217
+
218
+ TEST_CASE (" Signal Value Multiple VAL_" ) {
219
+ /*
220
+ * It should not crash, even extended CAN id is used
221
+ */
222
+ const auto * filename = std::tmpnam (NULL );
223
+
224
+ create_tmp_dbc_with (filename, R"( BO_ 3221225472 MSG1: 8 Vector__XXX
225
+ SG_ State1 : 0|8@1+ (1,0) [0|200] "Km/h" DEVICE1,DEVICE2,DEVICE3
226
+ SG_ State2 : 0|8@1+ (1,0) [0|204] "" DEVICE1,DEVICE2,DEVICE3"
227
+ BO_ 123 MSG1: 8 Vector__XXX
228
+ SG_ State1 : 0|8@1+ (1,0) [0|200] "Km/h" DEVICE1,DEVICE2,DEVICE3
229
+ SG_ State2 : 0|8@1+ (1,0) [0|204] "" DEVICE1,DEVICE2,DEVICE3
230
+ VAL_ 3221225472 State1 123 "Description 1" 0 "Description 2"
231
+ VAL_ 123 State1 123 "Description 3" 0 "Description 4")" );
232
+
233
+
234
+ auto parser = libdbc::DbcParser ();
235
+ parser.parse_file (filename);
236
+
237
+ REQUIRE (parser.get_messages ().size () == 1 );
238
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().size () == 2 );
239
+
240
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().at (0 ).svDescriptions .size () == 2 );
241
+ REQUIRE (parser.get_messages ().at (0 ).getSignals ().at (1 ).svDescriptions .size () == 2 );
242
+
243
+ const auto signal = parser.get_messages ().at (0 ).getSignals ().at (0 );
244
+ REQUIRE (signal.svDescriptions .at (0 ).value == 123 );
245
+ REQUIRE (signal.svDescriptions .at (0 ).description == " Description 1" );
246
+ REQUIRE (signal.svDescriptions .at (1 ).value == 0 );
247
+ REQUIRE (signal.svDescriptions .at (1 ).description == " Description 2" );
248
+
249
+ const auto signal2 = parser.get_messages ().at (0 ).getSignals ().at (0 );
250
+ REQUIRE (signal2.svDescriptions .at (0 ).value == 123 );
251
+ REQUIRE (signal2.svDescriptions .at (0 ).description == " Description 3" );
252
+ REQUIRE (signal2.svDescriptions .at (1 ).value == 0 );
253
+ REQUIRE (signal2.svDescriptions .at (1 ).description == " Description 4" );
254
+
255
+ }
0 commit comments