Index: third_party/WebKit/Source/platform/battery/BatteryStatusDispatcherTest.cpp |
diff --git a/third_party/WebKit/Source/platform/battery/BatteryStatusDispatcherTest.cpp b/third_party/WebKit/Source/platform/battery/BatteryStatusDispatcherTest.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b45803b522fa7922804be6c018dafee9abc5cdc5 |
--- /dev/null |
+++ b/third_party/WebKit/Source/platform/battery/BatteryStatusDispatcherTest.cpp |
@@ -0,0 +1,78 @@ |
+// Copyright 2014 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 "platform/battery/BatteryStatusDispatcher.h" |
+ |
+#include "platform/battery/BatteryStatus.h" |
+#include "platform/battery/BatteryStatusListener.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "wtf/Noncopyable.h" |
+#include "wtf/OwnPtr.h" |
+#include "wtf/PassOwnPtr.h" |
+ |
+namespace blink { |
+ |
+class MockBatteryStatusListener : public BatteryStatusListener { |
+ WTF_MAKE_NONCOPYABLE(MockBatteryStatusListener); |
+public: |
+ MockBatteryStatusListener() : m_didChangeBatteryStatus(false) { } |
+ |
+ void onUpdateBatteryStatus(const BatteryStatus& status) override |
+ { |
+ m_status = status; |
+ m_didChangeBatteryStatus = true; |
+ } |
+ |
+ const BatteryStatus& status() const { return m_status; } |
+ bool didChangeBatteryStatus() const { return m_didChangeBatteryStatus; } |
+ |
+private: |
+ bool m_didChangeBatteryStatus; |
+ BatteryStatus m_status; |
+}; |
+ |
+class BatteryStatusDispatcherTest : public testing::Test { |
+public: |
+ void updateBatteryStatus(const device::BatteryStatus& status) |
+ { |
+ device::BatteryStatusPtr statusPtr(device::BatteryStatus::New()); |
+ *statusPtr = status; |
+ m_dispatcher->onDidChange(std::move(statusPtr)); |
+ } |
+ |
+ const MockBatteryStatusListener& listener() const { return m_listener; } |
+ |
+protected: |
+ void SetUp() override |
+ { |
+ m_dispatcher = adoptPtr(new BatteryStatusDispatcher(&m_listener)); |
+ } |
+ |
+private: |
+ MockBatteryStatusListener m_listener; |
+ OwnPtr<BatteryStatusDispatcher> m_dispatcher; |
+}; |
+ |
+TEST_F(BatteryStatusDispatcherTest, UpdateListener) |
+{ |
+ // TODO(darin): This test isn't super interesting. It just exercises |
+ // conversion b/w device::BatteryStatus and blink::BatteryStatus. |
+ |
+ device::BatteryStatus status; |
+ status.charging = true; |
+ status.charging_time = 100; |
+ status.discharging_time = 200; |
+ status.level = 0.5; |
+ |
+ updateBatteryStatus(status); |
+ |
+ const BatteryStatus& receivedStatus = listener().status(); |
+ EXPECT_TRUE(listener().didChangeBatteryStatus()); |
+ EXPECT_EQ(status.charging, receivedStatus.charging()); |
+ EXPECT_EQ(status.charging_time, receivedStatus.chargingTime()); |
+ EXPECT_EQ(status.discharging_time, receivedStatus.dischargingTime()); |
+ EXPECT_EQ(status.level, receivedStatus.level()); |
+} |
+ |
+} // namespace blink |