Added encode API for SetTID cmd

Added encode API for SetTID command(0x01) which is defined in
DSP0240 Version 1.1.0 sec:8.1.1.

Signed-off-by: Gilbert Chen <gilbertc@nvidia.com>
Change-Id: Ia2d5c76e8ad545e794c72f5963556f1f0e6357fc
diff --git a/tests/libpldm_base_test.cpp b/tests/libpldm_base_test.cpp
index b3b1383..cb36663 100644
--- a/tests/libpldm_base_test.cpp
+++ b/tests/libpldm_base_test.cpp
@@ -758,3 +758,37 @@
     rc = encode_cc_only_resp(0, 1, 2, 3, nullptr);
     EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
 }
+
+TEST(SetTID, testGoodEncodeRequest)
+{
+    uint8_t instanceId = 0;
+    uint8_t tid = 0x01;
+    std::array<uint8_t, sizeof(pldm_msg_hdr) + sizeof(tid)> requestMsg{};
+    auto request = reinterpret_cast<pldm_msg*>(requestMsg.data());
+
+    auto rc = encode_set_tid_req(instanceId, tid, request);
+    ASSERT_EQ(rc, PLDM_SUCCESS);
+
+    EXPECT_EQ(request->hdr.command, PLDM_SET_TID);
+    EXPECT_EQ(request->hdr.type, PLDM_BASE);
+    EXPECT_EQ(request->hdr.request, 1);
+    EXPECT_EQ(request->hdr.datagram, 0);
+    EXPECT_EQ(request->hdr.instance_id, instanceId);
+    EXPECT_EQ(0, memcmp(request->payload, &tid, sizeof(tid)));
+}
+
+TEST(SetTID, testBadEncodeRequest)
+{
+    uint8_t tid = 0x01;
+    std::array<uint8_t, sizeof(pldm_msg_hdr) + sizeof(tid)> requestMsg{};
+    auto request = reinterpret_cast<pldm_msg*>(requestMsg.data());
+
+    auto rc = encode_set_tid_req(0, tid, nullptr);
+    EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
+
+    rc = encode_set_tid_req(0, 0, request);
+    EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
+
+    rc = encode_set_tid_req(0, 0xff, request);
+    EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
+}