1description('Tests using null values for some of the event properties.');
2
3var mockEvent;
4function setMockMotion(accelerationX, accelerationY, accelerationZ, accelerationIncludingGravityX, accelerationIncludingGravityY, accelerationIncludingGravityZ, rotationRateAlpha, rotationRateBeta, rotationRateGamma, interval) {
5 mockEvent = {accelerationX: accelerationX, accelerationY: accelerationY, accelerationZ: accelerationZ, accelerationIncludingGravityX: accelerationIncludingGravityX, accelerationIncludingGravityY: accelerationIncludingGravityY, accelerationIncludingGravityZ: accelerationIncludingGravityZ, rotationRateAlpha: rotationRateAlpha, rotationRateBeta: rotationRateBeta, rotationRateGamma: rotationRateGamma, interval: interval};
6 if (window.testRunner)
7 testRunner.setMockDeviceMotion(
8 null != mockEvent.accelerationX, null == mockEvent.accelerationX ? 0 : mockEvent.accelerationX,
9 null != mockEvent.accelerationY, null == mockEvent.accelerationY ? 0 : mockEvent.accelerationY,
10 null != mockEvent.accelerationZ, null == mockEvent.accelerationZ ? 0 : mockEvent.accelerationZ,
11 null != mockEvent.accelerationIncludingGravityX, null == mockEvent.accelerationIncludingGravityX ? 0 : mockEvent.accelerationIncludingGravityX,
12 null != mockEvent.accelerationIncludingGravityY, null == mockEvent.accelerationIncludingGravityY ? 0 : mockEvent.accelerationIncludingGravityY,
13 null != mockEvent.accelerationIncludingGravityZ, null == mockEvent.accelerationIncludingGravityZ ? 0 : mockEvent.accelerationIncludingGravityZ,
14 null != mockEvent.rotationRateAlpha, null == mockEvent.rotationRateAlpha ? 0 : mockEvent.rotationRateAlpha,
15 null != mockEvent.rotationRateBeta, null == mockEvent.rotationRateBeta ? 0 : mockEvent.rotationRateBeta,
16 null != mockEvent.rotationRateGamma, null == mockEvent.rotationRateGamma ? 0 : mockEvent.rotationRateGamma,
17 null != mockEvent.interval, null == mockEvent.interval ? 0 : mockEvent.interval);
18 else
19 debug('This test can not be run without the TestRunner');
20}
21
22var deviceMotionEvent;
23function checkMotion(event) {
24 deviceMotionEvent = event;
25 shouldBe('!deviceMotionEvent.acceleration', '!mockEvent.accelerationX && !mockEvent.accelerationY && !mockEvent.accelerationZ');
26 if (deviceMotionEvent.acceleration) {
27 shouldBe('deviceMotionEvent.acceleration.x', 'mockEvent.accelerationX');
28 shouldBe('deviceMotionEvent.acceleration.y', 'mockEvent.accelerationY');
29 shouldBe('deviceMotionEvent.acceleration.z', 'mockEvent.accelerationZ');
30 }
31 shouldBe('!deviceMotionEvent.accelerationIncludingGravity', '!mockEvent.accelerationIncludingGravityX && !mockEvent.accelerationIncludingGravityY && !mockEvent.accelerationIncludingGravityZ');
32 if (deviceMotionEvent.accelerationIncludingGravity) {
33 shouldBe('deviceMotionEvent.accelerationIncludingGravity.x', 'mockEvent.accelerationIncludingGravityX');
34 shouldBe('deviceMotionEvent.accelerationIncludingGravity.y', 'mockEvent.accelerationIncludingGravityY');
35 shouldBe('deviceMotionEvent.accelerationIncludingGravity.z', 'mockEvent.accelerationIncludingGravityZ');
36 }
37 shouldBe('!deviceMotionEvent.rotationRate', '!mockEvent.rotationRateAlpha && !mockEvent.rotationRateBeta && !mockEvent.rotationRateGamma');
38 if (deviceMotionEvent.rotationRate) {
39 shouldBe('deviceMotionEvent.rotationRate.alpha', 'mockEvent.rotationRateAlpha');
40 shouldBe('deviceMotionEvent.rotationRate.beta', 'mockEvent.rotationRateBeta');
41 shouldBe('deviceMotionEvent.rotationRate.gamma', 'mockEvent.rotationRateGamma');
42 }
43 shouldBe('deviceMotionEvent.interval', 'mockEvent.interval');
44}
45
46function firstListener(event) {
47 checkMotion(event);
48 window.removeEventListener('devicemotion', firstListener);
49
50 setMockMotion(1.01, null, null, null, null, null, null, null, null, null);
51 window.addEventListener('devicemotion', secondListener);
52}
53
54function secondListener(event) {
55 checkMotion(event);
56 window.removeEventListener('devicemotion', secondListener);
57
58 setMockMotion(null, 2.02, null, null, null, null, null, null, null, null);
59 window.addEventListener('devicemotion', thirdListener);
60}
61
62function thirdListener(event) {
63 checkMotion(event);
64 window.removeEventListener('devicemotion', thirdListener);
65
66 setMockMotion(null, null, 3.03, null, null, null, null, null, null, null);
67 window.addEventListener('devicemotion', fourthListener);
68}
69
70function fourthListener(event) {
71 checkMotion(event);
72 window.removeEventListener('devicemotion', fourthListener);
73
74 setMockMotion(null, null, null, 4.04, null, null, null, null, null, null);
75 window.addEventListener('devicemotion', fifthListener);
76}
77
78function fifthListener(event) {
79 checkMotion(event);
80 window.removeEventListener('devicemotion', fifthListener);
81
82 setMockMotion(null, null, null, null, 5.05, null, null, null, null, null);
83 window.addEventListener('devicemotion', sixthListener);
84}
85
86function sixthListener(event) {
87 checkMotion(event);
88 window.removeEventListener('devicemotion', sixthListener);
89
90 setMockMotion(null, null, null, null, null, 6.06, null, null, null, null);
91 window.addEventListener('devicemotion', seventhListener);
92}
93
94function seventhListener(event) {
95 checkMotion(event);
96 window.removeEventListener('devicemotion', seventhListener);
97
98 setMockMotion(null, null, null, null, null, null, 7.07, null, null, null);
99 window.addEventListener('devicemotion', eighthListener);
100}
101
102function eighthListener(event) {
103 checkMotion(event);
104 window.removeEventListener('devicemotion', eighthListener);
105
106 setMockMotion(null, null, null, null, null, null, null, 8.08, null, null);
107 window.addEventListener('devicemotion', ninthListener);
108}
109
110function ninthListener(event) {
111 checkMotion(event);
112 window.removeEventListener('devicemotion', ninthListener);
113
114 setMockMotion(null, null, null, null, null, null, null, null, 9.09, null);
115 window.addEventListener('devicemotion', tenthListener);
116}
117
118function tenthListener(event) {
119 checkMotion(event);
120 window.removeEventListener('devicemotion', tenthListener);
121
122 setMockMotion(null, null, null, null, null, null, null, null, null, 10.10);
123 window.addEventListener('devicemotion', eleventhListener);
124}
125
126function eleventhListener(event) {
127 checkMotion(event);
128 finishJSTest();
129}
130
131setMockMotion(null, null, null, null, null, null, null, null, null, null);
132window.addEventListener('devicemotion', firstListener);
133
134window.jsTestIsAsync = true;