std::string DoTestFrontBack(size_t n) { TCounter::Reset(); { constexpr int M = 10; TCounter data[M]; TList<TCounter, std::allocator<TCounter>> lst; for (size_t i = 0; i < n; ++i) { lst.push_back(TCounter(data[i % M])); } if (lst.size() != n) return "lst.size(): wrong answer"; if (lst.back().GetData() != data[(n + M - 1) % M].GetData()) return "lst.back(): wrong answer"; if (lst.front().GetData() != data[0].GetData()) return "lst.front(): wrong answer"; while (!lst.empty()) lst.pop_back(); for (size_t i = 0; i < n; ++i) { lst.push_front(TCounter(data[i % M])); } if (lst.size() != n) return "lst.size(): wrong answer"; if (lst.front().GetData() != data[(n + M - 1) % M].GetData()) return "lst.back(): wrong answer"; if (lst.back().GetData() != data[0].GetData()) return "lst.front(): wrong answer"; while (!lst.empty()) lst.pop_front(); } TCounter::CheckTotalOperationsCount(n * 10 + 100, n + 100); return TCounter::GetAllErrors(); }
int TimerMaster::CascadeTimers(TimerVec *v, int index) { TList *l = &(*v)[index]; for (TList::iterator it = l->begin(); it != l->end();) { TimerSlot *s = &*it; ++it; s->unlink(); InternalAddTimer(s, s->weak_timer, s->jiffies); } CHECK(l->empty()); return index; }
std::string DoTestInsertRemoveEmpty(size_t n) { TCounter::Reset(); { TList<TCounter, std::allocator<TCounter>> lst; for (size_t i = 0; i < n; ++i) { TList<TCounter, std::allocator<TCounter>>::iterator it = lst.begin(); for (size_t j = 0; j < i / 2; ++j) ++it; lst.insert(it, TCounter()); } if (lst.size() != n) return "lst.size(): wrong answer"; while (!lst.empty()) lst.erase(lst.begin()); } TCounter::CheckTotalOperationsCount(n * 5 + 100, n + 100); return TCounter::GetAllErrors(); }