Flutter Windows Embedder
settings_plugin_unittests.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
6 
7 #include "flutter/fml/macros.h"
9 #include "flutter/shell/platform/windows/testing/test_binary_messenger.h"
10 #include "gmock/gmock.h"
11 #include "gtest/gtest.h"
12 
13 namespace flutter {
14 namespace testing {
15 
16 namespace {
17 
18 class MockSettingsPlugin : public SettingsPlugin {
19  public:
20  explicit MockSettingsPlugin(BinaryMessenger* messenger,
21  TaskRunner* task_runner)
22  : SettingsPlugin(messenger, task_runner) {}
23 
24  virtual ~MockSettingsPlugin() = default;
25 
26  bool is_high_contrast() { return is_high_contrast_; }
27 
28  // |SettingsPlugin|
29  MOCK_METHOD(bool, GetAlwaysUse24HourFormat, (), (override));
30  MOCK_METHOD(float, GetTextScaleFactor, (), (override));
31  MOCK_METHOD(PlatformBrightness, GetPreferredBrightness, (), (override));
32 
33  MOCK_METHOD(void, WatchPreferredBrightnessChanged, (), (override));
34  MOCK_METHOD(void, WatchTextScaleFactorChanged, (), (override));
35 
36  private:
37  FML_DISALLOW_COPY_AND_ASSIGN(MockSettingsPlugin);
38 };
39 
40 } // namespace
41 
42 TEST(SettingsPluginTest, SendSettingsSendsMessage) {
43  bool message_is_sent = false;
44  TestBinaryMessenger messenger(
45  [&message_is_sent](const std::string& channel, const uint8_t* message,
46  size_t message_size,
47  BinaryReply reply) { message_is_sent = true; });
48  ::testing::NiceMock<MockSettingsPlugin> settings_plugin(&messenger, nullptr);
49 
50  settings_plugin.SendSettings();
51 
52  EXPECT_TRUE(message_is_sent);
53 }
54 
55 TEST(SettingsPluginTest, SendSettingsGetsSettings) {
56  TestBinaryMessenger messenger([](const std::string& channel,
57  const uint8_t* message, size_t message_size,
58  BinaryReply reply) {});
59  ::testing::NiceMock<MockSettingsPlugin> settings_plugin(&messenger, nullptr);
60 
61  EXPECT_CALL(settings_plugin, GetAlwaysUse24HourFormat).Times(1);
62  EXPECT_CALL(settings_plugin, GetTextScaleFactor).Times(1);
63  EXPECT_CALL(settings_plugin, GetPreferredBrightness).Times(1);
64 
65  settings_plugin.SendSettings();
66 }
67 
68 TEST(SettingsPluginTest, StartWatchingStartsWatchingChanges) {
69  TestBinaryMessenger messenger([](const std::string& channel,
70  const uint8_t* message, size_t message_size,
71  BinaryReply reply) {});
72  ::testing::NiceMock<MockSettingsPlugin> settings_plugin(&messenger, nullptr);
73 
74  EXPECT_CALL(settings_plugin, WatchPreferredBrightnessChanged).Times(1);
75  EXPECT_CALL(settings_plugin, WatchTextScaleFactorChanged).Times(1);
76 
77  settings_plugin.StartWatching();
78 }
79 
80 TEST(SettingsPluginTest, HighContrastModeHonored) {
81  int times = 0;
82  TestBinaryMessenger messenger(
83  [&times](const std::string& channel, const uint8_t* message,
84  size_t message_size, BinaryReply reply) {
85  ASSERT_EQ(channel, "flutter/settings");
86  times++;
87  });
88  ::testing::NiceMock<MockSettingsPlugin> settings_plugin(&messenger, nullptr);
89 
90  settings_plugin.UpdateHighContrastMode(true);
91  EXPECT_TRUE(settings_plugin.is_high_contrast());
92 
93  settings_plugin.UpdateHighContrastMode(false);
94  EXPECT_FALSE(settings_plugin.is_high_contrast());
95 
96  EXPECT_EQ(times, 2);
97 }
98 
99 } // namespace testing
100 } // namespace flutter
settings_plugin.h
flutter::BinaryReply
std::function< void(const uint8_t *reply, size_t reply_size)> BinaryReply
Definition: binary_messenger.h:17
flutter
Definition: accessibility_bridge_windows.cc:11
flutter::testing::TEST
TEST(AccessibilityBridgeWindows, GetParent)
Definition: accessibility_bridge_windows_unittests.cc:237
message
Win32Message message
Definition: keyboard_unittests.cc:137
task_runner.h