rusefi/unit_tests/tests/lua/test_lua_dbc.cpp

36 lines
1.4 KiB
C++

#include "pch.h"
#include "rusefi_lua.h"
#include "lua_lib.h"
// `motorolaMagicFromDbc` function calculates data payload LST (Least Significant Bit) index from the corresponding
// `Bit start | length` values in DBC file. The following test checks that for some sample DBC file
// `motorolaMagicFromDbc` function returns values that match pictures we see if we open this DBC file with `Kvazer
// Database Editor` program.
TEST(dbcMotorola, testFromDbc) {
ASSERT_EQ(24, motorolaMagicFromDbc(27, 4));
ASSERT_EQ(24, motorolaMagicFromDbc(30, 7));
ASSERT_EQ(24, motorolaMagicFromDbc(31, 8));
ASSERT_EQ(24, motorolaMagicFromDbc(17, 10));
ASSERT_EQ(24, motorolaMagicFromDbc(16, 9));
ASSERT_EQ(22, motorolaMagicFromDbc(13, 8));
ASSERT_EQ(22, motorolaMagicFromDbc(14, 9));
ASSERT_EQ(23, motorolaMagicFromDbc(14, 8));
}
TEST(dbcMotorola, accessRange) {
uint8_t data[] = { 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00};
EXPECT_EQ(getBitRangeMoto(data, 17, 10), 0x03FF);
EXPECT_EQ(getBitRangeLsb(data, 16, 2), 3);
EXPECT_EQ(getBitRangeLsb(data, 24, 8), 0xFF);
setBitRangeMoto(data, 17, 10, 0x0234);
EXPECT_THAT(data, testing::ElementsAre(0x00, 0x00, 0x02, 0x34, 0x00, 0x00, 0x00, 0x00));
EXPECT_EQ(getBitRangeMoto(data, 17, 10), 0x0234);
EXPECT_EQ(getBitRangeLsb(data, 16, 2), 2);
EXPECT_EQ(getBitRangeLsb(data, 24, 8), 0x34);
}