// Copyright 2016 The Fuchsia Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <inttypes.h>

#include <lib/zx/time.h>
#include <zircon/syscalls.h>
#include <zxtest/zxtest.h>

namespace {

// Calculation of elapsed time using ticks.
TEST(TicksTest, ElapsedTimeUsingTicks) {
  zx::ticks ticks_per_second = zx::ticks::per_second();
  ASSERT_GT(ticks_per_second, zx::ticks(0), "Invalid ticks per second");

  zx::ticks start = zx::ticks::now();
  zx::ticks end = zx::ticks::now();
  ASSERT_GE(end, start, "Ticks went backwards");

  double seconds =
      static_cast<double>((end - start).get()) / static_cast<double>(ticks_per_second.get());
  ASSERT_GE(seconds, 0, "Time went backwards");
}

}  // namespace
