blob: eb82fbe1a8f53f16d1e09628477a9e93a019d255 [file] [log] [blame]
// Copyright 2016 The Chromium 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 "mojo/edk/platform/test_stopwatch.h"
#include "mojo/edk/platform/thread_utils.h"
#include "mojo/edk/system/test/timeouts.h"
#include "testing/gtest/include/gtest/gtest.h"
using mojo::system::test::EpsilonTimeout;
namespace mojo {
namespace platform {
namespace test {
namespace {
TEST(TestStopwatchTest, Basic) {
Stopwatch s;
s.Start();
MojoDeadline e1 = s.Elapsed();
EXPECT_LT(e1, EpsilonTimeout());
MojoDeadline e2 = s.Elapsed();
EXPECT_LT(e2, e1 + EpsilonTimeout());
ThreadSleep(2 * EpsilonTimeout());
MojoDeadline e3 = s.Elapsed();
EXPECT_GT(e3, e2 + EpsilonTimeout());
EXPECT_LT(e3, e2 + 3 * EpsilonTimeout());
// Calling |Start()| again resets everything.
s.Start();
MojoDeadline e4 = s.Elapsed();
EXPECT_LT(e4, EpsilonTimeout());
}
} // namespace
} // namespace test
} // namespace platform
} // namespace mojo