|  | // Copyright 2018 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 <lib/async-testing/dispatcher_stub.h> | 
|  | #include <lib/async/time.h> | 
|  |  | 
|  | #include <zxtest/zxtest.h> | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | class FakeClockAsync : public async::DispatcherStub { | 
|  | public: | 
|  | zx::time Now() override { return current_time_; } | 
|  | void SetTime(zx::time t) { current_time_ = t; } | 
|  |  | 
|  | private: | 
|  | zx::time current_time_; | 
|  | }; | 
|  |  | 
|  | TEST(TimeTests, time_telling_test) { | 
|  | FakeClockAsync dispatcher; | 
|  | EXPECT_EQ(0u, dispatcher.Now().get()); | 
|  | EXPECT_EQ(0u, async_now(&dispatcher)); | 
|  |  | 
|  | dispatcher.SetTime(zx::time(4u)); | 
|  | EXPECT_EQ(4u, dispatcher.Now().get()); | 
|  | EXPECT_EQ(4u, async_now(&dispatcher)); | 
|  |  | 
|  | dispatcher.SetTime(zx::time(1853u)); | 
|  | EXPECT_EQ(1853u, dispatcher.Now().get()); | 
|  | EXPECT_EQ(1853u, async_now(&dispatcher)); | 
|  | } | 
|  |  | 
|  | }  // namespace |