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