191 lines
7.1 KiB
Java
191 lines
7.1 KiB
Java
/*
|
|
* Copyright (C) 2010 The Android Open Source Project
|
|
*
|
|
* 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.android.email.activity;
|
|
|
|
import com.android.mail.utils.Clock;
|
|
import com.android.email.Controller;
|
|
import com.android.email.MockClock;
|
|
import com.android.email.RefreshManager;
|
|
|
|
import android.content.Context;
|
|
import android.os.Handler;
|
|
import android.test.AndroidTestCase;
|
|
import android.test.suitebuilder.annotation.SmallTest;
|
|
|
|
import junit.framework.Assert;
|
|
|
|
/**
|
|
* Tests for {@link UIControllerTwoPane.RefreshTask}.
|
|
*
|
|
* TOOD Add more tests.
|
|
* Right now, it only has tests for the "shouldXxx" methods, because it's hard to notice when
|
|
* they're subtly broken. (And the spec may change.)
|
|
*/
|
|
@SmallTest
|
|
public class UIControllerTwoPaneRefreshTaskTest extends AndroidTestCase {
|
|
private MockClock mClock = new MockClock();
|
|
private MockRefreshManager mRefreshManager;
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
mRefreshManager = new MockRefreshManager(getContext(), Controller.getInstance(getContext()),
|
|
mClock, null);
|
|
}
|
|
|
|
@Override
|
|
protected void tearDown() throws Exception {
|
|
super.tearDown();
|
|
mRefreshManager.cleanUpForTest();
|
|
}
|
|
|
|
public void testShouldRefreshMailboxList() {
|
|
final long ACCOUNT_ID = 5;
|
|
final long MAILBOX_ID = 10;
|
|
|
|
UIControllerTwoPane.RefreshTask task = new UIControllerTwoPane.RefreshTask(null,
|
|
getContext(), ACCOUNT_ID, MAILBOX_ID, mClock, mRefreshManager);
|
|
|
|
mRefreshManager.mExpectedAccountId = ACCOUNT_ID;
|
|
|
|
mClock.mTime = 123456789;
|
|
|
|
// Not refreshing, never refreshed == should sync
|
|
mRefreshManager.mIsMailboxListRefreshing = false;
|
|
mRefreshManager.mLastMailboxListRefresTime = 0;
|
|
assertTrue(task.shouldRefreshMailboxList());
|
|
|
|
// IS refreshing, never refreshed == should NOT sync
|
|
mRefreshManager.mIsMailboxListRefreshing = true;
|
|
mRefreshManager.mLastMailboxListRefresTime = 0;
|
|
assertFalse(task.shouldRefreshMailboxList());
|
|
|
|
// Not refreshing, just refreshed == should NOT sync
|
|
mRefreshManager.mIsMailboxListRefreshing = false;
|
|
mRefreshManager.mLastMailboxListRefresTime = 1234567890;
|
|
mClock.mTime = mRefreshManager.mLastMailboxListRefresTime;
|
|
assertFalse(task.shouldRefreshMailboxList());
|
|
|
|
// Not refreshing, refreshed 1 ms ago == should NOT sync
|
|
mRefreshManager.mLastMailboxListRefresTime = 1234567890;
|
|
mClock.mTime = mRefreshManager.mLastMailboxListRefresTime + 1;
|
|
assertFalse(task.shouldRefreshMailboxList());
|
|
|
|
// Not refreshing, refreshed TIMEOUT-1 ago == should NOT sync
|
|
mRefreshManager.mLastMailboxListRefresTime = 1234567890;
|
|
mClock.mTime = mRefreshManager.mLastMailboxListRefresTime
|
|
+ UIControllerTwoPane.MAILBOX_REFRESH_MIN_INTERVAL - 1;
|
|
assertFalse(task.shouldRefreshMailboxList());
|
|
|
|
// 1 ms laster... should sync.
|
|
mClock.advance();
|
|
assertTrue(task.shouldRefreshMailboxList());
|
|
}
|
|
|
|
public void testShouldAutoRefreshInbox() {
|
|
final long ACCOUNT_ID = 5;
|
|
final long MAILBOX_ID = 10;
|
|
|
|
UIControllerTwoPane.RefreshTask task = new UIControllerTwoPane.RefreshTask(null,
|
|
getContext(), ACCOUNT_ID, MAILBOX_ID, mClock, mRefreshManager);
|
|
|
|
mRefreshManager.mExpectedAccountId = ACCOUNT_ID;
|
|
|
|
mClock.mTime = 123456789;
|
|
|
|
// Current mailbox != inbox, not refreshing, never refreshed == should sync
|
|
mRefreshManager.mIsMessageListRefreshing = false;
|
|
mRefreshManager.mLastMessageListRefresTime = 0;
|
|
task.mInboxId = MAILBOX_ID + 1;
|
|
mRefreshManager.mExpectedMailboxId = MAILBOX_ID + 1;
|
|
assertTrue(task.shouldAutoRefreshInbox());
|
|
|
|
// Current mailbox == inbox should NOT sync.
|
|
task.mInboxId = MAILBOX_ID;
|
|
mRefreshManager.mExpectedMailboxId = MAILBOX_ID;
|
|
assertFalse(task.shouldAutoRefreshInbox());
|
|
|
|
// Fron here, Current mailbox != inbox
|
|
task.mInboxId = MAILBOX_ID + 1;
|
|
mRefreshManager.mExpectedMailboxId = MAILBOX_ID + 1;
|
|
|
|
// IS refreshing, never refreshed == should NOT sync
|
|
mRefreshManager.mIsMessageListRefreshing = true;
|
|
mRefreshManager.mLastMessageListRefresTime = 0;
|
|
assertFalse(task.shouldAutoRefreshInbox());
|
|
|
|
// Not refreshing, just refreshed == should NOT sync
|
|
mRefreshManager.mIsMessageListRefreshing = false;
|
|
mRefreshManager.mLastMessageListRefresTime = 1234567890;
|
|
mClock.mTime = mRefreshManager.mLastMessageListRefresTime;
|
|
assertFalse(task.shouldAutoRefreshInbox());
|
|
|
|
// Not refreshing, refreshed 1 ms ago == should NOT sync
|
|
mRefreshManager.mLastMessageListRefresTime = 1234567890;
|
|
mClock.mTime = mRefreshManager.mLastMessageListRefresTime + 1;
|
|
assertFalse(task.shouldAutoRefreshInbox());
|
|
|
|
// Not refreshing, refreshed TIMEOUT-1 ago == should NOT sync
|
|
mRefreshManager.mLastMessageListRefresTime = 1234567890;
|
|
mClock.mTime = mRefreshManager.mLastMessageListRefresTime
|
|
+ UIControllerTwoPane.INBOX_AUTO_REFRESH_MIN_INTERVAL - 1;
|
|
assertFalse(task.shouldAutoRefreshInbox());
|
|
|
|
// 1 ms laster... should sync.
|
|
mClock.advance();
|
|
assertTrue(task.shouldAutoRefreshInbox());
|
|
}
|
|
|
|
private static class MockRefreshManager extends RefreshManager {
|
|
public long mExpectedAccountId;
|
|
public long mExpectedMailboxId;
|
|
public boolean mIsMailboxListRefreshing;
|
|
public long mLastMailboxListRefresTime;
|
|
public boolean mIsMessageListRefreshing;
|
|
public long mLastMessageListRefresTime;
|
|
|
|
protected MockRefreshManager(
|
|
Context context, Controller controller, Clock clock, Handler handler) {
|
|
super(context, controller, clock, handler);
|
|
}
|
|
|
|
@Override
|
|
public boolean isMailboxListRefreshing(long accountId) {
|
|
Assert.assertEquals(mExpectedAccountId, accountId);
|
|
return mIsMailboxListRefreshing;
|
|
}
|
|
|
|
@Override
|
|
public long getLastMailboxListRefreshTime(long accountId) {
|
|
Assert.assertEquals(mExpectedAccountId, accountId);
|
|
return mLastMailboxListRefresTime;
|
|
}
|
|
|
|
@Override
|
|
public boolean isMessageListRefreshing(long mailboxId) {
|
|
Assert.assertEquals(mExpectedMailboxId, mailboxId);
|
|
return mIsMessageListRefreshing;
|
|
}
|
|
|
|
@Override
|
|
public long getLastMessageListRefreshTime(long mailboxId) {
|
|
Assert.assertEquals(mExpectedMailboxId, mailboxId);
|
|
return mLastMessageListRefresTime;
|
|
}
|
|
}
|
|
}
|