6848799: Reg-test java/awt/print/PageFormat/PageFormatFromAttributes.java fails on Rhel_5
Reviewed-by: tdv, prr
--- a/jdk/src/solaris/classes/sun/print/IPPPrintService.java Wed Jun 24 11:49:16 2009 -0700
+++ b/jdk/src/solaris/classes/sun/print/IPPPrintService.java Wed Jul 01 12:07:55 2009 -0700
@@ -661,9 +661,10 @@
}
}
} else if (category == OrientationRequested.class) {
- if (flavor.equals(DocFlavor.INPUT_STREAM.POSTSCRIPT) ||
- flavor.equals(DocFlavor.URL.POSTSCRIPT) ||
- flavor.equals(DocFlavor.BYTE_ARRAY.POSTSCRIPT)) {
+ if ((flavor != null) &&
+ (flavor.equals(DocFlavor.INPUT_STREAM.POSTSCRIPT) ||
+ flavor.equals(DocFlavor.URL.POSTSCRIPT) ||
+ flavor.equals(DocFlavor.BYTE_ARRAY.POSTSCRIPT))) {
return null;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/print/PageFormat/PageFormatFromAttributes.java Wed Jul 01 12:07:55 2009 -0700
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2009 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 4500750 6848799
+ * @summary Tests creating page format from attributes
+ * @run main PageFormatFromAttributes
+ */
+import java.awt.print.*;
+import javax.print.*;
+import javax.print.attribute.*;
+import javax.print.attribute.standard.*;
+
+public class PageFormatFromAttributes {
+
+ public static void main(String args[]) {
+ PrinterJob job = PrinterJob.getPrinterJob();
+ PrintService service = job.getPrintService();
+ if (service == null) {
+ return; // No printers
+ }
+ PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
+ test(job, MediaSizeName.ISO_A4, OrientationRequested.PORTRAIT);
+ test(job, MediaSizeName.ISO_A4, OrientationRequested.LANDSCAPE);
+ test(job, MediaSizeName.ISO_A4,
+ OrientationRequested.REVERSE_LANDSCAPE);
+ test(job, MediaSizeName.ISO_A3, OrientationRequested.PORTRAIT);
+ test(job, MediaSizeName.NA_LETTER, OrientationRequested.PORTRAIT);
+ test(job, MediaSizeName.NA_LETTER, OrientationRequested.LANDSCAPE);
+ test(job, MediaSizeName.NA_LEGAL, OrientationRequested.PORTRAIT);
+ }
+
+ static void test(PrinterJob job,
+ MediaSizeName media, OrientationRequested orient) {
+
+ PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
+ aset.add(media);
+ aset.add(orient);
+
+ PrintService service = job.getPrintService();
+ if (!service.isAttributeValueSupported(media, null, aset) ||
+ !service.isAttributeValueSupported(orient, null, aset)) {
+ return; // Can't test this case.
+ }
+ PageFormat pf = job.getPageFormat(aset);
+ boolean ok = true;
+ switch (pf.getOrientation()) {
+ case PageFormat.PORTRAIT :
+ ok = orient == OrientationRequested.PORTRAIT;
+ break;
+ case PageFormat.LANDSCAPE :
+ ok = orient == OrientationRequested.LANDSCAPE;
+ break;
+ case PageFormat.REVERSE_LANDSCAPE :
+ ok = orient == OrientationRequested.REVERSE_LANDSCAPE;
+ break;
+ }
+ if (!ok) {
+ throw new RuntimeException("orientation not as specified");
+ }
+ MediaSize mediaSize = MediaSize.getMediaSizeForName(media);
+ if (mediaSize == null) {
+ throw new RuntimeException("expected a media size");
+ }
+ double units = Size2DSyntax.INCH/72.0;
+ int w = (int)(mediaSize.getX(1)/units);
+ int h = (int)(mediaSize.getY(1)/units);
+ Paper paper = pf.getPaper();
+ int pw = (int)paper.getWidth();
+ int ph = (int)paper.getHeight();
+ if (pw != w || ph != h) {
+ throw new RuntimeException("size not as specified");
+ }
+ }
+}