diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/sensors/ant/AntDirectSensorManager.java b/MyTracks/src/com/google/android/apps/mytracks/services/sensors/ant/AntDirectSensorManager.java index a16883f98..7e3e61a5d 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/sensors/ant/AntDirectSensorManager.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/sensors/ant/AntDirectSensorManager.java @@ -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()); return setupAntSensorChannel(sensor.getNetworkNumber(), diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/services/sensors/ant/AntDirectSensorManagerTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/services/sensors/ant/AntDirectSensorManagerTest.java index be8af60cd..1d5309b1a 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/services/sensors/ant/AntDirectSensorManagerTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/services/sensors/ant/AntDirectSensorManagerTest.java @@ -18,6 +18,7 @@ package com.google.android.apps.mytracks.services.sensors.ant; import com.dsi.ant.AntMesg; import com.google.android.apps.mytracks.Constants; import com.google.android.apps.mytracks.content.Sensor; +import com.google.android.maps.mytracks.R; import android.content.Context; import android.content.SharedPreferences; @@ -27,26 +28,42 @@ import android.test.suitebuilder.annotation.SmallTest; public class AntDirectSensorManagerTest extends AndroidTestCase { 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() { sharedPreferences = getContext().getSharedPreferences( Constants.SETTINGS_NAME, Context.MODE_PRIVATE); // Let's use default values. sharedPreferences.edit().clear().apply(); - manager = new AntDirectSensorManager(getContext()); + manager = new Manager(getContext()); } - @SuppressWarnings("deprecation") @SmallTest public void testBroadcastData() { - // FIXME manager.setDeviceNumberHRM((short) 42); - byte[] buff = new byte[11]; - buff[0] = 9; - buff[1] = AntMesg.MESG_BROADCAST_DATA_ID; - buff[2] = 0; // HRM CHANNEL - buff[10] = (byte) 220; - manager.handleMessage(buff); + manager.setupAntSensorChannels(); + assertNotNull(heartRateSensor); + + heartRateSensor.setDeviceNumber((short)42); + byte[] buff = new byte[9]; + buff[0] = HEART_RATE_CHANNEL; + buff[8] = (byte) 220; + manager.handleMessage(AntMesg.MESG_BROADCAST_DATA_ID, buff); Sensor.SensorDataSet sds = manager.getSensorDataSet(); assertNotNull(sds); @@ -57,39 +74,43 @@ public class AntDirectSensorManagerTest extends AndroidTestCase { assertFalse(sds.hasCadence()); assertFalse(sds.hasPower()); + assertEquals(Sensor.SensorState.CONNECTED, manager.getSensorState()); } - @SuppressWarnings("deprecation") @SmallTest public void testChannelId() { - byte[] buff = new byte[11]; - buff[0] = 9; - buff[1] = AntMesg.MESG_CHANNEL_ID_ID; - buff[3] = 42; - manager.handleMessage(buff); - /* FIXME - assertEquals(42, manager.getDeviceNumberHRM()); - assertEquals(42, + manager.setupAntSensorChannels(); + assertNotNull(heartRateSensor); + + byte[] buff = new byte[9]; + buff[1] = 43; + manager.handleMessage(AntMesg.MESG_CHANNEL_ID_ID, buff); + + assertEquals(43, heartRateSensor.getDeviceNumber()); + assertEquals(43, sharedPreferences.getInt( getContext().getString(R.string.ant_heart_rate_sensor_id_key), -1)); - */ assertNull(manager.getSensorDataSet()); } - @SuppressWarnings("deprecation") @SmallTest public void testResponseEvent() { - assertEquals(Sensor.SensorState.NONE, manager.getSensorState()); - byte[] buff = new byte[5]; - buff[0] = 3; // length - buff[1] = AntMesg.MESG_RESPONSE_EVENT_ID; - buff[2] = 0; // channel - buff[3] = AntMesg.MESG_UNASSIGN_CHANNEL_ID; - buff[4] = 0; // code - manager.handleMessage(buff); + manager.setupAntSensorChannels(); + assertNotNull(heartRateSensor); + manager.setHeartRate(210); + heartRateSensor.setDeviceNumber((short)42); + 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()); - assertNull(manager.getSensorDataSet()); } // TODO: Test timeout too. diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/services/sensors/ant/SensorEventCounterTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/services/sensors/ant/SensorEventCounterTest.java new file mode 100644 index 000000000..fa0c63ed2 --- /dev/null +++ b/MyTracksTest/src/com/google/android/apps/mytracks/services/sensors/ant/SensorEventCounterTest.java @@ -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)); + } +}