1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.contacts.interactions; 17 18 import android.content.res.Configuration; 19 import android.content.res.Resources; 20 import android.test.AndroidTestCase; 21 import android.test.suitebuilder.annotation.SmallTest; 22 23 import java.util.Calendar; 24 import java.util.Locale; 25 26 /** 27 * Tests for utility functions in {@link ContactInteractionUtil} 28 */ 29 @SmallTest 30 public class ContactInteractionUtilTest extends AndroidTestCase { 31 32 private Locale mOriginalLocale; 33 private Calendar calendar; 34 35 @Override setUp()36 protected void setUp() throws Exception { 37 super.setUp(); 38 calendar = Calendar.getInstance(); 39 40 // Time/Date utilities rely on specific locales. Forace US and set back in tearDown() 41 mOriginalLocale = Locale.getDefault(); 42 setLocale(Locale.US); 43 } 44 45 @Override tearDown()46 protected void tearDown() throws Exception { 47 setLocale(mOriginalLocale); 48 super.tearDown(); 49 } 50 testOneQuestionMark()51 public void testOneQuestionMark() { 52 assertEquals("(?)", ContactInteractionUtil.questionMarks(1)); 53 } 54 testTwoQuestionMarks()55 public void testTwoQuestionMarks() { 56 assertEquals("(?,?)", ContactInteractionUtil.questionMarks(2)); 57 } 58 testFiveQuestionMarks()59 public void testFiveQuestionMarks() { 60 assertEquals("(?,?,?,?,?)", ContactInteractionUtil.questionMarks(5)); 61 } 62 testFormatDateStringFromTimestamp_todaySingleMinuteAm()63 public void testFormatDateStringFromTimestamp_todaySingleMinuteAm() { 64 // Test today scenario (time shown) 65 // Single digit minute & AM 66 calendar.set(Calendar.HOUR_OF_DAY, 8); 67 calendar.set(Calendar.MINUTE, 8); 68 long todayTimestamp = calendar.getTimeInMillis(); 69 assertEquals("8:08 AM", ContactInteractionUtil.formatDateStringFromTimestamp( 70 calendar.getTimeInMillis(), getContext())); 71 } 72 testFormatDateStringFromTimestamp_todayDoubleMinutePm()73 public void testFormatDateStringFromTimestamp_todayDoubleMinutePm() { 74 // Double digit minute & PM 75 calendar.set(Calendar.HOUR_OF_DAY, 22); 76 calendar.set(Calendar.MINUTE, 18); 77 assertEquals("10:18 PM", 78 ContactInteractionUtil.formatDateStringFromTimestamp(calendar.getTimeInMillis(), 79 getContext())); 80 } 81 testFormatDateStringFromTimestamp_other()82 public void testFormatDateStringFromTimestamp_other() { 83 // Test other (Month Date) 84 calendar.set( 85 /* year = */ 1991, 86 /* month = */ Calendar.MONTH, 87 /* day = */ 11, 88 /* hourOfDay = */ 8, 89 /* minute = */ 8); 90 assertEquals("Monday, March 11, 1991, 8:08 AM", 91 ContactInteractionUtil.formatDateStringFromTimestamp(calendar.getTimeInMillis(), 92 getContext())); 93 } 94 testFormatDuration_zero()95 public void testFormatDuration_zero() { 96 assertEquals("0 sec", 97 ContactInteractionUtil.formatDuration(0, getContext())); 98 } 99 testFormatDuration_minZeroSec()100 public void testFormatDuration_minZeroSec() { 101 assertEquals("1 min 0 sec", 102 ContactInteractionUtil.formatDuration(60, getContext())); 103 } 104 testFormatDuration_minSec()105 public void testFormatDuration_minSec() { 106 assertEquals("30 min 9 sec", 107 ContactInteractionUtil.formatDuration(1809, getContext())); 108 } 109 testFormatDuration_hrZeroMinZeroSec()110 public void testFormatDuration_hrZeroMinZeroSec() { 111 assertEquals("1 hr 0 min 0 sec", 112 ContactInteractionUtil.formatDuration(3600, getContext())); 113 } 114 testFormatDuration_hrMinSec()115 public void testFormatDuration_hrMinSec() { 116 assertEquals("2 hr 44 min 36 sec", 117 ContactInteractionUtil.formatDuration(9876, getContext())); 118 } 119 setLocale(Locale locale)120 private void setLocale(Locale locale) { 121 Locale.setDefault(locale); 122 Resources res = getContext().getResources(); 123 Configuration config = res.getConfiguration(); 124 config.locale = locale; 125 res.updateConfiguration(config, res.getDisplayMetrics()); 126 } 127 }