chromium/ui/events/ozone/chromeos/cursor_controller_unittest.cc

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

#include "testing/gtest/include/gtest/gtest.h"
#include "ui/events/ozone/chromeos/cursor_controller.h"

namespace ui {

namespace {

const gfx::AcceleratedWidget kTestWindow = 1;

}  // namespace

class CursorControllerTest : public testing::Test {
 public:
  CursorControllerTest() {}

  CursorControllerTest(const CursorControllerTest&) = delete;
  CursorControllerTest& operator=(const CursorControllerTest&) = delete;

  ~CursorControllerTest() override {}

  void TearDown() override {
    ui::CursorController::GetInstance()->ClearCursorConfigForWindow(
        kTestWindow);
  }
};

TEST_F(CursorControllerTest, UnconfiguredIdentity) {
  ui::CursorController* cursor_controller = CursorController::GetInstance();

  // Check that unconfigured windows use identity.
  gfx::Vector2dF delta(2.f, 3.f);
  cursor_controller->ApplyCursorConfigForWindow(kTestWindow, &delta);
  EXPECT_FLOAT_EQ(2.f, delta.x());
  EXPECT_FLOAT_EQ(3.f, delta.y());
}

TEST_F(CursorControllerTest, ClearedIdentity) {
  ui::CursorController* cursor_controller = CursorController::GetInstance();

  // Check that configured & cleared windows use identity.
  cursor_controller->SetCursorConfigForWindow(
      kTestWindow, display::Display::ROTATE_180, 3.2f);
  cursor_controller->ClearCursorConfigForWindow(kTestWindow);
  gfx::Vector2dF delta(3.f, 5.f);
  cursor_controller->ApplyCursorConfigForWindow(kTestWindow, &delta);
  EXPECT_FLOAT_EQ(3.f, delta.x());
  EXPECT_FLOAT_EQ(5.f, delta.y());
}

TEST_F(CursorControllerTest, RotatedHighDpi) {
  ui::CursorController* cursor_controller = CursorController::GetInstance();

  // Check that 90deg rotated highdpi window transforms correctly.
  cursor_controller->SetCursorConfigForWindow(kTestWindow,
                                              display::Display::ROTATE_90, 2.f);
  gfx::Vector2dF delta(3.f, 5.f);
  cursor_controller->ApplyCursorConfigForWindow(kTestWindow, &delta);
  EXPECT_FLOAT_EQ(-10.f, delta.x());
  EXPECT_FLOAT_EQ(6.f, delta.y());
}

}  // namespace ui