chromium/ash/keyboard/ui/notification_manager_unittest.cc

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ash/keyboard/ui/notification_manager.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace keyboard {

TEST(NotificationManagerTest, DoesNotSendIfSameAsInitialState) {
  NotificationManager manager;

  EXPECT_FALSE(manager.ShouldSendVisibilityNotification(false));
  EXPECT_FALSE(manager.ShouldSendVisualBoundsNotification(gfx::Rect()));
  EXPECT_FALSE(manager.ShouldSendOccludedBoundsNotification(gfx::Rect()));
  EXPECT_FALSE(
      manager.ShouldSendWorkspaceDisplacementBoundsNotification(gfx::Rect()));
}

TEST(NotificationManagerTest, ConsolidatesVisibilityChanges) {
  NotificationManager manager;

  EXPECT_TRUE(manager.ShouldSendVisibilityNotification(true));
  EXPECT_FALSE(manager.ShouldSendVisibilityNotification(true));
  EXPECT_TRUE(manager.ShouldSendVisibilityNotification(false));
}

TEST(NotificationManagerTest, ConsolidatesVisualBoundsChanges) {
  NotificationManager manager;

  EXPECT_TRUE(
      manager.ShouldSendVisualBoundsNotification(gfx::Rect(10, 10, 10, 10)));
  EXPECT_FALSE(
      manager.ShouldSendVisualBoundsNotification(gfx::Rect(10, 10, 10, 10)));
  EXPECT_TRUE(
      manager.ShouldSendVisualBoundsNotification(gfx::Rect(10, 10, 20, 20)));
  // This is technically empty
  EXPECT_TRUE(
      manager.ShouldSendVisualBoundsNotification(gfx::Rect(0, 0, 0, 100)));
  // This is still empty
  EXPECT_FALSE(
      manager.ShouldSendVisualBoundsNotification(gfx::Rect(0, 0, 100, 0)));
}

TEST(NotificationManagerTest, ConsolidatesOccludedBoundsChanges) {
  NotificationManager manager;

  // Still empty
  EXPECT_FALSE(
      manager.ShouldSendOccludedBoundsNotification(gfx::Rect(0, 0, 10, 0)));

  EXPECT_TRUE(
      manager.ShouldSendOccludedBoundsNotification(gfx::Rect(0, 0, 10, 10)));
  // Different bounds, same size
  EXPECT_TRUE(
      manager.ShouldSendOccludedBoundsNotification(gfx::Rect(30, 30, 10, 10)));
}

}  // namespace keyboard