diff --git a/tests/dsp/pdr.cpp b/tests/dsp/pdr.cpp
index 0894a3f..9ef8b14 100644
--- a/tests/dsp/pdr.cpp
+++ b/tests/dsp/pdr.cpp
@@ -481,8 +481,7 @@
     auto repo = pldm_pdr_init();
 
     uint32_t handle = 0;
-    EXPECT_EQ(
-        pldm_pdr_add_fru_record_set_check(repo, 1, 10, 1, 0, 100, &handle), 0);
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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),
@@ -509,8 +508,7 @@
     outData = nullptr;
 
     handle = 0;
-    EXPECT_EQ(
-        pldm_pdr_add_fru_record_set_check(repo, 2, 11, 2, 1, 101, &handle), 0);
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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),
@@ -563,14 +561,11 @@
     uint16_t entityInstanceNum{};
     uint16_t containerId{};
     uint32_t first = 1;
-    EXPECT_EQ(pldm_pdr_add_fru_record_set_check(repo, 1, 1, 1, 0, 100, &first),
-              0);
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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);
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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(pldm_pdr_add_fru_record_set(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,
@@ -1646,10 +1641,10 @@
     auto l1 = pldm_entity_association_tree_add(tree, &entities[1], 63, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     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),
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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);
@@ -1663,10 +1658,10 @@
     auto l2 = pldm_entity_association_tree_add(tree, &entities[2], 37, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     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),
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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);
@@ -1680,10 +1675,10 @@
     auto l3 = pldm_entity_association_tree_add(tree, &entities[3], 44, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     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),
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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);
@@ -1697,10 +1692,10 @@
     auto l4 = pldm_entity_association_tree_add(tree, &entities[4], 89, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     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),
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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);
@@ -1714,10 +1709,10 @@
     auto l5 = pldm_entity_association_tree_add(tree, &entities[5], 0xffff, node,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     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),
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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);
@@ -1735,10 +1730,10 @@
     auto l7 = pldm_entity_association_tree_add(tree, &entities[7], 100, l1,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     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),
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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);
@@ -1752,10 +1747,10 @@
     auto l8 = pldm_entity_association_tree_add(tree, &entities[8], 100, l2,
                                                PLDM_ENTITY_ASSOCIAION_PHYSICAL);
     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),
+    EXPECT_EQ(pldm_pdr_add_fru_record_set(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);
