/* * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* * @test * @bug 8194489 * @summary The test checks whether BandedSampleModel computes appropriate * size for allocating memory in DataBuffer. * @run main BandedSampleModelSizeTest */ import java.awt.image.BandedSampleModel; import java.awt.image.DataBuffer; import java.util.Arrays; public class BandedSampleModelSizeTest { // Constants private static final int TEST_NUM_BANDS = 3; private static final int TEST_SRC_IMG_DIM = 10; // Required sample models private static BandedSampleModel singleBankModel = null; private static BandedSampleModel multiBankModel = null; private static void initTest() { int[] bandOffsets = new int[TEST_NUM_BANDS]; int[] bankIndices = new int[TEST_NUM_BANDS]; /* * Create a BandedSampleModel to store samples of all bands in one * bank of DataBuffer. */ bandOffsets[0] = 0; bandOffsets[1] = 120; bandOffsets[2] = 240; bankIndices[0] = 0; bankIndices[1] = 0; bankIndices[2] = 0; singleBankModel = new BandedSampleModel(DataBuffer.TYPE_BYTE, TEST_SRC_IMG_DIM, TEST_SRC_IMG_DIM, TEST_SRC_IMG_DIM, bankIndices, bandOffsets); /* * Create a BandedSampleModel to store samples of all bands in * different banks of DataBuffer. */ bandOffsets[0] = 0; bandOffsets[1] = 20; bandOffsets[2] = 40; bankIndices[0] = 0; bankIndices[1] = 1; bankIndices[2] = 2; multiBankModel = new BandedSampleModel(DataBuffer.TYPE_BYTE, TEST_SRC_IMG_DIM, TEST_SRC_IMG_DIM, TEST_SRC_IMG_DIM, bankIndices, bandOffsets); } private static void testSingleBankModel() { int[] srcSamples = new int[TEST_NUM_BANDS]; int[] resSamples = new int[TEST_NUM_BANDS]; // Create image buffer for the requried sample model DataBuffer imgBuffer = singleBankModel.createDataBuffer(); // Test the sample model by setting a pixel value & inspecting the same. Arrays.fill(srcSamples, 125); singleBankModel.setPixel(0, 0, srcSamples, imgBuffer); singleBankModel.getPixel(0, 0, resSamples, imgBuffer); if (!Arrays.equals(srcSamples, resSamples)) { throw new RuntimeException("Test Failed. Incorrect samples found" + " in the image"); } Arrays.fill(srcSamples, 250); singleBankModel.setPixel(9, 9, srcSamples, imgBuffer); singleBankModel.getPixel(9, 9, resSamples, imgBuffer); if (!Arrays.equals(srcSamples, resSamples)) { throw new RuntimeException("Test Failed. Incorrect samples found" + " in the image"); } } private static void testMultiBankModel() { int[] srcSamples = new int[TEST_NUM_BANDS]; int[] resSamples = new int[TEST_NUM_BANDS]; // Create image buffer for the required sample model DataBuffer imgBuffer = multiBankModel.createDataBuffer(); // Test the sample model by setting a pixel value & inspecting the same. Arrays.fill(srcSamples, 125); multiBankModel.setPixel(0, 0, srcSamples, imgBuffer); multiBankModel.getPixel(0, 0, resSamples, imgBuffer); if (!Arrays.equals(srcSamples, resSamples)) { throw new RuntimeException("Test Failed. Incorrect samples found" + " in the image"); } Arrays.fill(srcSamples, 250); multiBankModel.setPixel(9, 9, srcSamples, imgBuffer); multiBankModel.getPixel(9, 9, resSamples, imgBuffer); if (!Arrays.equals(srcSamples, resSamples)) { throw new RuntimeException("Test Failed. Incorrect samples found" + " in the image"); } } public static void main(String args[]) { // Initialize the test initTest(); // Test banded sample model with single bank of data buffer testSingleBankModel(); // Test banded sample model with multiple banks of data buffer testMultiBankModel(); } }