aboutsummaryrefslogblamecommitdiff
path: root/test/timer.cc
blob: 4874d80d90ea61eb3b991a1dc4d07b61337b9712 (plain) (tree)
1
2
3
4
5
6
7
8

                   
                  


                 
                 
 


                                                                              



                        
                                    

                       


                                                       
              


                        
                                    

                       



                                                       







                             


                                                       
              


           
#include <timer.h>
#include <unistd.h>
#include <cassert>
#include <cstdio>

int main() {
  timer::timer t;

  const auto kShowTime = [&t]() {
    std::fprintf(stderr, "usec=%f msec=%f sec=%f\n", t.as_usec(), t.as_msec(),
                 t.as_sec());
  };

  {
    puts("Sleep 100ms");
    const timer::scoped_timer kS{t};
    usleep(100 * 1000);
  }
  assert(100000 < t.as_usec() && t.as_usec() < 102000);
  assert(100 < t.as_msec() && t.as_msec() < 102);
  assert(0.100 < t.as_sec() && t.as_sec() < 0.102);
  kShowTime();

  {
    puts("Sleep 500ms");
    const timer::scoped_timer kS{t};
    usleep(500 * 1000);
  }
  kShowTime();
  assert(600000 < t.as_usec() && t.as_usec() < 603000);
  assert(600 < t.as_msec() && t.as_msec() < 603);
  assert(0.600 < t.as_sec() && t.as_sec() < 0.603);
  kShowTime();

  t.reset();
  {
    puts("Sleep 200ms");
    timer::scoped_timer s{t};
    usleep(200 * 1000);
  }
  assert(200000 < t.as_usec() && t.as_usec() < 202000);
  assert(200 < t.as_msec() && t.as_msec() < 202);
  assert(0.200 < t.as_sec() && t.as_sec() < 0.202);
  kShowTime();

  return 0;
}