Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 41 additions & 2 deletions test/core_network_management_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -356,12 +356,49 @@ TEST_F(CoreTest, SimilarControlFunctions)

// Make a partner that is a fuel system
// Using a less common function to avoid interfering with other tests when not running under CTest

const isobus::NAMEFilter filterFuelSystem(isobus::NAME::NAMEParameters::FunctionCode, static_cast<std::uint8_t>(isobus::NAME::Function::FuelSystem));
const std::vector<isobus::NAMEFilter> nameFilters = { filterFuelSystem };
auto TestPartner = isobus::CANNetworkManager::CANNetwork.create_partnered_control_function(0, nameFilters);
const isobus::NAMEFilter filterEcuInstance(isobus::NAME::NAMEParameters::EcuInstance, 0);
const std::vector<isobus::NAMEFilter> nameFilters = { filterFuelSystem, filterEcuInstance };

auto TestPartner = isobus::CANNetworkManager::CANNetwork.create_partnered_control_function(0, nameFilters);
// Quick test to make sure partner is working
EXPECT_EQ(1, TestPartner->get_number_name_filters_with_parameter_type(isobus::NAME::NAMEParameters::FunctionCode));
EXPECT_EQ(1, TestPartner->get_number_name_filters_with_parameter_type(isobus::NAME::NAMEParameters::EcuInstance));
EXPECT_EQ(0, TestPartner->get_number_name_filters_with_parameter_type(isobus::NAME::NAMEParameters::ManufacturerCode));

NAME partiallyMatchingNAME(0);
partiallyMatchingNAME.set_function_code(static_cast<std::uint8_t>(isobus::NAME::Function::FuelSystem));
partiallyMatchingNAME.set_ecu_instance(1);

EXPECT_FALSE(TestPartner->check_matches_name(partiallyMatchingNAME));

isobus::NAME::NAMEParameters filterParameter = isobus::NAME::NAMEParameters::IdentityNumber;
std::uint32_t filterValue = 0;

EXPECT_TRUE(TestPartner->get_name_filter_parameter(0, filterParameter, filterValue));
EXPECT_EQ(isobus::NAME::NAMEParameters::FunctionCode, filterParameter);
EXPECT_EQ(static_cast<std::uint8_t>(isobus::NAME::Function::FuelSystem), filterValue);

filterParameter = isobus::NAME::NAMEParameters::IdentityNumber;
filterValue = 0;

EXPECT_TRUE(TestPartner->get_name_filter_parameter(1, filterParameter, filterValue));
EXPECT_EQ(isobus::NAME::NAMEParameters::EcuInstance, filterParameter);
EXPECT_EQ(0, filterValue);

filterParameter = isobus::NAME::NAMEParameters::IdentityNumber;
filterValue = 0xFFFFFFFF;

EXPECT_FALSE(TestPartner->get_name_filter_parameter(TestPartner->get_number_name_filters(), filterParameter, filterValue));
EXPECT_EQ(isobus::NAME::NAMEParameters::IdentityNumber, filterParameter);
EXPECT_EQ(0xFFFFFFFF, filterValue);

const std::vector<isobus::NAMEFilter> emptyNameFilters;
auto partnerWithoutFilters = isobus::CANNetworkManager::CANNetwork.create_partnered_control_function(0, emptyNameFilters);

EXPECT_EQ(0, partnerWithoutFilters->get_number_name_filters());
EXPECT_FALSE(partnerWithoutFilters->check_matches_name(NAME(0)));

// Request the address claim PGN
CANNetworkManager::CANNetwork.process_receive_can_message_frame(test_helpers::create_message_frame_pgn_request(
Expand Down Expand Up @@ -422,5 +459,7 @@ TEST_F(CoreTest, SimilarControlFunctions)

// Partner should never change
EXPECT_EQ(TestPartner->get_NAME().get_full_name(), 0xa0000F000425e9f8);

CANNetworkManager::CANNetwork.deactivate_control_function(partnerWithoutFilters);
CANNetworkManager::CANNetwork.deactivate_control_function(TestPartner);
}
14 changes: 14 additions & 0 deletions test/tc_client_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1408,6 +1408,13 @@ bool value_command_callback(std::uint16_t element,
return true;
}

static bool wrongPGNCallbackCalled = false;

void wrong_pgn_callback(const CANMessage &, void *)
{
wrongPGNCallbackCalled = true;
}

TEST_F(TaskControllerClientTest, CallbackTests)
{
VirtualCANPlugin serverTC;
Expand Down Expand Up @@ -1594,6 +1601,10 @@ TEST_F(TaskControllerClientTest, CallbackTests)
// Test time interval measurement commands
interfaceUnderTest.add_request_value_callback(request_value_command_callback, nullptr);
interfaceUnderTest.add_value_command_callback(value_command_callback, nullptr);

wrongPGNCallbackCalled = false;
TestPartnerTC->add_parameter_group_number_callback(0xCC00, wrong_pgn_callback, nullptr, internalECU);

// Create a command
testFrame.identifier = 0x18CB86F7;
testFrame.data[0] = 0xA4;
Expand Down Expand Up @@ -1636,6 +1647,7 @@ TEST_F(TaskControllerClientTest, CallbackTests)
CANNetworkManager::CANNetwork.update();
interfaceUnderTest.update();

EXPECT_FALSE(wrongPGNCallbackCalled);
EXPECT_EQ(true, valueRequested);
EXPECT_EQ(requestedDDI, 0x3919);

Expand Down Expand Up @@ -1744,6 +1756,8 @@ TEST_F(TaskControllerClientTest, CallbackTests)
EXPECT_EQ(requestedDDI, 0x03);
EXPECT_EQ(requestedElement, 0x4);

TestPartnerTC->remove_parameter_group_number_callback(0xCC00, wrong_pgn_callback, nullptr, internalECU);

CANHardwareInterface::stop();

CANNetworkManager::CANNetwork.deactivate_control_function(TestPartnerTC);
Expand Down
Loading