blob: a10a4226e3692ab4f3d215660b21953d6e5cb93d [file] [log] [blame]
// Copyright 2018 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 "chrome/browser/vr/platform_ui_input_delegate.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
using ::testing::_;
using ::testing::AllOf;
using ::testing::Property;
using ::testing::Ref;
namespace vr {
class PlatformUiInputDelegateTest : public PlatformUiInputDelegate {
public:
MOCK_METHOD1(FwdSendGestureToTarget, void(const InputEvent& event));
void SendGestureToTarget(std::unique_ptr<InputEvent> event) override;
};
void PlatformUiInputDelegateTest::SendGestureToTarget(
std::unique_ptr<InputEvent> event) {
FwdSendGestureToTarget(*event);
}
TEST(PlatformUiInputDelegateTest, OnHoverEvents) {
PlatformUiInputDelegateTest delegate;
delegate.SetSize(40.0f, 30.0f);
EXPECT_CALL(delegate,
FwdSendGestureToTarget(
AllOf(Property(&InputEvent::type, InputEvent::kHoverEnter),
Property(&InputEvent::position_in_widget,
gfx::PointF(20.0f, 15.0f)))));
delegate.OnHoverEnter({0.5f, 0.5f}, base::TimeTicks());
EXPECT_CALL(
delegate,
FwdSendGestureToTarget(AllOf(
Property(&InputEvent::type, InputEvent::kHoverMove),
Property(&InputEvent::position_in_widget, gfx::PointF(4.0f, 6.0f)))));
delegate.OnHoverMove({0.1f, 0.2f}, base::TimeTicks());
EXPECT_CALL(delegate, FwdSendGestureToTarget(Property(
&InputEvent::type, InputEvent::kHoverLeave)));
delegate.OnHoverLeave(base::TimeTicks());
}
TEST(PlatformUiInputDelegateTest, OnButtonEvents) {
PlatformUiInputDelegateTest delegate;
delegate.SetSize(40.0f, 30.0f);
EXPECT_CALL(
delegate,
FwdSendGestureToTarget(AllOf(
Property(&InputEvent::type, InputEvent::kButtonDown),
Property(&InputEvent::position_in_widget, gfx::PointF(4.0f, 3.0f)))));
delegate.OnButtonDown({0.1f, 0.1f}, base::TimeTicks());
EXPECT_CALL(
delegate,
FwdSendGestureToTarget(AllOf(
Property(&InputEvent::type, InputEvent::kMove),
Property(&InputEvent::position_in_widget, gfx::PointF(8.0f, 3.0f)))));
delegate.OnTouchMove({0.2f, 0.1f}, base::TimeTicks());
EXPECT_CALL(
delegate,
FwdSendGestureToTarget(AllOf(
Property(&InputEvent::type, InputEvent::kButtonUp),
Property(&InputEvent::position_in_widget, gfx::PointF(0.0f, 3.0f)))));
delegate.OnButtonUp({0.0f, 0.1f}, base::TimeTicks());
}
TEST(PlatformUiInputDelegateTest, OnInputEvent) {
PlatformUiInputDelegateTest delegate;
delegate.SetSize(40.0f, 30.0f);
auto event = std::make_unique<InputEvent>(InputEvent::kTypeUndefined);
EXPECT_CALL(delegate,
FwdSendGestureToTarget(
AllOf(Ref(*event), Property(&InputEvent::position_in_widget,
gfx::PointF(4.0f, 3.0f)))));
delegate.OnInputEvent(std::move(event), {0.1f, 0.1f});
}
} // namespace vr