blob: a1507be9c4da7295ba2cbc71e2f0684c341d5d88 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/modules/gamepad/gamepad_comparisons.h"
#include <array>
#include "base/test/task_environment.h"
#include "device/gamepad/public/cpp/gamepad.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/modules/gamepad/gamepad.h"
#include "third_party/blink/renderer/platform/testing/main_thread_isolate.h"
namespace blink {
class GamepadComparisonsTest : public testing::Test {
public:
GamepadComparisonsTest() = default;
GamepadComparisonsTest(const GamepadComparisonsTest&) = delete;
GamepadComparisonsTest& operator=(const GamepadComparisonsTest&) = delete;
protected:
void InitGamepadQuaternion(device::GamepadQuaternion& q) {
q.not_null = true;
q.x = 0.f;
q.y = 0.f;
q.z = 0.f;
q.w = 0.f;
}
void InitGamepadVector(device::GamepadVector& v) {
v.not_null = true;
v.x = 0.f;
v.y = 0.f;
v.z = 0.f;
}
Gamepad* CreateGamepad() {
base::TimeTicks dummy_time_origin =
base::TimeTicks() + base::Microseconds(1000);
base::TimeTicks dummy_time_floor =
base::TimeTicks() + base::Microseconds(2000);
return MakeGarbageCollected<Gamepad>(nullptr, 0, dummy_time_origin,
dummy_time_floor);
}
using GamepadList = HeapVector<Member<Gamepad>>;
HeapVector<Member<Gamepad>> CreateEmptyGamepadList() {
return HeapVector<Member<Gamepad>>(device::Gamepads::kItemsLengthCap);
}
HeapVector<Member<Gamepad>> CreateGamepadListWithNeutralGamepad() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{false, false, 0.0}};
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
list[0] = gamepad;
return list;
}
HeapVector<Member<Gamepad>> CreateGamepadListWithAxisTilt() {
double axes[1] = {0.95};
device::GamepadButton buttons[1] = {{false, false, 0.0}};
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
list[0] = gamepad;
return list;
}
HeapVector<Member<Gamepad>> CreateGamepadListWithButtonDown() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{true, true, 1.0}};
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
list[0] = gamepad;
return list;
}
HeapVector<Member<Gamepad>> CreateGamepadListWithButtonTouched() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{
false,
true,
// Just before the "pressed" threshold.
device::GamepadButton::kDefaultButtonPressedThreshold - 0.01,
}};
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
list[0] = gamepad;
return list;
}
HeapVector<Member<Gamepad>> CreateGamepadListWithButtonJustDown() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{
true,
true,
// Just beyond the "pressed" threshold.
device::GamepadButton::kDefaultButtonPressedThreshold + 0.01,
}};
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
list[0] = gamepad;
return list;
}
void initTouch(float x,
float y,
uint8_t surface_id,
uint32_t touch_id,
bool has_surface_dimensions,
uint32_t surface_width,
uint32_t surface_height,
device::GamepadTouch& touch) {
touch.x = x;
touch.y = y;
touch.surface_id = surface_id;
touch.touch_id = touch_id;
touch.has_surface_dimensions = has_surface_dimensions;
touch.surface_width = surface_width;
touch.surface_height = surface_height;
}
GamepadList CreateGamepadListWithTopLeftTouch() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{false, false, 0.0}};
device::GamepadTouch touch;
initTouch(0.0f, 0.0f, 0, 0, false, 0, 0, touch);
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
gamepad->SetTouchEvents(base::span_from_ref(touch));
list[0] = gamepad;
return list;
}
GamepadList CreateGamepadListWithTopLeftTouchesTouchId1() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{false, false, 0.0}};
std::array<device::GamepadTouch, 2> touch;
initTouch(0.0f, 0.0f, 0, 0, false, 0, 0, touch[0]);
initTouch(0.0f, 0.0f, 0, 1, false, 0, 0, touch[1]);
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
gamepad->SetTouchEvents(touch);
list[0] = gamepad;
return list;
}
GamepadList CreateGamepadListWithTopLeftTouchesTouchId3() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{false, false, 0.0}};
std::array<device::GamepadTouch, 2> touch;
initTouch(0.0f, 0.0f, 0, 0, false, 0, 0, touch[0]);
initTouch(0.0f, 0.0f, 0, 3, false, 0, 0, touch[1]);
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
gamepad->SetTouchEvents(touch);
list[0] = gamepad;
return list;
}
GamepadList CreateGamepadListWithTopLeftTouchSurface1() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{false, false, 0.0}};
device::GamepadTouch touch;
initTouch(0.0f, 0.0f, 0, 1, true, 1280, 720, touch);
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
gamepad->SetTouchEvents(base::span_from_ref(touch));
list[0] = gamepad;
return list;
}
GamepadList CreateGamepadListWithTopLeftTouchSurface2() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{false, false, 0.0}};
device::GamepadTouch touch;
initTouch(0.0f, 0.0f, 0, 1, true, 1920, 1080, touch);
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
gamepad->SetTouchEvents(base::span_from_ref(touch));
list[0] = gamepad;
return list;
}
GamepadList CreateGamepadListWithCenterTouch() {
double axes[1] = {0.0};
device::GamepadButton buttons[1] = {{false, false, 0.0}};
device::GamepadTouch touch;
initTouch(0.5f, 0.5f, 0, 1, true, 1280, 720, touch);
auto list = CreateEmptyGamepadList();
auto* gamepad = CreateGamepad();
gamepad->SetId("gamepad");
gamepad->SetAxes(axes);
gamepad->SetButtons(buttons);
gamepad->SetConnected(true);
gamepad->SetTouchEvents(base::span_from_ref(touch));
list[0] = gamepad;
return list;
}
private:
// Needed so we can do v8::Isolate::GetCurrent().
base::test::TaskEnvironment task_environment_;
blink::test::MainThreadIsolate isolate_;
};
TEST_F(GamepadComparisonsTest, EmptyListCausesNoActivation) {
auto list = CreateEmptyGamepadList();
EXPECT_FALSE(GamepadComparisons::HasUserActivation(list));
}
TEST_F(GamepadComparisonsTest, NeutralGamepadCausesNoActivation) {
auto list = CreateGamepadListWithNeutralGamepad();
EXPECT_FALSE(GamepadComparisons::HasUserActivation(list));
}
TEST_F(GamepadComparisonsTest, AxisTiltCausesNoActivation) {
auto list = CreateGamepadListWithAxisTilt();
EXPECT_FALSE(GamepadComparisons::HasUserActivation(list));
}
TEST_F(GamepadComparisonsTest, ButtonDownCausesActivation) {
auto list = CreateGamepadListWithButtonDown();
EXPECT_TRUE(GamepadComparisons::HasUserActivation(list));
}
TEST_F(GamepadComparisonsTest, CompareEmptyLists) {
// Simulate no connected gamepads.
auto list1 = CreateEmptyGamepadList();
auto list2 = CreateEmptyGamepadList();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_FALSE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareNeutrals) {
// Simulate a neutral gamepad with no input changes.
auto list1 = CreateGamepadListWithNeutralGamepad();
auto list2 = CreateGamepadListWithNeutralGamepad();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_FALSE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareEmptyListWithNeutral) {
// Simulate a connection.
auto list1 = CreateEmptyGamepadList();
auto list2 = CreateGamepadListWithNeutralGamepad();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_TRUE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareNeutralWithEmptyList) {
// Simulate a disconnection.
auto list1 = CreateGamepadListWithNeutralGamepad();
auto list2 = CreateEmptyGamepadList();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_TRUE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareNeutralWithAxisTilt) {
// Simulate tilting an axis away from neutral.
auto list1 = CreateGamepadListWithNeutralGamepad();
auto list2 = CreateGamepadListWithAxisTilt();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_TRUE(compareResult.IsAxisChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
// Using compare_all_axes=false, comparison flags are not set for individual
// axes.
auto compareResult2 = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes*/ false, /*compare_all_buttons*/ true);
EXPECT_TRUE(compareResult2.IsDifferent());
EXPECT_FALSE(compareResult2.IsGamepadConnected(0));
EXPECT_FALSE(compareResult2.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult2.IsAxisChanged(0, 0));
EXPECT_FALSE(compareResult2.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult2.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult2.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareNeutralWithButtonDown) {
// Simulate pressing a digital (on/off) button.
auto list1 = CreateGamepadListWithNeutralGamepad();
auto list2 = CreateGamepadListWithButtonDown();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
// Using compare_all_buttons=false, comparison flags are not set for
// individual buttons.
auto compareResult2 = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes*/ true, /*compare_all_buttons*/ false);
EXPECT_TRUE(compareResult2.IsDifferent());
EXPECT_FALSE(compareResult2.IsGamepadConnected(0));
EXPECT_FALSE(compareResult2.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult2.IsAxisChanged(0, 0));
EXPECT_FALSE(compareResult2.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult2.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult2.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareButtonDownWithNeutral) {
// Simulate releasing a digital (on/off) button.
auto list1 = CreateGamepadListWithButtonDown();
auto list2 = CreateGamepadListWithNeutralGamepad();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_TRUE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareNeutralWithButtonTouched) {
// Simulate touching an analog button or trigger.
auto list1 = CreateGamepadListWithNeutralGamepad();
auto list2 = CreateGamepadListWithButtonTouched();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareButtonTouchedWithButtonJustDown) {
// Simulate pressing an analog button or trigger enough to register a button
// press.
auto list1 = CreateGamepadListWithButtonTouched();
auto list2 = CreateGamepadListWithButtonJustDown();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareButtonJustDownWithButtonDown) {
// Simulate continuing to press an analog button or trigger until it reaches
// the maximum value.
auto list1 = CreateGamepadListWithButtonJustDown();
auto list2 = CreateGamepadListWithButtonDown();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareButtonDownWithButtonJustDown) {
// Simulate releasing an analog button or trigger until it is just barely
// pressed.
auto list1 = CreateGamepadListWithButtonDown();
auto list2 = CreateGamepadListWithButtonJustDown();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareButtonJustDownWithButtonTouched) {
// Simulate releasing an analog button or trigger until it is no longer
// pressed.
auto list1 = CreateGamepadListWithButtonJustDown();
auto list2 = CreateGamepadListWithButtonTouched();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_TRUE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareButtonTouchedWithNeutral) {
// Simulate releasing an analog button or trigger until it is neutral.
auto list1 = CreateGamepadListWithButtonTouched();
auto list2 = CreateGamepadListWithNeutralGamepad();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/true, /*compare_all_buttons=*/true);
EXPECT_TRUE(compareResult.IsDifferent());
EXPECT_FALSE(compareResult.IsGamepadConnected(0));
EXPECT_FALSE(compareResult.IsGamepadDisconnected(0));
EXPECT_FALSE(compareResult.IsAxisChanged(0, 0));
EXPECT_TRUE(compareResult.IsButtonChanged(0, 0));
EXPECT_FALSE(compareResult.IsButtonDown(0, 0));
EXPECT_FALSE(compareResult.IsButtonUp(0, 0));
}
TEST_F(GamepadComparisonsTest, CompareDifferentTouch) {
auto list1 = CreateGamepadListWithTopLeftTouch();
auto list2 = CreateGamepadListWithCenterTouch();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/false, /*compare_all_buttons=*/false);
EXPECT_TRUE(compareResult.IsDifferent());
}
TEST_F(GamepadComparisonsTest, CompareDifferentSurface) {
auto list1 = CreateGamepadListWithTopLeftTouch();
auto list2 = CreateGamepadListWithTopLeftTouchSurface1();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/false, /*compare_all_buttons=*/false);
EXPECT_TRUE(compareResult.IsDifferent());
}
TEST_F(GamepadComparisonsTest, CompareDifferentTouchId) {
auto list1 = CreateGamepadListWithTopLeftTouchesTouchId1();
auto list2 = CreateGamepadListWithTopLeftTouchesTouchId3();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/false, /*compare_all_buttons=*/false);
EXPECT_TRUE(compareResult.IsDifferent());
}
TEST_F(GamepadComparisonsTest, CompareSameTouch1) {
auto list1 = CreateGamepadListWithTopLeftTouch();
auto compareResult = GamepadComparisons::Compare(
list1, list1, /*compare_all_axes=*/false, /*compare_all_buttons=*/false);
EXPECT_FALSE(compareResult.IsDifferent());
}
TEST_F(GamepadComparisonsTest, CompareSameTouch2) {
auto list1 = CreateGamepadListWithTopLeftTouchesTouchId3();
auto compareResult = GamepadComparisons::Compare(
list1, list1, /*compare_all_axes=*/false, /*compare_all_buttons=*/false);
EXPECT_FALSE(compareResult.IsDifferent());
}
TEST_F(GamepadComparisonsTest, CompareSurfaceNoSurfaceTouch) {
auto list1 = CreateGamepadListWithTopLeftTouchSurface1();
auto list2 = CreateGamepadListWithTopLeftTouch();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/false, /*compare_all_buttons=*/false);
EXPECT_TRUE(compareResult.IsDifferent());
}
TEST_F(GamepadComparisonsTest, CompareDifferentSurfaceTouch) {
auto list1 = CreateGamepadListWithTopLeftTouchSurface1();
auto list2 = CreateGamepadListWithTopLeftTouchSurface2();
auto compareResult = GamepadComparisons::Compare(
list1, list2, /*compare_all_axes=*/false, /*compare_all_buttons=*/false);
EXPECT_TRUE(compareResult.IsDifferent());
}
} // namespace blink