Exemplo n.º 1
0
Arquivo: 03.cpp Projeto: filaPro/my
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();
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
Arquivo: 03.cpp Projeto: filaPro/my
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();
}