merge heads

This commit is contained in:
Jimmy Shih
2012-04-12 13:25:33 -07:00
parent c98b10c548
commit 53c5ebbef9
3 changed files with 44 additions and 18 deletions
@@ -17,6 +17,7 @@
package com.google.android.apps.mytracks.content; package com.google.android.apps.mytracks.content;
import com.google.android.apps.mytracks.stats.TripStatistics; import com.google.android.apps.mytracks.stats.TripStatistics;
import com.google.android.apps.mytracks.util.StringUtils;
import com.google.android.maps.mytracks.R; import com.google.android.maps.mytracks.R;
import android.test.AndroidTestCase; import android.test.AndroidTestCase;
@@ -29,6 +30,7 @@ import android.util.Pair;
*/ */
public class DescriptionGeneratorImplTest extends AndroidTestCase { public class DescriptionGeneratorImplTest extends AndroidTestCase {
private static final long START_TIME = 1288721514000L;
private DescriptionGeneratorImpl descriptionGenerator; private DescriptionGeneratorImpl descriptionGenerator;
@Override @Override
@@ -52,7 +54,7 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase {
stats.setTotalElevationGain(6000); stats.setTotalElevationGain(6000);
stats.setMaxGrade(0.42); stats.setMaxGrade(0.42);
stats.setMinGrade(0.11); stats.setMinGrade(0.11);
stats.setStartTime(1288721514000L); stats.setStartTime(START_TIME);
track.setStatistics(stats); track.setStatistics(stats);
track.setCategory("hiking"); track.setCategory("hiking");
String expected = "Created by" String expected = "Created by"
@@ -71,7 +73,7 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase {
+ "Elevation gain: 6000 m (19685 ft)<br>" + "Elevation gain: 6000 m (19685 ft)<br>"
+ "Max grade: 42 %<br>" + "Max grade: 42 %<br>"
+ "Min grade: 11 %<br>" + "Min grade: 11 %<br>"
+ "Recorded: 11/2/2010 11:11 AM<br>" + "Recorded: " + StringUtils.formatDateTime(getContext(), START_TIME) + "<br>"
+ "Activity type: hiking<br>"; + "Activity type: hiking<br>";
assertEquals(expected, descriptionGenerator.generateTrackDescription(track, null, null)); assertEquals(expected, descriptionGenerator.generateTrackDescription(track, null, null));
} }
@@ -91,7 +93,7 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase {
stats.setTotalElevationGain(6000); stats.setTotalElevationGain(6000);
stats.setMaxGrade(0.42); stats.setMaxGrade(0.42);
stats.setMinGrade(0.11); stats.setMinGrade(0.11);
stats.setStartTime(1288721514000L); stats.setStartTime(START_TIME);
waypoint.setStatistics(stats); waypoint.setStatistics(stats);
String expected = "Total distance: 20.00 km (12.4 mi)\n" String expected = "Total distance: 20.00 km (12.4 mi)\n"
+ "Total time: 10:00\n" + "Total time: 10:00\n"
@@ -107,7 +109,7 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase {
+ "Elevation gain: 6000 m (19685 ft)\n" + "Elevation gain: 6000 m (19685 ft)\n"
+ "Max grade: 42 %\n" + "Max grade: 42 %\n"
+ "Min grade: 11 %\n" + "Min grade: 11 %\n"
+ "Recorded: 11/2/2010 11:11 AM\n"; + "Recorded: " + StringUtils.formatDateTime(getContext(), START_TIME) + "\n";
assertEquals(expected, descriptionGenerator.generateWaypointDescription(waypoint)); assertEquals(expected, descriptionGenerator.generateWaypointDescription(waypoint));
} }
@@ -34,10 +34,15 @@ import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor; import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.location.Location; import android.location.Location;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder; import android.os.IBinder;
import android.provider.Settings;
import android.test.RenamingDelegatingContext; import android.test.RenamingDelegatingContext;
import android.test.ServiceTestCase; import android.test.ServiceTestCase;
import android.test.mock.MockContentProvider;
import android.test.mock.MockContentResolver; import android.test.mock.MockContentResolver;
import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest; import android.test.suitebuilder.annotation.SmallTest;
@@ -123,13 +128,33 @@ public class TrackRecordingServiceTest extends ServiceTestCase<TestRecordingServ
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();
/*
* Create a mock context that uses a mock content resolver and a renaming
* delegating context.
*/
MockContentResolver mockContentResolver = new MockContentResolver(); MockContentResolver mockContentResolver = new MockContentResolver();
RenamingDelegatingContext targetContext = new RenamingDelegatingContext( RenamingDelegatingContext renamingDelegatingContext = new RenamingDelegatingContext(
getContext(), getContext(), "test."); getContext(), getContext(), "test.");
context = new MockContext(mockContentResolver, targetContext); context = new MockContext(mockContentResolver, renamingDelegatingContext);
MyTracksProvider provider = new MyTracksProvider();
provider.attachInfo(context, null); // Set up the mock content resolver
mockContentResolver.addProvider(MyTracksProviderUtils.AUTHORITY, provider); MyTracksProvider myTracksProvider = new MyTracksProvider();
myTracksProvider.attachInfo(context, null);
mockContentResolver.addProvider(MyTracksProviderUtils.AUTHORITY, myTracksProvider);
MockContentProvider settingsProvider = new MockContentProvider(context) {
@Override
public Bundle call(String method, String arg, Bundle extras) {
return null;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
return null;
}
};
mockContentResolver.addProvider(Settings.AUTHORITY, settingsProvider);
// Set the context
setContext(context); setContext(context);
providerUtils = MyTracksProviderUtils.Factory.get(context); providerUtils = MyTracksProviderUtils.Factory.get(context);
@@ -13,9 +13,11 @@
* License for the specific language governing permissions and limitations under * License for the specific language governing permissions and limitations under
* the License. * the License.
*/ */
package com.google.android.apps.mytracks.util; package com.google.android.apps.mytracks.util;
import android.test.AndroidTestCase; import android.test.AndroidTestCase;
import android.text.format.DateFormat;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.TimeZone; import java.util.TimeZone;
@@ -31,22 +33,19 @@ public class StringUtilsTest extends AndroidTestCase {
* Tests {@link StringUtils#formatDateTime(android.content.Context, long)}. * Tests {@link StringUtils#formatDateTime(android.content.Context, long)}.
*/ */
public void testFormatTime() { public void testFormatTime() {
// Unix time 0 in UTC is "4:00 PM" in Pacific Standard time zone. assertEquals(DateFormat.getTimeFormat(getContext()).format(0L),
// This test can break if run on a different time zone or with a different StringUtils.formatTime(getContext(), 0L));
// time format preference.
assertEquals("4:00 PM", StringUtils.formatTime(getContext(), 0L));
} }
/** /**
* Tests {@link StringUtils#formatDateTime(android.content.Context, long)}. * Tests {@link StringUtils#formatDateTime(android.content.Context, long)}.
*/ */
public void testFormatDateTime() { public void testFormatDateTime() {
// Unix time 0 in UTC is "12/31/1969 4:00 PM" in Pacific Standard time zone. String expected = DateFormat.getDateFormat(getContext()).format(0L) + " "
// This test can break if run on a different time zone or with a different + DateFormat.getTimeFormat(getContext()).format(0L);
// date/time format preference. assertEquals(expected, StringUtils.formatDateTime(getContext(), 0L));
assertEquals("12/31/1969 4:00 PM", StringUtils.formatDateTime(getContext(), 0L));
} }
/** /**
* Tests {@link StringUtils#formatDateTimeIso8601(long)}. * Tests {@link StringUtils#formatDateTimeIso8601(long)}.
*/ */