brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 58cc530 Raw
61 lines · cpp
1//===-- ProgressMeterTest.cpp -----------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "ProgressMeter.h"10#include "gmock/gmock.h"11#include "gtest/gtest.h"12 13namespace llvm {14namespace exegesis {15 16namespace {17 18struct PreprogrammedClock {19  using duration = std::chrono::seconds;20  using rep = duration::rep;21  using period = duration::period;22  using time_point = std::chrono::time_point<PreprogrammedClock, duration>;23 24  static constexpr bool is_steady = true;25 26  static time_point now() noexcept;27};28 29static int CurrentTimePoint = 0;30auto Pt(int i) {31  return PreprogrammedClock::time_point(PreprogrammedClock::duration(i));32}33static const std::array<const PreprogrammedClock::time_point, 10> TimePoints = {34    Pt(0),  Pt(5),  Pt(6),  Pt(20), Pt(20),35    Pt(35), Pt(37), Pt(75), Pt(77), Pt(100)};36 37PreprogrammedClock::time_point PreprogrammedClock::now() noexcept {38  time_point p = TimePoints[CurrentTimePoint];39  ++CurrentTimePoint;40  return p;41}42 43TEST(ProgressMeterTest, Integration) {44  CurrentTimePoint = 0;45  std::string TempString;46  raw_string_ostream SS(TempString);47  ProgressMeter<PreprogrammedClock> m(5, SS);48  for (int i = 0; i != 5; ++i)49    decltype(m)::ProgressMeterStep s(&m);50  ASSERT_EQ("Processing...  20%, ETA 00:20\n"51            "Processing...  40%, ETA 00:29\n"52            "Processing...  60%, ETA 00:23\n"53            "Processing...  80%, ETA 00:18\n"54            "Processing... 100%, ETA 00:00\n",55            TempString);56}57 58} // namespace59} // namespace exegesis60} // namespace llvm61