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

Side by Side Diff: content/browser/device_sensors/sensor_manager_chromeos_unittest.cc

Issue 856123002: Device Orientation API on Chrome OS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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 "content/browser/device_sensors/sensor_manager_chromeos.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "content/common/device_sensors/device_orientation_hardware_buffer.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "ui/accelerometer/accelerometer_types.h"
11
12 namespace {
13 const double kMeanGravity = 9.80665;
14 } // namespace
15
16 namespace content {
17
18 class SensorManagerChromeOSTest : public testing::Test {
19 public:
20 SensorManagerChromeOSTest() {
21 orientation_buffer_.reset(new DeviceOrientationHardwareBuffer);
22 }
23
24 virtual ~SensorManagerChromeOSTest() {}
25
26 void OnAccelerationIncludingGravity(double x, double y, double z) {
27 ui::AccelerometerUpdate update;
28 update.Set(ui::ACCELEROMETER_SOURCE_SCREEN, x, y, z);
29 sensor_manager_->OnAccelerometerUpdated(update);
30 }
31
32 DeviceOrientationHardwareBuffer* orientation_buffer() {
33 return orientation_buffer_.get();
34 }
35
36 SensorManagerChromeOS* sensor_manager() { return sensor_manager_.get(); }
37
38 // testing::Test:
39 void SetUp() override {
40 testing::Test::SetUp();
41 sensor_manager_.reset(new SensorManagerChromeOS);
timvolodine 2015/01/21 13:16:57 you are using a real implementation here? does thi
jonross 2015/01/21 16:02:11 I am testing a real sensor manager here. However i
timvolodine 2015/01/21 19:08:21 It seems you are relying on AccelerometerReader::I
42 sensor_manager_->StartFetchingDeviceOrientationData(
43 orientation_buffer_.get());
44 }
45
46 void TearDown() override {
47 sensor_manager_->StopFetchingDeviceOrientationData();
48 testing::Test::TearDown();
49 }
50
51 private:
52 scoped_ptr<SensorManagerChromeOS> sensor_manager_;
53
54 scoped_ptr<DeviceOrientationHardwareBuffer> orientation_buffer_;
55
56 DISALLOW_COPY_AND_ASSIGN(SensorManagerChromeOSTest);
57 };
58
59 // Tests that starting to process orientation data will update the associated
60 // buffer.
61 TEST_F(SensorManagerChromeOSTest, OrientationBuffer) {
62 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
63 EXPECT_TRUE(buffer->data.hasAbsolute);
64 EXPECT_FALSE(buffer->data.hasAlpha);
65 EXPECT_FALSE(buffer->data.hasBeta);
66 EXPECT_FALSE(buffer->data.hasGamma);
67 EXPECT_FALSE(buffer->data.allAvailableSensorsAreActive);
68
69 OnAccelerationIncludingGravity(0.0f, 0.0f, 1.0f);
70 EXPECT_FLOAT_EQ(0.0f, buffer->data.alpha);
71 EXPECT_FALSE(buffer->data.hasAlpha);
72 EXPECT_TRUE(buffer->data.hasBeta);
73 EXPECT_TRUE(buffer->data.hasGamma);
74 EXPECT_TRUE(buffer->data.allAvailableSensorsAreActive);
75
76 sensor_manager()->StopFetchingDeviceOrientationData();
77 EXPECT_FALSE(buffer->data.allAvailableSensorsAreActive);
78 }
79
80 // Tests a device resting flat.
81 TEST_F(SensorManagerChromeOSTest, NeutralOrientation) {
82 OnAccelerationIncludingGravity(0.0f, 0.0f, -kMeanGravity);
83 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
84 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta);
85 EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma);
86 }
87
88 // Tests an upside-down device, such that the W3C boundary [-180,180) causes the
89 // beta value to become negative.
90 TEST_F(SensorManagerChromeOSTest, UpsideDown) {
91 OnAccelerationIncludingGravity(0.0f, 0.0f, kMeanGravity);
92 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
93 EXPECT_FLOAT_EQ(-180.0f, buffer->data.beta);
94 EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma);
95 }
96
97 // Tests for positive beta value before the device is completely upside-down
98 TEST_F(SensorManagerChromeOSTest, BeforeUpsideDownBoundary) {
99 OnAccelerationIncludingGravity(0.0f, -kMeanGravity / 2.0f,
100 kMeanGravity / 2.0f);
101 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
102 EXPECT_FLOAT_EQ(135.0f, buffer->data.beta);
103 EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma);
104 }
105
106 // Tests a device lying on its left-edge.
107 TEST_F(SensorManagerChromeOSTest, LeftEdge) {
108 OnAccelerationIncludingGravity(-kMeanGravity, 0.0f, 0.0f);
109 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
110 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta);
111 EXPECT_FLOAT_EQ(-90.0f, buffer->data.gamma);
112 }
113
114 // Tests a device lying on its right-edge, such that the W3C boundary [-90,90)
115 // causes the gamma value to become negative.
116 TEST_F(SensorManagerChromeOSTest, RightEdge) {
117 OnAccelerationIncludingGravity(kMeanGravity, 0.0f, 0.0f);
118 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
119 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta);
120 EXPECT_FLOAT_EQ(-90.0f, buffer->data.gamma);
121 }
122
123 // Tests for positive gamma value before the device is completely on its right
124 // side.
125 TEST_F(SensorManagerChromeOSTest, BeforeRightEdgeBoundary) {
126 OnAccelerationIncludingGravity(kMeanGravity / 2.0f, 0.0f,
127 -kMeanGravity / 2.0f);
128 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
129 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta);
130 EXPECT_FLOAT_EQ(45.0f, buffer->data.gamma);
131 }
132
133 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698