/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php * * 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.assetstudiolib; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.imageio.ImageIO; /** * Shared test infrastructure for bitmap generator */ public abstract class BitmapGeneratorTest extends GeneratorTest implements GraphicGeneratorContext { private static final String TEST_DATA_REL_PATH = "tools/base/asset-studio/src/test/java/com/android/assetstudiolib/testdata"; @Override protected String getTestDataRelPath() { return TEST_DATA_REL_PATH; }; protected void checkGraphic(int expectedFileCount, String folderName, String baseName, GraphicGenerator generator, GraphicGenerator.Options options) throws IOException { Map<String, Map<String, BufferedImage>> categoryMap = new HashMap<String, Map<String, BufferedImage>>(); options.sourceImage = GraphicGenerator.getClipartImage("android.png"); generator.generate(null, categoryMap, this, options, baseName); File targetDir = getTargetDir(); List<String> errors = new ArrayList<String>(); int fileCount = 0; for (Map<String, BufferedImage> previews : categoryMap.values()) { for (Map.Entry<String, BufferedImage> entry : previews.entrySet()) { String relativePath = entry.getKey(); BufferedImage image = entry.getValue(); if (image == null) continue; String path = "testdata" + File.separator + folderName + File.separator + relativePath; InputStream is = BitmapGeneratorTest.class.getResourceAsStream(path); if (is == null) { String filePath = folderName + File.separator + relativePath; String generatedFilePath = generateGoldenImage(targetDir, image, path, filePath); errors.add("File did not exist, created " + generatedFilePath); } else { BufferedImage goldenImage = ImageIO.read(is); assertImageSimilar(relativePath, goldenImage, image, 5.0f); } } fileCount += previews.values().size(); } if (!errors.isEmpty()) { fail(errors.toString()); } assertEquals("Wrong number of generated files", expectedFileCount, fileCount); } @Override public BufferedImage loadImageResource(String path) { try { return GraphicGenerator.getStencilImage(path); } catch (IOException e) { fail(e.toString()); } return null; } }