SensorEventCounterTest added; AntDirectSensorManagerTest udpated

This commit is contained in:
ml1050
2012-01-26 12:46:27 +01:00
parent 625d0704bc
commit 859248acde
3 changed files with 86 additions and 31 deletions
@@ -196,7 +196,7 @@ public class AntDirectSensorManager extends AntSensorManager
} }
} }
private boolean setupChannel(AntSensorBase sensor, byte channel) { protected boolean setupChannel(AntSensorBase sensor, byte channel) {
Log.i(TAG, "setup channel=" + channel + " deviceType=" + sensor.getDeviceType()); Log.i(TAG, "setup channel=" + channel + " deviceType=" + sensor.getDeviceType());
return setupAntSensorChannel(sensor.getNetworkNumber(), return setupAntSensorChannel(sensor.getNetworkNumber(),
@@ -18,6 +18,7 @@ package com.google.android.apps.mytracks.services.sensors.ant;
import com.dsi.ant.AntMesg; import com.dsi.ant.AntMesg;
import com.google.android.apps.mytracks.Constants; import com.google.android.apps.mytracks.Constants;
import com.google.android.apps.mytracks.content.Sensor; import com.google.android.apps.mytracks.content.Sensor;
import com.google.android.maps.mytracks.R;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@@ -27,26 +28,42 @@ import android.test.suitebuilder.annotation.SmallTest;
public class AntDirectSensorManagerTest extends AndroidTestCase { public class AntDirectSensorManagerTest extends AndroidTestCase {
private SharedPreferences sharedPreferences; private SharedPreferences sharedPreferences;
private AntDirectSensorManager manager; private AntSensorBase heartRateSensor;
private static final byte HEART_RATE_CHANNEL = 0;
private class Manager extends AntDirectSensorManager {
public Manager(Context context) {
super(context);
}
@Override
protected boolean setupChannel(AntSensorBase sensor, byte channel) {
if (channel == HEART_RATE_CHANNEL) {
heartRateSensor = sensor;
return true;
}
return false;
}
}
private Manager manager;
public void setUp() { public void setUp() {
sharedPreferences = getContext().getSharedPreferences( sharedPreferences = getContext().getSharedPreferences(
Constants.SETTINGS_NAME, Context.MODE_PRIVATE); Constants.SETTINGS_NAME, Context.MODE_PRIVATE);
// Let's use default values. // Let's use default values.
sharedPreferences.edit().clear().apply(); sharedPreferences.edit().clear().apply();
manager = new AntDirectSensorManager(getContext()); manager = new Manager(getContext());
} }
@SuppressWarnings("deprecation")
@SmallTest @SmallTest
public void testBroadcastData() { public void testBroadcastData() {
// FIXME manager.setDeviceNumberHRM((short) 42); manager.setupAntSensorChannels();
byte[] buff = new byte[11]; assertNotNull(heartRateSensor);
buff[0] = 9;
buff[1] = AntMesg.MESG_BROADCAST_DATA_ID; heartRateSensor.setDeviceNumber((short)42);
buff[2] = 0; // HRM CHANNEL byte[] buff = new byte[9];
buff[10] = (byte) 220; buff[0] = HEART_RATE_CHANNEL;
manager.handleMessage(buff); buff[8] = (byte) 220;
manager.handleMessage(AntMesg.MESG_BROADCAST_DATA_ID, buff);
Sensor.SensorDataSet sds = manager.getSensorDataSet(); Sensor.SensorDataSet sds = manager.getSensorDataSet();
assertNotNull(sds); assertNotNull(sds);
@@ -57,39 +74,43 @@ public class AntDirectSensorManagerTest extends AndroidTestCase {
assertFalse(sds.hasCadence()); assertFalse(sds.hasCadence());
assertFalse(sds.hasPower()); assertFalse(sds.hasPower());
assertEquals(Sensor.SensorState.CONNECTED, manager.getSensorState());
} }
@SuppressWarnings("deprecation")
@SmallTest @SmallTest
public void testChannelId() { public void testChannelId() {
byte[] buff = new byte[11]; manager.setupAntSensorChannels();
buff[0] = 9; assertNotNull(heartRateSensor);
buff[1] = AntMesg.MESG_CHANNEL_ID_ID;
buff[3] = 42; byte[] buff = new byte[9];
manager.handleMessage(buff); buff[1] = 43;
/* FIXME manager.handleMessage(AntMesg.MESG_CHANNEL_ID_ID, buff);
assertEquals(42, manager.getDeviceNumberHRM());
assertEquals(42, assertEquals(43, heartRateSensor.getDeviceNumber());
assertEquals(43,
sharedPreferences.getInt( sharedPreferences.getInt(
getContext().getString(R.string.ant_heart_rate_sensor_id_key), -1)); getContext().getString(R.string.ant_heart_rate_sensor_id_key), -1));
*/
assertNull(manager.getSensorDataSet()); assertNull(manager.getSensorDataSet());
} }
@SuppressWarnings("deprecation")
@SmallTest @SmallTest
public void testResponseEvent() { public void testResponseEvent() {
assertEquals(Sensor.SensorState.NONE, manager.getSensorState()); manager.setupAntSensorChannels();
byte[] buff = new byte[5]; assertNotNull(heartRateSensor);
buff[0] = 3; // length manager.setHeartRate(210);
buff[1] = AntMesg.MESG_RESPONSE_EVENT_ID; heartRateSensor.setDeviceNumber((short)42);
buff[2] = 0; // channel
buff[3] = AntMesg.MESG_UNASSIGN_CHANNEL_ID;
buff[4] = 0; // code
manager.handleMessage(buff);
assertEquals(Sensor.SensorState.CONNECTED, manager.getSensorState());
byte[] buff = new byte[3];
buff[0] = HEART_RATE_CHANNEL;
buff[1] = AntMesg.MESG_UNASSIGN_CHANNEL_ID;
buff[2] = 0; // code
manager.handleMessage(AntMesg.MESG_RESPONSE_EVENT_ID, buff);
assertEquals(Sensor.SensorState.CONNECTED, manager.getSensorState());
heartRateSensor.setDeviceNumber((short)0);
manager.handleMessage(AntMesg.MESG_RESPONSE_EVENT_ID, buff);
assertEquals(Sensor.SensorState.DISCONNECTED, manager.getSensorState()); assertEquals(Sensor.SensorState.DISCONNECTED, manager.getSensorState());
assertNull(manager.getSensorDataSet());
} }
// TODO: Test timeout too. // TODO: Test timeout too.
@@ -0,0 +1,34 @@
/*
* Copyright 2012 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.android.apps.mytracks.services.sensors.ant;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
public class SensorEventCounterTest extends AndroidTestCase {
@SmallTest
public void testGetEventsPerMinute() throws InterruptedException {
SensorEventCounter sec = new SensorEventCounter();
assertEquals(0, sec.getEventsPerMinute(0, 0));
assertEquals(0, sec.getEventsPerMinute(1, 1024));
assertEquals(60, sec.getEventsPerMinute(2, 1024 * 2));
assertEquals(60, sec.getEventsPerMinute(2, 1024 * 2));
Thread.sleep(2000);
assertTrue(60 > sec.getEventsPerMinute(2, 1024 * 2));
}
}