Skip to content

Commit cdd6519

Browse files
committed
Add test
1 parent 096eb8b commit cdd6519

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

sycl/unittests/scheduler/MemObjCommandCleanup.cpp

+29-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
using namespace cl::sycl;
1313

14-
TEST_F(SchedulerTest, MemObjCommandCleanup) {
14+
TEST_F(SchedulerTest, MemObjCommandCleanupAllocaUsers) {
1515
MockScheduler MS;
1616
buffer<int, 1> BufA(range<1>(1));
1717
buffer<int, 1> BufB(range<1>(1));
@@ -51,3 +51,31 @@ TEST_F(SchedulerTest, MemObjCommandCleanup) {
5151
EXPECT_EQ(MockDirectUser->MDeps[0].MDepCommand, MockAllocaB.get());
5252
EXPECT_TRUE(IndirectUserDeleted);
5353
}
54+
55+
TEST_F(SchedulerTest, MemObjCommandCleanupAllocaDeps) {
56+
MockScheduler MS;
57+
buffer<int, 1> Buf(range<1>(1));
58+
detail::Requirement MockReq = getMockRequirement(Buf);
59+
std::vector<detail::Command *> AuxCmds;
60+
detail::MemObjRecord *MemObjRec = MS.getOrInsertMemObjRecord(
61+
detail::getSyclObjImpl(MQueue), &MockReq, AuxCmds);
62+
63+
// Create a fake alloca.
64+
detail::AllocaCommand *MockAllocaCmd =
65+
new detail::AllocaCommand(detail::getSyclObjImpl(MQueue), MockReq);
66+
MemObjRec->MAllocaCommands.push_back(MockAllocaCmd);
67+
68+
// Add another mock command and add MockAllocaCmd as its user.
69+
MockCommand DepCmd(detail::getSyclObjImpl(MQueue), MockReq);
70+
addEdge(MockAllocaCmd, &DepCmd, nullptr);
71+
72+
// Check that DepCmd.MUsers size reflect the dependency properly.
73+
ASSERT_EQ(DepCmd.MUsers.size(), 1U);
74+
ASSERT_EQ(DepCmd.MUsers.count(MockAllocaCmd), 1U);
75+
76+
MS.cleanupCommandsForRecord(MemObjRec);
77+
MS.removeRecordForMemObj(detail::getSyclObjImpl(Buf).get());
78+
79+
// Check that DepCmd has its MUsers field cleared.
80+
ASSERT_EQ(DepCmd.MUsers.size(), 0U);
81+
}

0 commit comments

Comments
 (0)