MCPcopy Create free account
hub / github.com/Simple-XX/SimpleKernel / test_fifo_dequeue

Function test_fifo_dequeue

tests/system_test/fifo_scheduler_test.cpp:102–144  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

100}
101
102auto test_fifo_dequeue() -> bool {
103 klog::Info("Running test_fifo_dequeue...");
104
105 FifoScheduler scheduler;
106
107 TaskControlBlock task1("Task1", 1, nullptr, nullptr);
108 task1.fsm.Receive(MsgSchedule{});
109 TaskControlBlock task2("Task2", 2, nullptr, nullptr);
110 task2.fsm.Receive(MsgSchedule{});
111 TaskControlBlock task3("Task3", 3, nullptr, nullptr);
112 task3.fsm.Receive(MsgSchedule{});
113 TaskControlBlock task4("Task4", 4, nullptr, nullptr);
114 task4.fsm.Receive(MsgSchedule{});
115
116 scheduler.Enqueue(&task1);
117 scheduler.Enqueue(&task2);
118 scheduler.Enqueue(&task3);
119 scheduler.Enqueue(&task4);
120
121 EXPECT_EQ(scheduler.GetQueueSize(), 4, "Queue size should be 4");
122
123 // 移除中间任务
124 scheduler.Dequeue(&task2);
125 EXPECT_EQ(scheduler.GetQueueSize(), 3,
126 "Queue size should be 3 after dequeue");
127
128 // 移除队首任务
129 scheduler.Dequeue(&task1);
130 EXPECT_EQ(scheduler.GetQueueSize(), 2,
131 "Queue size should be 2 after dequeue");
132
133 // 验证剩余任务顺序
134 auto* picked1 = scheduler.PickNext();
135 EXPECT_EQ(picked1, &task3, "First remaining task should be task3");
136
137 auto* picked2 = scheduler.PickNext();
138 EXPECT_EQ(picked2, &task4, "Second remaining task should be task4");
139
140 EXPECT_TRUE(scheduler.IsEmpty(), "Scheduler should be empty");
141
142 klog::Info("test_fifo_dequeue passed");
143 return true;
144}
145
146auto test_fifo_statistics() -> bool {
147 klog::Info("Running test_fifo_statistics...");

Callers 1

fifo_scheduler_testFunction · 0.85

Calls 7

InfoFunction · 0.85
ReceiveMethod · 0.80
EnqueueMethod · 0.45
GetQueueSizeMethod · 0.45
DequeueMethod · 0.45
PickNextMethod · 0.45
IsEmptyMethod · 0.45

Tested by

no test coverage detected