blob: 084a51fd3072960c12a3eb75473e49f2174daeec [file] [log] [blame]
/*
* Copyright (C) 2013 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.providers.contacts;
import android.test.suitebuilder.annotation.SmallTest;
import junit.framework.TestCase;
import java.util.Map;
import java.util.Set;
/**
* Unit tests for TransactionContext.
*/
@SmallTest
public class TransactionContextTest extends TestCase {
public void testClearExceptSearchIndexUpdates_returnsNewSets() {
TransactionContext context = new TransactionContext(false);
context.markRawContactDirtyAndChanged(1L, false);
context.rawContactUpdated(1L);
context.rawContactInserted(1L, 1L);
context.syncStateUpdated(1L, new Object());
context.clearExceptSearchIndexUpdates();
Set<Long> newDirty = context.getDirtyRawContactIds();
Set<Long> newChanged = context.getChangedRawContactIds();
Set<Long> newInserted = context.getInsertedRawContactIds();
Set<Long> newUpdated = context.getUpdatedRawContactIds();
Set<Map.Entry<Long, Object>> newSync = context.getUpdatedSyncStates();
assertTrue(newDirty.isEmpty());
assertTrue(newChanged.isEmpty());
assertTrue(newInserted.isEmpty());
assertTrue(newUpdated.isEmpty());
assertTrue(newSync.isEmpty());
}
public void testMarkDirtyAndChanged_onlyUpdatesChanged() {
TransactionContext context = new TransactionContext(false);
context.markRawContactDirtyAndChanged(1L, true /* isSyncAdapter */);
assertEquals(1, context.getChangedRawContactIds().size());
assertEquals(0, context.getDirtyRawContactIds().size());
}
public void testMarkDirtyAndChanged_onlyUpdatesDirtyAndChanged() {
TransactionContext context = new TransactionContext(false);
context.markRawContactDirtyAndChanged(1L, false /* isSyncAdapter */);
assertEquals(1, context.getChangedRawContactIds().size());
assertEquals(1, context.getDirtyRawContactIds().size());
}
public void testRawContactInserted_affectsChangedContacts() {
TransactionContext context = new TransactionContext(false);
assertTrue(context.getChangedRawContactIds().isEmpty());
context.rawContactInserted(1L, 2L);
assertEquals(1, context.getChangedRawContactIds().size());
assertTrue(context.getChangedRawContactIds().contains(1L));
context.rawContactInserted(5L, 10L);
assertEquals(2, context.getChangedRawContactIds().size());
assertTrue(context.getChangedRawContactIds().contains(5L));
}
public void testMarkRawContactChangedOrDeletedOrInserted_affectsChangedContacts() {
TransactionContext context = new TransactionContext(false);
assertTrue(context.getChangedRawContactIds().isEmpty());
context.markRawContactChangedOrDeletedOrInserted(1L);
assertEquals(1, context.getChangedRawContactIds().size());
assertTrue(context.getChangedRawContactIds().contains(1L));
context.rawContactInserted(5L, 10L);
assertEquals(2, context.getChangedRawContactIds().size());
assertTrue(context.getChangedRawContactIds().contains(5L));
}
}