12fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki/* 22fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * Copyright (C) 2011 The Android Open Source Project 32fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * 42fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); 52fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * you may not use this file except in compliance with the License. 62fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * You may obtain a copy of the License at 72fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * 82fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 92fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * 102fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * Unless required by applicable law or agreed to in writing, software 112fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, 122fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * See the License for the specific language governing permissions and 142fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki * limitations under the License. 152fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki */ 162fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 172fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onukipackage com.android.email.activity; 182fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 192fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onukiimport com.android.email.R; 202fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 212fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onukiimport android.app.Activity; 222fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onukiimport android.content.Context; 232fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onukiimport android.test.AndroidTestCase; 243555dc03bf2243dc275c9c832702abbee3b64387Jerry Xieimport android.test.suitebuilder.annotation.SmallTest; 252fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onukiimport android.view.View; 262fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 272fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onukiimport java.util.Locale; 282fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 293555dc03bf2243dc275c9c832702abbee3b64387Jerry Xie@SmallTest 302fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onukipublic class UiUtilitiesTests extends AndroidTestCase { 317037a0bd3d8e925a9115f475f5c0d05ddae2eeeeJerry Xie public void brokentestFormatSize() { 322fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki if (!"en".equalsIgnoreCase(Locale.getDefault().getLanguage())) { 332fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki return; // Only works on the EN locale. 342fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 352fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("0B", UiUtilities.formatSize(getContext(), 0)); 362fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("1B", UiUtilities.formatSize(getContext(), 1)); 372fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("1023B", UiUtilities.formatSize(getContext(), 1023)); 382fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("1KB", UiUtilities.formatSize(getContext(), 1024)); 392fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("1023KB", UiUtilities.formatSize(getContext(), 1024 * 1024 - 1)); 402fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("1MB", UiUtilities.formatSize(getContext(), 1024 * 1024)); 412fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("1023MB", UiUtilities.formatSize(getContext(), 1024 * 1024 * 1024 - 1)); 422fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("1GB", UiUtilities.formatSize(getContext(), 1024 * 1024 * 1024)); 432fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("5GB", UiUtilities.formatSize(getContext(), 5L * 1024 * 1024 * 1024)); 442fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 452fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 467037a0bd3d8e925a9115f475f5c0d05ddae2eeeeJerry Xie public void brokentestGetMessageCountForUi() { 472fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki final Context c = getContext(); 482fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 492fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki // Negavive valeus not really expected, but at least shouldn't crash. 502fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("-1", UiUtilities.getMessageCountForUi(c, -1, true)); 512fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("-1", UiUtilities.getMessageCountForUi(c, -1, false)); 522fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 532fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("", UiUtilities.getMessageCountForUi(c, 0, true)); 542fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("0", UiUtilities.getMessageCountForUi(c, 0, false)); 552fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 562fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("1", UiUtilities.getMessageCountForUi(c, 1, true)); 572fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("1", UiUtilities.getMessageCountForUi(c, 1, false)); 582fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 592fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("999", UiUtilities.getMessageCountForUi(c, 999, true)); 602fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals("999", UiUtilities.getMessageCountForUi(c, 999, false)); 612fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 622fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki final String moreThan999 = c.getString(R.string.more_than_999); 632fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 642fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals(moreThan999, UiUtilities.getMessageCountForUi(c, 1000, true)); 652fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals(moreThan999, UiUtilities.getMessageCountForUi(c, 1000, false)); 662fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 672fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals(moreThan999, UiUtilities.getMessageCountForUi(c, 1001, true)); 682fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals(moreThan999, UiUtilities.getMessageCountForUi(c, 1001, false)); 692fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 702fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 71b4bf6ba6a3ab7dd46c37dd2ab5bb0e6de76485c0Anthony Lee public void brokentestSetVisibilitySafe() { 722fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki { 732fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki DummyView v = new DummyView(getContext()); 742fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki UiUtilities.setVisibilitySafe(v, View.VISIBLE); 752fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals(View.VISIBLE, v.mVisibility); 762fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 772fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki // Shouldn't crash 782fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki UiUtilities.setVisibilitySafe(null, View.VISIBLE); 792fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 802fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 812fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki { 822fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki DummyActivity a = new DummyActivity(); 832fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki DummyView v = new DummyView(getContext()); 842fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki a.mDummyViewId = 3; 852fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki a.mDummyView = v; 862fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 872fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki UiUtilities.setVisibilitySafe(a, 3, View.VISIBLE); 882fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki assertEquals(View.VISIBLE, v.mVisibility); 892fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 902fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki // shouldn't crash 912fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki UiUtilities.setVisibilitySafe(a, 5, View.VISIBLE); 922fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 932fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki // No test for setVisibilitySafe(View, int, int) -- see testGetView(). 942fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 952fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 962fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki private static class DummyActivity extends Activity { 972fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki public int mDummyViewId; 982fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki public View mDummyView; 992fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 1002fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki @Override 1012fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki public View findViewById(int id) { 1022fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki return (id == mDummyViewId) ? mDummyView : null; 1032fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 1042fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 1052fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 1062fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki private static class DummyView extends View { 1072fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki public int mVisibility = View.GONE; 1082fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 1092fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki public DummyView(Context context) { 1102fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki super(context); 1112fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 1122fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki 1132fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki @Override 1142fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki public void setVisibility(int visibility) { 1152fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki mVisibility = visibility; 1162fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 1172fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki } 1182fbb3db5d86210d03175ce77ff08c989a96c5864Makoto Onuki} 119