/*
* Copyright (C) 2007 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 android.view;
import android.view.BigCache;
import com.android.frameworks.coretests.R;
import android.test.ActivityInstrumentationTestCase;
import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
import android.view.ViewConfiguration;
import android.graphics.Bitmap;
/**
* Builds the drawing cache of two Views, one smaller than the maximum cache size,
* one larger than the maximum cache size. The latter should always have a null
* drawing cache.
*/
public class BigCacheTest extends ActivityInstrumentationTestCase<BigCache> {
private View mTiny;
private View mLarge;
public BigCacheTest() {
super("com.android.frameworks.coretests", BigCache.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
final BigCache activity = getActivity();
mTiny = activity.findViewById(R.id.a);
mLarge = activity.findViewById(R.id.b);
}
@MediumTest
public void testSetUpConditions() throws Exception {
assertNotNull(mTiny);
assertNotNull(mLarge);
}
@MediumTest
public void testDrawingCacheBelowMaximumSize() throws Exception {
final int max = ViewConfiguration.get(getActivity()).getScaledMaximumDrawingCacheSize();
assertTrue(mTiny.getWidth() * mTiny.getHeight() * 2 < max);
assertNotNull(createCacheForView(mTiny));
}
// TODO: needs to be adjusted to pass on non-HVGA displays
// @MediumTest
public void testDrawingCacheAboveMaximumSize() throws Exception {
final int max = ViewConfiguration.get(getActivity()).getScaledMaximumDrawingCacheSize();
assertTrue(mLarge.getWidth() * mLarge.getHeight() * 2 > max);
assertNull(createCacheForView(mLarge));
}
private Bitmap createCacheForView(final View view) {
final Bitmap[] cache = new Bitmap[1];
getActivity().runOnUiThread(new Runnable() {
public void run() {
view.setDrawingCacheEnabled(true);
view.invalidate();
view.buildDrawingCache();
cache[0] = view.getDrawingCache();
}
});
getInstrumentation().waitForIdleSync();
return cache[0];
}
}