CloneConfigsTest.java revision 9330:8b1f1c2a400f
1/*
2 * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @bug     6822057 7124400
27 *
28 * @summary Test verifies that list of supported graphics configurations
29 *          can not be changed via modification of elements of an array
30 *          returned by getConfiguration() method.
31 *
32 * @run     main CloneConfigsTest
33 * @run     main/othervm -Dsun.java2d.opengl=True CloneConfigsTest
34 * @run     main/othervm -Dsun.java2d.d3d=true CloneConfigsTest
35 * @run     main/othervm -Dsun.java2d.noddraw=true CloneConfigsTest
36 */
37
38import java.awt.GraphicsConfiguration;
39import java.awt.GraphicsDevice;
40import java.awt.GraphicsEnvironment;
41import java.awt.Rectangle;
42import java.awt.geom.AffineTransform;
43import java.awt.image.BufferedImage;
44import java.awt.image.ColorModel;
45
46public class CloneConfigsTest {
47
48    public static void main(String[] args) {
49        GraphicsEnvironment env =
50                GraphicsEnvironment.getLocalGraphicsEnvironment();
51
52        GraphicsDevice[] devices = env.getScreenDevices();
53
54        GraphicsConfiguration c = new TestConfig();
55
56        for (GraphicsDevice gd : devices) {
57            System.out.println("Device: " + gd);
58
59            GraphicsConfiguration[] configs = gd.getConfigurations();
60
61            for (int i = 0; i < configs.length; i++) {
62                GraphicsConfiguration gc  = configs[i];
63                System.out.println("\tConfig: " + gc);
64
65                configs[i] = c;
66            }
67
68            // verify whether array of configs was modified
69            configs = gd.getConfigurations();
70            for (GraphicsConfiguration gc : configs) {
71                if (gc == c) {
72                    throw new RuntimeException("Test failed.");
73                }
74            }
75            System.out.println("Test passed.");
76        }
77    }
78
79    private static class TestConfig extends GraphicsConfiguration {
80
81        @Override
82        public GraphicsDevice getDevice() {
83            throw new UnsupportedOperationException("Not supported yet.");
84        }
85
86        @Override
87        public BufferedImage createCompatibleImage(int width, int height) {
88            throw new UnsupportedOperationException("Not supported yet.");
89        }
90
91        @Override
92        public ColorModel getColorModel() {
93            throw new UnsupportedOperationException("Not supported yet.");
94        }
95
96        @Override
97        public ColorModel getColorModel(int transparency) {
98            throw new UnsupportedOperationException("Not supported yet.");
99        }
100
101        @Override
102        public AffineTransform getDefaultTransform() {
103            throw new UnsupportedOperationException("Not supported yet.");
104        }
105
106        @Override
107        public AffineTransform getNormalizingTransform() {
108            throw new UnsupportedOperationException("Not supported yet.");
109        }
110
111        @Override
112        public Rectangle getBounds() {
113            throw new UnsupportedOperationException("Not supported yet.");
114        }
115
116    }
117
118}
119