@@ -49,4 +49,45 @@ TEST_CASE("Testing dbc file loading", "[fileio]") {
4949 REQUIRE (parser->get_messages ().front ().signals == msg.signals );
5050 }
5151
52- }
52+ }
53+
54+ TEST_CASE (" Testing negative values" ) {
55+ const auto * filename = std::tmpnam (NULL );
56+
57+ auto * file = std::fopen (filename, " w" );
58+ CHECK (file);
59+
60+ std::fputs (PRIMITIVE_DBC.c_str (), file);
61+ std::fputs (R"( BO_ 234 MSG1: 8 Vector__XXX
62+ SG_ Sig1 : 55|16@0- (0.1,0) [-3276.8|-3276.7] "C" Vector__XXX
63+ SG_ Sig2 : 39|16@0- (0.1,0) [-3276.8|-3276.7] "C" Vector__XXX
64+ SG_ Sig3 : 23|16@0- (0.1,0) [-3276.8|-3276.7] "C" Vector__XXX
65+ SG_ Sig4 : 7|16@0- (1,0) [0|32767] "" Vector__XXX)" , file);
66+ std::fclose (file);
67+
68+ auto parser = libdbc::DbcParser ();
69+ parser.parse_file (std::string (filename));
70+
71+ REQUIRE (parser.get_messages ().size () == 1 );
72+ REQUIRE (parser.get_messages ().at (0 ).signals .size () == 4 );
73+ {
74+ const auto signal = parser.get_messages ().at (0 ).signals .at (0 );
75+ REQUIRE (signal.min == -3276.8 );
76+ REQUIRE (signal.max == -3276.7 );
77+ }
78+ {
79+ const auto signal = parser.get_messages ().at (1 ).signals .at (0 );
80+ REQUIRE (signal.min == -3276.8 );
81+ REQUIRE (signal.max == -3276.7 );
82+ }
83+ {
84+ const auto signal = parser.get_messages ().at (2 ).signals .at (0 );
85+ REQUIRE (signal.min == -3276.8 );
86+ REQUIRE (signal.max == -3276.7 );
87+ }
88+ {
89+ const auto signal = parser.get_messages ().at (3 ).signals .at (0 );
90+ REQUIRE (signal.min == -3276.8 );
91+ REQUIRE (signal.max == -3276.7 );
92+ }
93+ }
0 commit comments