@@ -119,4 +119,48 @@ TEST_CASE("Parse Message Big Number not aligned little endian") {
119119 }
120120}
121121
122+ TEST_CASE (" Parse Message little endian" ) {
123+ const auto * filename = std::tmpnam (NULL );
124+
125+ create_tmp_dbc_with (filename, R"( BO_ 541 STATUS: 8 DEVICE1
126+ SG_ Temperature : 48|16@1+ (0.01,-40) [-40|125] "C" DEVICE1
127+ SG_ SOH : 0|16@1+ (0.01,0) [0|100] "%" DEVICE1
128+ SG_ SOE : 32|16@1+ (0.01,0) [0|100] "%" DEVICE1
129+ SG_ SOC : 16|16@1+ (0.01,0) [0|100] "%" DEVICE1)" );
130+
131+ libdbc::DbcParser p;
132+ p.parse_file (filename);
133+
134+ std::vector<uint8_t > data{0x08 , 0x27 , 0xa3 , 0x22 , 0xe5 , 0x1f , 0x45 , 0x14 }; // little endian
135+ std::vector<double > result_values;
136+ REQUIRE (p.parseMessage (0x21d , data, result_values) == libdbc::Message::ParseSignalsStatus::Success);
137+ REQUIRE (result_values.size () == 4 );
138+ REQUIRE (Catch::Approx (result_values.at (0 )) == 99.92 );
139+ REQUIRE (Catch::Approx (result_values.at (1 )) == 88.67 );
140+ REQUIRE (Catch::Approx (result_values.at (2 )) == 81.65 );
141+ REQUIRE (Catch::Approx (result_values.at (3 )) == 11.89 );
142+ }
143+
144+ TEST_CASE (" Parse Message big endian" ) {
145+ const auto * filename = std::tmpnam (NULL );
146+ create_tmp_dbc_with (filename, R"( BO_ 541 STATUS: 8 DEVICE1
147+ SG_ Temperature : 48|16@0+ (0.01,-40) [-40|125] "C" DEVICE1
148+ SG_ SOH : 0|16@0+ (0.01,0) [0|100] "%" DEVICE1
149+ SG_ SOE : 32|16@0+ (0.01,0) [0|100] "%" DEVICE1
150+ SG_ SOC : 16|16@0+ (0.01,0) [0|100] "%" DEVICE1)" );
151+
152+ libdbc::DbcParser p;
153+ p.parse_file (filename);
154+
155+ std::vector<uint8_t > data{0x27 , 0x08 , 0x22 , 0xa3 , 0x1f , 0xe5 , 0x14 , 0x45 }; // big endian
156+ std::vector<double > result_values;
157+ REQUIRE (p.parseMessage (0x21d , data, result_values) == libdbc::Message::ParseSignalsStatus::ErrorBigEndian);
158+ // Big endian not yet supported
159+ // REQUIRE(result_values.size() == 4);
160+ // REQUIRE(Catch::Approx(result_values.at(0)) == 99.92);
161+ // REQUIRE(Catch::Approx(result_values.at(1)) == 88.67);
162+ // REQUIRE(Catch::Approx(result_values.at(2)) == 81.65);
163+ // REQUIRE(Catch::Approx(result_values.at(3)) == 11.89);
164+ }
165+
122166// TODO: create also for big endian!
0 commit comments