Commit 96b546c4 authored by Oksana Zhuravlova's avatar Oksana Zhuravlova Committed by Commit Bot

Update gamepad_mojom_traits_unittests to use SerializeAndDeserialize

This change replaces the PassGamepad interface usage with
SerializeAndDeserialize() which is the modern and simpler way of testing
struct traits. Also, gamepad_mojom_traits_unittest.cc is moved to
//device/gamepad/public/cpp.

Bug: 612330
Change-Id: I9e8ebe3e8d62a08503d1aa24fdec39f9af280134
Reviewed-on: https://chromium-review.googlesource.com/1164404Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarMatt Reynolds <mattreynolds@chromium.org>
Commit-Queue: Oksana Zhuravlova <oksamyt@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581645}
parent aadbf55b
......@@ -95,7 +95,7 @@ test("device_unittests") {
"gamepad/abstract_haptic_gamepad_unittest.cc",
"gamepad/gamepad_provider_unittest.cc",
"gamepad/gamepad_service_unittest.cc",
"gamepad/public/mojom/gamepad_mojom_traits_unittest.cc",
"gamepad/public/cpp/gamepad_mojom_traits_unittest.cc",
"test/run_all_unittests.cc",
]
......@@ -116,9 +116,9 @@ test("device_unittests") {
"//device/gamepad:test_helpers",
"//device/gamepad/public/cpp:shared_with_blink",
"//device/gamepad/public/mojom",
"//device/gamepad/public/mojom:gamepad_mojom_traits_test",
"//mojo/core/embedder",
"//mojo/public/cpp/bindings",
"//mojo/public/cpp/test_support:test_utils",
"//net",
"//testing/gmock",
"//testing/gtest",
......
......@@ -2,15 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <utility>
#include "device/gamepad/public/cpp/gamepad_mojom_traits.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/time/time.h"
#include "device/gamepad/public/cpp/gamepad.h"
#include "device/gamepad/public/mojom/gamepad_mojom_traits_test.mojom.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "device/gamepad/public/mojom/gamepad.mojom.h"
#include "mojo/public/cpp/test_support/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace device {
......@@ -163,72 +159,51 @@ bool isWebGamepadEqual(const Gamepad& send, const Gamepad& echo) {
}
return true;
}
void ExpectWebGamepad(const Gamepad& send,
base::OnceClosure closure,
const Gamepad& echo) {
EXPECT_EQ(true, isWebGamepadEqual(send, echo));
std::move(closure).Run();
}
} // namespace
class GamepadStructTraitsTest : public testing::Test,
public mojom::GamepadStructTraitsTest {
class GamepadStructTraitsTest : public testing::Test {
protected:
GamepadStructTraitsTest() : binding_(this) {}
void PassGamepad(const Gamepad& send, PassGamepadCallback callback) override {
std::move(callback).Run(send);
}
mojom::GamepadStructTraitsTestPtr GetGamepadStructTraitsTestProxy() {
mojom::GamepadStructTraitsTestPtr proxy;
binding_.Bind(mojo::MakeRequest(&proxy));
return proxy;
}
GamepadStructTraitsTest() {}
private:
base::MessageLoop message_loop_;
mojo::Binding<mojom::GamepadStructTraitsTest> binding_;
DISALLOW_COPY_AND_ASSIGN(GamepadStructTraitsTest);
};
TEST_F(GamepadStructTraitsTest, GamepadCommon) {
Gamepad send = GetWebGamepadInstance(GamepadCommon);
base::RunLoop loop;
mojom::GamepadStructTraitsTestPtr proxy = GetGamepadStructTraitsTestProxy();
proxy->PassGamepad(
send, base::BindOnce(&ExpectWebGamepad, send, loop.QuitClosure()));
loop.Run();
Gamepad gamepad_in = GetWebGamepadInstance(GamepadCommon);
Gamepad gamepad_out;
ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Gamepad>(
&gamepad_in, &gamepad_out));
EXPECT_EQ(true, isWebGamepadEqual(gamepad_in, gamepad_out));
}
TEST_F(GamepadStructTraitsTest, GamepadPose_HasOrientation) {
Gamepad send = GetWebGamepadInstance(GamepadPose_HasOrientation);
base::RunLoop loop;
mojom::GamepadStructTraitsTestPtr proxy = GetGamepadStructTraitsTestProxy();
proxy->PassGamepad(
send, base::BindOnce(&ExpectWebGamepad, send, loop.QuitClosure()));
loop.Run();
Gamepad gamepad_in = GetWebGamepadInstance(GamepadPose_HasOrientation);
Gamepad gamepad_out;
ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Gamepad>(
&gamepad_in, &gamepad_out));
EXPECT_EQ(true, isWebGamepadEqual(gamepad_in, gamepad_out));
}
TEST_F(GamepadStructTraitsTest, GamepadPose_HasPosition) {
Gamepad send = GetWebGamepadInstance(GamepadPose_HasPosition);
base::RunLoop loop;
mojom::GamepadStructTraitsTestPtr proxy = GetGamepadStructTraitsTestProxy();
proxy->PassGamepad(
send, base::BindOnce(&ExpectWebGamepad, send, loop.QuitClosure()));
loop.Run();
Gamepad gamepad_in = GetWebGamepadInstance(GamepadPose_HasPosition);
Gamepad gamepad_out;
ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Gamepad>(
&gamepad_in, &gamepad_out));
EXPECT_EQ(true, isWebGamepadEqual(gamepad_in, gamepad_out));
}
TEST_F(GamepadStructTraitsTest, GamepadPose_Null) {
Gamepad send = GetWebGamepadInstance(GamepadPose_Null);
base::RunLoop loop;
mojom::GamepadStructTraitsTestPtr proxy = GetGamepadStructTraitsTestProxy();
proxy->PassGamepad(
send, base::BindOnce(&ExpectWebGamepad, send, loop.QuitClosure()));
loop.Run();
}
Gamepad gamepad_in = GetWebGamepadInstance(GamepadPose_Null);
Gamepad gamepad_out;
ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::Gamepad>(
&gamepad_in, &gamepad_out));
EXPECT_EQ(true, isWebGamepadEqual(gamepad_in, gamepad_out));
}
} // namespace device
......@@ -16,13 +16,3 @@ mojom_component("mojom") {
output_prefix = "gamepad_mojom"
macro_prefix = "GAMEPAD_MOJOM"
}
mojom("gamepad_mojom_traits_test") {
sources = [
"gamepad_mojom_traits_test.mojom",
]
public_deps = [
":mojom",
]
}
// Copyright 2016 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.
module device.mojom;
import "device/gamepad/public/mojom/gamepad.mojom";
interface GamepadStructTraitsTest {
PassGamepad(Gamepad send) => (Gamepad echo);
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment