| #include <string.h> |
| |
| #include <array> |
| |
| #include "libpldm/base.h" |
| #include "libpldm/platform.h" |
| |
| #include <gtest/gtest.h> |
| |
| TEST(SetStateEffecterStates, testEncodeResponse) |
| { |
| pldm_msg response{}; |
| uint8_t completionCode = 0; |
| |
| std::array<uint8_t, PLDM_SET_STATE_EFFECTER_STATES_RESP_BYTES> |
| responseMsg{}; |
| |
| response.body.payload = responseMsg.data(); |
| response.body.payload_length = responseMsg.size(); |
| |
| auto rc = encode_set_state_effecter_states_resp(0, PLDM_SUCCESS, &response); |
| |
| ASSERT_EQ(rc, PLDM_SUCCESS); |
| ASSERT_EQ(completionCode, response.body.payload[0]); |
| } |
| |
| TEST(SetStateEffecterStates, testGoodDecodeRequest) |
| { |
| std::array<uint8_t, PLDM_SET_STATE_EFFECTER_STATES_REQ_BYTES> requestMsg{}; |
| |
| pldm_msg_payload request{}; |
| request.payload = requestMsg.data(); |
| request.payload_length = requestMsg.size(); |
| |
| uint16_t effecterId = 0x32; |
| uint8_t compEffecterCnt = 0x2; |
| |
| std::array<set_effecter_state_field, 8> stateField{}; |
| stateField[0] = {PLDM_REQUEST_SET, 3}; |
| stateField[1] = {PLDM_REQUEST_SET, 4}; |
| |
| uint16_t retEffecterId = 0; |
| uint8_t retCompEffecterCnt = 0; |
| |
| std::array<set_effecter_state_field, 8> retStateField{}; |
| |
| memcpy(request.payload, &effecterId, sizeof(effecterId)); |
| memcpy(request.payload + sizeof(effecterId), &compEffecterCnt, |
| sizeof(compEffecterCnt)); |
| memcpy(request.payload + sizeof(effecterId) + sizeof(compEffecterCnt), |
| &stateField, sizeof(stateField)); |
| |
| auto rc = decode_set_state_effecter_states_req( |
| &request, &retEffecterId, &retCompEffecterCnt, retStateField.data()); |
| |
| ASSERT_EQ(rc, PLDM_SUCCESS); |
| ASSERT_EQ(effecterId, retEffecterId); |
| ASSERT_EQ(retCompEffecterCnt, compEffecterCnt); |
| ASSERT_EQ(retStateField[0].set_request, stateField[0].set_request); |
| ASSERT_EQ(retStateField[0].effecter_state, stateField[0].effecter_state); |
| ASSERT_EQ(retStateField[1].set_request, stateField[1].set_request); |
| ASSERT_EQ(retStateField[1].effecter_state, stateField[1].effecter_state); |
| } |
| |
| TEST(SetStateEffecterStates, testBadDecodeRequest) |
| { |
| std::array<uint8_t, PLDM_SET_STATE_EFFECTER_STATES_REQ_BYTES> requestMsg{}; |
| |
| pldm_msg_payload request{}; |
| request.payload = requestMsg.data(); |
| request.payload_length = requestMsg.size(); |
| |
| auto rc = decode_set_state_effecter_states_req(&request, NULL, NULL, NULL); |
| |
| ASSERT_EQ(rc, PLDM_ERROR_INVALID_DATA); |
| } |