package com.permissionnanny.common.test;
import android.content.Intent;
import android.support.annotation.Nullable;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
/**
*
*/
public class IsIntentEqual extends BaseMatcher<Intent> {
private Intent mExpected;
private IsBundleEqual mBundleMatcher;
public IsIntentEqual(@Nullable Intent expected) {
mExpected = expected;
if (mExpected != null) {
mBundleMatcher = new IsBundleEqual(expected.getExtras());
}
}
@Override
public boolean matches(Object actual) {
if (mExpected == null) {
return actual == null;
}
// Type must match
if (!(actual instanceof Intent)) {
return false;
}
// Bundle must match
Intent actualIntent = (Intent) actual;
if (!mBundleMatcher.matches(actualIntent.getExtras())) {
return false;
}
// Metadata & extra data must match
return mExpected.filterEquals(actualIntent) && mExpected.equals(actualIntent);
}
@Override
public void describeTo(Description description) {
description.appendValue(mExpected);
}
}