diff --git a/tests/libpldm_pdr_test.cpp b/tests/libpldm_pdr_test.cpp
index 0f9667e..c2711c6 100644
--- a/tests/libpldm_pdr_test.cpp
+++ b/tests/libpldm_pdr_test.cpp
@@ -570,7 +570,9 @@
 {
     auto repo = pldm_pdr_init();
 
-    auto handle = pldm_pdr_add_fru_record_set(repo, 1, 10, 1, 0, 100, 0);
+    uint32_t handle = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_fru_record_set_check(repo, 1, 10, 1, 0, 100, &handle), 0);
     EXPECT_EQ(handle, 1u);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u);
     EXPECT_EQ(pldm_pdr_get_repo_size(repo),
@@ -596,7 +598,9 @@
     EXPECT_EQ(fru->container_id, htole16(100));
     outData = nullptr;
 
-    handle = pldm_pdr_add_fru_record_set(repo, 2, 11, 2, 1, 101, 0);
+    handle = 0;
+    EXPECT_EQ(
+        pldm_pdr_add_fru_record_set_check(repo, 2, 11, 2, 1, 101, &handle), 0);
     EXPECT_EQ(handle, 2u);
     EXPECT_EQ(pldm_pdr_get_record_count(repo), 2u);
     EXPECT_EQ(pldm_pdr_get_repo_size(repo),
@@ -648,9 +652,15 @@
     uint16_t entityType{};
     uint16_t entityInstanceNum{};
     uint16_t containerId{};
-    auto first = pldm_pdr_add_fru_record_set(repo, 1, 1, 1, 0, 100, 1);
-    auto second = pldm_pdr_add_fru_record_set(repo, 1, 2, 1, 1, 100, 2);
-    auto third = pldm_pdr_add_fru_record_set(repo, 1, 3, 1, 2, 100, 3);
+    uint32_t first = 1;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(repo, 1, 1, 1, 0, 100, &first),
+              0);
+    uint32_t second = 2;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(repo, 1, 2, 1, 1, 100, &second),
+              0);
+    uint32_t third = 3;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(repo, 1, 3, 1, 2, 100, &third),
+              0);
     EXPECT_EQ(first, pldm_pdr_get_record_handle(
                          repo, pldm_pdr_fru_record_set_find_by_rsi(
                                    repo, 1, &terminusHdl, &entityType,
@@ -1678,9 +1688,12 @@
 
     auto l1 = pldm_entity_association_tree_add(tree, &entities[1], 63, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
-    auto first = pldm_pdr_add_fru_record_set(
-        repo, 1, 1, entities[1].entity_type, entities[1].entity_instance_num,
-        entities[1].entity_container_id, 1);
+    uint32_t first = 1;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(
+                  repo, 1, 1, entities[1].entity_type,
+                  entities[1].entity_instance_num,
+                  entities[1].entity_container_id, &first),
+              0);
     EXPECT_NE(l1, nullptr);
     EXPECT_EQ(entities[1].entity_instance_num, 63);
     EXPECT_EQ(first, pldm_pdr_get_record_handle(
@@ -1692,9 +1705,12 @@
 
     auto l2 = pldm_entity_association_tree_add(tree, &entities[2], 37, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
-    auto second = pldm_pdr_add_fru_record_set(
-        repo, 1, 2, entities[2].entity_type, entities[2].entity_instance_num,
-        entities[2].entity_container_id, 2);
+    uint32_t second = 2;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(
+                  repo, 1, 2, entities[2].entity_type,
+                  entities[2].entity_instance_num,
+                  entities[2].entity_container_id, &second),
+              0);
     EXPECT_NE(l2, nullptr);
     EXPECT_EQ(entities[2].entity_instance_num, 37);
     EXPECT_EQ(second, pldm_pdr_get_record_handle(
@@ -1706,9 +1722,12 @@
 
     auto l3 = pldm_entity_association_tree_add(tree, &entities[3], 44, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
-    auto third = pldm_pdr_add_fru_record_set(
-        repo, 1, 3, entities[3].entity_type, entities[3].entity_instance_num,
-        entities[3].entity_container_id, 3);
+    uint32_t third = 3;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(
+                  repo, 1, 3, entities[3].entity_type,
+                  entities[3].entity_instance_num,
+                  entities[3].entity_container_id, &third),
+              0);
     EXPECT_NE(l3, nullptr);
     EXPECT_EQ(entities[3].entity_instance_num, 44);
     EXPECT_EQ(third, pldm_pdr_get_record_handle(
@@ -1720,9 +1739,12 @@
 
     auto l4 = pldm_entity_association_tree_add(tree, &entities[4], 89, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
-    auto fourth = pldm_pdr_add_fru_record_set(
-        repo, 1, 4, entities[4].entity_type, entities[4].entity_instance_num,
-        entities[4].entity_container_id, 4);
+    uint32_t fourth = 4;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(
+                  repo, 1, 4, entities[4].entity_type,
+                  entities[4].entity_instance_num,
+                  entities[4].entity_container_id, &fourth),
+              0);
     EXPECT_NE(l4, nullptr);
     EXPECT_EQ(entities[4].entity_instance_num, 89);
     EXPECT_EQ(fourth, pldm_pdr_get_record_handle(
@@ -1734,9 +1756,12 @@
 
     auto l5 = pldm_entity_association_tree_add(tree, &entities[5], 0xFFFF, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
-    auto fifth = pldm_pdr_add_fru_record_set(
-        repo, 1, 5, entities[5].entity_type, entities[5].entity_instance_num,
-        entities[5].entity_container_id, 5);
+    uint32_t fifth = 5;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(
+                  repo, 1, 5, entities[5].entity_type,
+                  entities[5].entity_instance_num,
+                  entities[5].entity_container_id, &fifth),
+              0);
     EXPECT_NE(l5, nullptr);
     EXPECT_EQ(entities[5].entity_instance_num, 90);
     EXPECT_EQ(fifth, pldm_pdr_get_record_handle(
@@ -1752,9 +1777,12 @@
 
     auto l7 = pldm_entity_association_tree_add(tree, &entities[7], 100, l1,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
-    auto seventh = pldm_pdr_add_fru_record_set(
-        repo, 1, 7, entities[7].entity_type, entities[7].entity_instance_num,
-        entities[7].entity_container_id, 7);
+    uint32_t seventh = 7;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(
+                  repo, 1, 7, entities[7].entity_type,
+                  entities[7].entity_instance_num,
+                  entities[7].entity_container_id, &seventh),
+              0);
     EXPECT_NE(l7, nullptr);
     EXPECT_EQ(entities[7].entity_instance_num, 100);
     EXPECT_EQ(seventh, pldm_pdr_get_record_handle(
@@ -1766,9 +1794,12 @@
 
     auto l8 = pldm_entity_association_tree_add(tree, &entities[8], 100, l2,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
-    auto eighth = pldm_pdr_add_fru_record_set(
-        repo, 1, 8, entities[8].entity_type, entities[8].entity_instance_num,
-        entities[8].entity_container_id, 8);
+    uint32_t eighth = 8;
+    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(
+                  repo, 1, 8, entities[8].entity_type,
+                  entities[8].entity_instance_num,
+                  entities[8].entity_container_id, &eighth),
+              0);
     EXPECT_NE(l8, nullptr);
     EXPECT_EQ(entities[8].entity_instance_num, 100);
     EXPECT_EQ(eighth, pldm_pdr_get_record_handle(
