blob: f95cfec003765dbf730ec02a7fbd0531dcb66bd0 [file] [log] [blame]
// Copyright 2015 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/system/test/sleep.h"
#include "mojo/edk/system/test/stopwatch.h"
#include "mojo/edk/system/test/timeouts.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace mojo {
namespace system {
namespace test {
namespace {
TEST(SleepTest, Sleep) {
Stopwatch stopwatch;
stopwatch.Start();
Sleep(0ULL);
EXPECT_LT(stopwatch.Elapsed(), EpsilonTimeout());
stopwatch.Start();
Sleep(2 * EpsilonTimeout());
MojoDeadline elapsed = stopwatch.Elapsed();
EXPECT_GT(elapsed, EpsilonTimeout());
EXPECT_LT(elapsed, 3 * EpsilonTimeout());
}
TEST(SleepTest, SleepMilliseconds) {
Stopwatch stopwatch;
stopwatch.Start();
SleepMilliseconds(0U);
EXPECT_LT(stopwatch.Elapsed(), EpsilonTimeout());
const MojoDeadline kMillisecondsPerMicrosecond = 1000ULL;
unsigned epsilon_ms =
static_cast<unsigned>(EpsilonTimeout() / kMillisecondsPerMicrosecond);
stopwatch.Start();
SleepMilliseconds(2 * epsilon_ms);
MojoDeadline elapsed = stopwatch.Elapsed();
EXPECT_GT(elapsed, EpsilonTimeout());
EXPECT_LT(elapsed, 3 * EpsilonTimeout());
}
} // namespace
} // namespace test
} // namespace system
} // namespace mojo