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

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

Issue 2819273006: Move //device/sensor impl to be part of the internal implemenation of the Device Service. (Closed)
Patch Set: Move //device/sensor impl to be part of the internal implemenation of the Device Service Created 3 years, 8 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
« no previous file with comments | « device/sensors/sensor_manager_android.cc ('k') | device/sensors/sensor_manager_chromeos.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 light_buffer_.reset(new DeviceLightHardwareBuffer);
48 motion_buffer_.reset(new DeviceMotionHardwareBuffer);
49 orientation_buffer_.reset(new DeviceOrientationHardwareBuffer);
50 orientation_absolute_buffer_.reset(new DeviceOrientationHardwareBuffer);
51 }
52
53 void VerifyOrientationBufferValues(
54 const DeviceOrientationHardwareBuffer* buffer,
55 double alpha,
56 double beta,
57 double gamma) {
58 ASSERT_TRUE(buffer->data.all_available_sensors_are_active);
59 ASSERT_EQ(alpha, buffer->data.alpha);
60 ASSERT_TRUE(buffer->data.has_alpha);
61 ASSERT_EQ(beta, buffer->data.beta);
62 ASSERT_TRUE(buffer->data.has_beta);
63 ASSERT_EQ(gamma, buffer->data.gamma);
64 ASSERT_TRUE(buffer->data.has_gamma);
65 }
66
67 std::unique_ptr<DeviceLightHardwareBuffer> light_buffer_;
68 std::unique_ptr<DeviceMotionHardwareBuffer> motion_buffer_;
69 std::unique_ptr<DeviceOrientationHardwareBuffer> orientation_buffer_;
70 std::unique_ptr<DeviceOrientationHardwareBuffer> orientation_absolute_buffer_;
71 base::MessageLoop message_loop_;
72 };
73
74 TEST_F(AndroidSensorManagerTest, ThreeDeviceMotionSensorsActive) {
75 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
76 FakeSensorManagerAndroid sensorManager;
77 sensorManager.SetNumberActiveDeviceMotionSensors(3);
78
79 sensorManager.StartFetchingDeviceMotionData(motion_buffer_.get());
80 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
81
82 sensorManager.GotAcceleration(nullptr, nullptr, 1, 2, 3);
83 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
84 ASSERT_EQ(1, motion_buffer_->data.acceleration_x);
85 ASSERT_TRUE(motion_buffer_->data.has_acceleration_x);
86 ASSERT_EQ(2, motion_buffer_->data.acceleration_y);
87 ASSERT_TRUE(motion_buffer_->data.has_acceleration_y);
88 ASSERT_EQ(3, motion_buffer_->data.acceleration_z);
89 ASSERT_TRUE(motion_buffer_->data.has_acceleration_z);
90
91 sensorManager.GotAccelerationIncludingGravity(nullptr, nullptr, 4, 5, 6);
92 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
93 ASSERT_EQ(4, motion_buffer_->data.acceleration_including_gravity_x);
94 ASSERT_TRUE(motion_buffer_->data.has_acceleration_including_gravity_x);
95 ASSERT_EQ(5, motion_buffer_->data.acceleration_including_gravity_y);
96 ASSERT_TRUE(motion_buffer_->data.has_acceleration_including_gravity_y);
97 ASSERT_EQ(6, motion_buffer_->data.acceleration_including_gravity_z);
98 ASSERT_TRUE(motion_buffer_->data.has_acceleration_including_gravity_z);
99
100 sensorManager.GotRotationRate(nullptr, nullptr, 7, 8, 9);
101 ASSERT_TRUE(motion_buffer_->data.all_available_sensors_are_active);
102 ASSERT_EQ(7, motion_buffer_->data.rotation_rate_alpha);
103 ASSERT_TRUE(motion_buffer_->data.has_rotation_rate_alpha);
104 ASSERT_EQ(8, motion_buffer_->data.rotation_rate_beta);
105 ASSERT_TRUE(motion_buffer_->data.has_rotation_rate_beta);
106 ASSERT_EQ(9, motion_buffer_->data.rotation_rate_gamma);
107 ASSERT_TRUE(motion_buffer_->data.has_rotation_rate_gamma);
108 ASSERT_EQ(kDeviceSensorIntervalMicroseconds / 1000.,
109 motion_buffer_->data.interval);
110
111 sensorManager.StopFetchingDeviceMotionData();
112 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
113 }
114
115 TEST_F(AndroidSensorManagerTest, TwoDeviceMotionSensorsActive) {
116 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
117 FakeSensorManagerAndroid sensorManager;
118 sensorManager.SetNumberActiveDeviceMotionSensors(2);
119
120 sensorManager.StartFetchingDeviceMotionData(motion_buffer_.get());
121 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
122
123 sensorManager.GotAcceleration(nullptr, nullptr, 1, 2, 3);
124 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
125
126 sensorManager.GotAccelerationIncludingGravity(nullptr, nullptr, 1, 2, 3);
127 ASSERT_TRUE(motion_buffer_->data.all_available_sensors_are_active);
128 ASSERT_EQ(kDeviceSensorIntervalMicroseconds / 1000.,
129 motion_buffer_->data.interval);
130
131 sensorManager.StopFetchingDeviceMotionData();
132 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
133 }
134
135 TEST_F(AndroidSensorManagerTest, ZeroDeviceMotionSensorsActive) {
136 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
137 FakeSensorManagerAndroid sensorManager;
138 sensorManager.SetNumberActiveDeviceMotionSensors(0);
139
140 sensorManager.StartFetchingDeviceMotionData(motion_buffer_.get());
141 ASSERT_TRUE(motion_buffer_->data.all_available_sensors_are_active);
142 ASSERT_EQ(kDeviceSensorIntervalMicroseconds / 1000.,
143 motion_buffer_->data.interval);
144
145 sensorManager.StopFetchingDeviceMotionData();
146 ASSERT_FALSE(motion_buffer_->data.all_available_sensors_are_active);
147 }
148
149 TEST_F(AndroidSensorManagerTest, DeviceOrientationSensorsActive) {
150 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
151 FakeSensorManagerAndroid sensorManager;
152
153 sensorManager.StartFetchingDeviceOrientationData(orientation_buffer_.get());
154 ASSERT_FALSE(orientation_buffer_->data.all_available_sensors_are_active);
155
156 sensorManager.GotOrientation(nullptr, nullptr, 1, 2, 3);
157 VerifyOrientationBufferValues(orientation_buffer_.get(), 1, 2, 3);
158
159 sensorManager.StopFetchingDeviceOrientationData();
160 ASSERT_FALSE(orientation_buffer_->data.all_available_sensors_are_active);
161 }
162
163 TEST_F(AndroidSensorManagerTest, DeviceOrientationAbsoluteSensorsActive) {
164 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
165 FakeSensorManagerAndroid sensorManager;
166
167 sensorManager.StartFetchingDeviceOrientationAbsoluteData(
168 orientation_absolute_buffer_.get());
169 ASSERT_FALSE(orientation_buffer_->data.all_available_sensors_are_active);
170
171 sensorManager.GotOrientationAbsolute(nullptr, nullptr, 4, 5, 6);
172 VerifyOrientationBufferValues(orientation_absolute_buffer_.get(), 4, 5, 6);
173
174 sensorManager.StopFetchingDeviceOrientationData();
175 ASSERT_FALSE(orientation_buffer_->data.all_available_sensors_are_active);
176 }
177
178 // DeviceLight
179 TEST_F(AndroidSensorManagerTest, DeviceLightSensorsActive) {
180 FakeSensorManagerAndroid::Register(base::android::AttachCurrentThread());
181 FakeSensorManagerAndroid sensorManager;
182
183 sensorManager.StartFetchingDeviceLightData(light_buffer_.get());
184
185 sensorManager.GotLight(nullptr, nullptr, 100);
186 ASSERT_EQ(100, light_buffer_->data.value);
187
188 sensorManager.StopFetchingDeviceLightData();
189 ASSERT_EQ(-1, light_buffer_->data.value);
190 }
191
192 } // namespace
193
194 } // namespace device
OLDNEW
« no previous file with comments | « device/sensors/sensor_manager_android.cc ('k') | device/sensors/sensor_manager_chromeos.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698