blob: 950f8731bae1376ad99bca11cd20a68cb971aec9 [file] [log] [blame]
/*
* Copyright (C) 2008 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.graphics;
import android.graphics.Bitmap.Config;
import android.graphics.Path.Direction;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class PathOffsetTest {
private static final int SQUARE = 10;
private static final int WIDTH = 100;
private static final int HEIGHT = 100;
private static final int START_X = 10;
private static final int START_Y = 20;
private static final int OFFSET_X = 30;
private static final int OFFSET_Y = 40;
@Test
@SmallTest
public void testPathOffset() {
Path actualPath = new Path();
actualPath.addRect(START_X, START_Y, START_X + SQUARE, START_Y + SQUARE, Direction.CW);
assertTrue(actualPath.isSimplePath);
actualPath.offset(OFFSET_X, OFFSET_Y);
assertTrue(actualPath.isSimplePath);
Path expectedPath = new Path();
expectedPath.addRect(START_X + OFFSET_X, START_Y + OFFSET_Y, START_X + OFFSET_X + SQUARE,
START_Y + OFFSET_Y + SQUARE, Direction.CW);
assertPaths(actualPath, expectedPath);
}
@Test
@SmallTest
public void testPathOffsetWithDestination() {
Path initialPath = new Path();
initialPath.addRect(START_X, START_Y, START_X + SQUARE, START_Y + SQUARE, Direction.CW);
Path actualPath = new Path();
assertTrue(initialPath.isSimplePath);
assertTrue(actualPath.isSimplePath);
initialPath.offset(OFFSET_X, OFFSET_Y, actualPath);
assertTrue(actualPath.isSimplePath);
Path expectedPath = new Path();
expectedPath.addRect(START_X + OFFSET_X, START_Y + OFFSET_Y, START_X + OFFSET_X + SQUARE,
START_Y + OFFSET_Y + SQUARE, Direction.CW);
assertPaths(actualPath, expectedPath);
}
private static void assertPaths(Path actual, Path expected) {
Bitmap actualBitmap = drawAndGetBitmap(actual);
Bitmap expectedBitmap = drawAndGetBitmap(expected);
assertTrue(actualBitmap.sameAs(expectedBitmap));
}
private static Bitmap drawAndGetBitmap(Path path) {
Bitmap bitmap = Bitmap.createBitmap(WIDTH, HEIGHT, Config.ARGB_8888);
bitmap.eraseColor(Color.BLACK);
Paint paint = new Paint();
paint.setColor(Color.RED);
Canvas canvas = new Canvas(bitmap);
canvas.drawPath(path, paint);
return bitmap;
}
}