Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Side by Side Diff: device/sensors/sensor_manager_android_unittest.cc

Issue 2885203004: Refactor content/renderer/device_sensors to use device/generic_sensor instead of device/sensors (Closed)
Patch Set: updated content/renderer/BUILD.gn Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "device/sensors/sensor_manager_android.h"
6
7 #include <memory>
8
9 #include "base/android/jni_android.h"
10 #include "base/memory/weak_ptr.h"
11 #include "base/message_loop/message_loop.h"
12 #include "device/sensors/device_sensors_consts.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace device {
16
17 namespace {
18
19 class FakeSensorManagerAndroid : public SensorManagerAndroid {
20 public:
21 FakeSensorManagerAndroid() {}
22 ~FakeSensorManagerAndroid() override {}
23
24 OrientationSensorType GetOrientationSensorTypeUsed() override {
25 return SensorManagerAndroid::ROTATION_VECTOR;
26 }
27
28 int GetNumberActiveDeviceMotionSensors() override {
29 return number_active_sensors_;
30 }
31
32 void SetNumberActiveDeviceMotionSensors(int number_active_sensors) {
33 number_active_sensors_ = number_active_sensors;
34 }
35
36 protected:
37 bool Start(ConsumerType event_type) override { return true; }
38 void Stop(ConsumerType event_type) override {}
39
40 private:
41 int number_active_sensors_;
42 };
43
44 class AndroidSensorManagerTest : public testing::Test {
45 protected:
46 AndroidSensorManagerTest() {
47 motion_buffer_.reset(new DeviceMotionHardwareBuffer);
48 orientation_buffer_.reset(new DeviceOrientationHardwareBuffer);
49 orientation_absolute_buffer_.reset(new DeviceOrientationHardwareBuffer);
50 }
51
52 void VerifyOrientationBufferValues(
53 const DeviceOrientationHardwareBuffer* buffer,
54 double alpha,
55 double beta,
56 double gamma) {
57 ASSERT_TRUE(buffer->data.all_available_sensors_are_active);
58 ASSERT_EQ(alpha, buffer->data.alpha);
59 ASSERT_TRUE(buffer->data.has_alpha);
60 ASSERT_EQ(beta, buffer->data.beta);
61 ASSERT_TRUE(buffer->data.has_beta);
62 ASSERT_EQ(gamma, buffer->data.gamma);
63 ASSERT_TRUE(buffer->data.has_gamma);
64 }
65
66 std::unique_ptr<DeviceMotionHardwareBuffer> motion_buffer_;
67 std::unique_ptr<DeviceOrientationHardwareBuffer> orientation_buffer_;
68 std::unique_ptr<DeviceOrientationHardwareBuffer> orientation_absolute_buffer_;
69 base::MessageLoop message_loop_;
70 };
71
72 TEST_F(AndroidSensorManagerTest, ThreeDeviceMotionSensorsActive) {
73 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
74 FakeSensorManagerAndroid sensorManager;
75 sensorManager.SetNumberActiveDeviceMotionSensors(3);
76
77 sensorManager.StartFetchingDeviceMotionData(motion_buffer_.get());
78 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
79
80 sensorManager.GotAcceleration(nullptr, nullptr, 1, 2, 3);
81 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
82 ASSERT_EQ(1, motion_buffer_->data.acceleration_x);
83 ASSERT_TRUE(motion_buffer_->data.has_acceleration_x);
84 ASSERT_EQ(2, motion_buffer_->data.acceleration_y);
85 ASSERT_TRUE(motion_buffer_->data.has_acceleration_y);
86 ASSERT_EQ(3, motion_buffer_->data.acceleration_z);
87 ASSERT_TRUE(motion_buffer_->data.has_acceleration_z);
88
89 sensorManager.GotAccelerationIncludingGravity(nullptr, nullptr, 4, 5, 6);
90 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
91 ASSERT_EQ(4, motion_buffer_->data.acceleration_including_gravity_x);
92 ASSERT_TRUE(motion_buffer_->data.has_acceleration_including_gravity_x);
93 ASSERT_EQ(5, motion_buffer_->data.acceleration_including_gravity_y);
94 ASSERT_TRUE(motion_buffer_->data.has_acceleration_including_gravity_y);
95 ASSERT_EQ(6, motion_buffer_->data.acceleration_including_gravity_z);
96 ASSERT_TRUE(motion_buffer_->data.has_acceleration_including_gravity_z);
97
98 sensorManager.GotRotationRate(nullptr, nullptr, 7, 8, 9);
99 ASSERT_TRUE(motion_buffer_->data.all_available_sensors_are_active);
100 ASSERT_EQ(7, motion_buffer_->data.rotation_rate_alpha);
101 ASSERT_TRUE(motion_buffer_->data.has_rotation_rate_alpha);
102 ASSERT_EQ(8, motion_buffer_->data.rotation_rate_beta);
103 ASSERT_TRUE(motion_buffer_->data.has_rotation_rate_beta);
104 ASSERT_EQ(9, motion_buffer_->data.rotation_rate_gamma);
105 ASSERT_TRUE(motion_buffer_->data.has_rotation_rate_gamma);
106 ASSERT_EQ(kDeviceSensorIntervalMicroseconds / 1000.,
107 motion_buffer_->data.interval);
108
109 sensorManager.StopFetchingDeviceMotionData();
110 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
111 }
112
113 TEST_F(AndroidSensorManagerTest, TwoDeviceMotionSensorsActive) {
114 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
115 FakeSensorManagerAndroid sensorManager;
116 sensorManager.SetNumberActiveDeviceMotionSensors(2);
117
118 sensorManager.StartFetchingDeviceMotionData(motion_buffer_.get());
119 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
120
121 sensorManager.GotAcceleration(nullptr, nullptr, 1, 2, 3);
122 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
123
124 sensorManager.GotAccelerationIncludingGravity(nullptr, nullptr, 1, 2, 3);
125 ASSERT_TRUE(motion_buffer_->data.all_available_sensors_are_active);
126 ASSERT_EQ(kDeviceSensorIntervalMicroseconds / 1000.,
127 motion_buffer_->data.interval);
128
129 sensorManager.StopFetchingDeviceMotionData();
130 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
131 }
132
133 TEST_F(AndroidSensorManagerTest, ZeroDeviceMotionSensorsActive) {
134 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
135 FakeSensorManagerAndroid sensorManager;
136 sensorManager.SetNumberActiveDeviceMotionSensors(0);
137
138 sensorManager.StartFetchingDeviceMotionData(motion_buffer_.get());
139 ASSERT_TRUE(motion_buffer_->data.all_available_sensors_are_active);
140 ASSERT_EQ(kDeviceSensorIntervalMicroseconds / 1000.,
141 motion_buffer_->data.interval);
142
143 sensorManager.StopFetchingDeviceMotionData();
144 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
145 }
146
147 TEST_F(AndroidSensorManagerTest, DeviceOrientationSensorsActive) {
148 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
149 FakeSensorManagerAndroid sensorManager;
150
151 sensorManager.StartFetchingDeviceOrientationData(orientation_buffer_.get());
152 ASSERT_FALSE(orientation_buffer_->data.all_available_sensors_are_active);
153
154 sensorManager.GotOrientation(nullptr, nullptr, 1, 2, 3);
155 VerifyOrientationBufferValues(orientation_buffer_.get(), 1, 2, 3);
156
157 sensorManager.StopFetchingDeviceOrientationData();
158 ASSERT_FALSE(orientation_buffer_->data.all_available_sensors_are_active);
159 }
160
161 TEST_F(AndroidSensorManagerTest, DeviceOrientationAbsoluteSensorsActive) {
162 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
163 FakeSensorManagerAndroid sensorManager;
164
165 sensorManager.StartFetchingDeviceOrientationAbsoluteData(
166 orientation_absolute_buffer_.get());
167 ASSERT_FALSE(orientation_buffer_->data.all_available_sensors_are_active);
168
169 sensorManager.GotOrientationAbsolute(nullptr, nullptr, 4, 5, 6);
170 VerifyOrientationBufferValues(orientation_absolute_buffer_.get(), 4, 5, 6);
171
172 sensorManager.StopFetchingDeviceOrientationData();
173 ASSERT_FALSE(orientation_buffer_->data.all_available_sensors_are_active);
174 }
175
176 } // namespace
177
178 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698