text: // 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 "base/macros.h"
  #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() override {}
  
    void TearDown() override {
      ui::CursorController::GetInstance()->ClearCursorConfigForWindow(
          kTestWindow);
    }
  
    DISALLOW_COPY_AND_ASSIGN(CursorControllerTest);
  };
  
  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,
                                                gfx::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,
                                                gfx::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
  