
com.xtremelabs.robolectric.shadows.ShadowSyncResult Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of robolectric Show documentation
Show all versions of robolectric Show documentation
An alternative Android testing framework.
The newest version!
package com.xtremelabs.robolectric.shadows;
import com.xtremelabs.robolectric.internal.Implementation;
import com.xtremelabs.robolectric.internal.Implements;
import com.xtremelabs.robolectric.internal.RealObject;
import android.content.SyncResult;
import android.content.SyncStats;
import java.lang.reflect.Field;
@Implements(SyncResult.class)
public class ShadowSyncResult {
@RealObject
private SyncResult result;
public void __constructor__() {
try {
Field f = SyncResult.class.getDeclaredField("stats");
f.setAccessible(true);
f.set(result, new SyncStats());
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
@Implementation
public boolean hasSoftError() {
return result.syncAlreadyInProgress || result.stats.numIoExceptions > 0;
}
@Implementation
public boolean hasHardError() {
return result.stats.numParseExceptions > 0
|| result.stats.numConflictDetectedExceptions > 0
|| result.stats.numAuthExceptions > 0
|| result.tooManyDeletions
|| result.tooManyRetries
|| result.databaseError;
}
@Implementation
public boolean hasError() {
return hasSoftError() || hasHardError();
}
@Implementation
public boolean madeSomeProgress() {
return ((result.stats.numDeletes > 0) && !result.tooManyDeletions)
|| result.stats.numInserts > 0
|| result.stats.numUpdates > 0;
}
@Implementation
public void clear() {
if (result.syncAlreadyInProgress) {
throw new UnsupportedOperationException(
"you are not allowed to clear the ALREADY_IN_PROGRESS SyncStats");
}
result.tooManyDeletions = false;
result.tooManyRetries = false;
result.databaseError = false;
result.fullSyncRequested = false;
result.partialSyncUnavailable = false;
result.moreRecordsToGet = false;
result.delayUntil = 0;
result.stats.clear();
}
@Implements(SyncStats.class)
public static class ShadowSyncStats {
@RealObject
private SyncStats stats;
@Implementation
public void clear() {
stats.numAuthExceptions = 0;
stats.numIoExceptions = 0;
stats.numParseExceptions = 0;
stats.numConflictDetectedExceptions = 0;
stats.numInserts = 0;
stats.numUpdates = 0;
stats.numDeletes = 0;
stats.numEntries = 0;
stats.numSkippedEntries = 0;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy