Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
193 changes: 22 additions & 171 deletions test/jdk/java/awt/print/PageFormat/NullPaper.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 2024, 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
Expand All @@ -21,176 +21,27 @@
* questions.
*/

/*
@test
@bug 4199506
@summary java.awt.print.PageFormat.setpaper(Paper paper)
assertion test fails by not throwing
NullPointerException when a null paper instance is
passed as argument and this is specified in the doc.
@run main NullPaper
*/


//*** global search and replace NullPaper with name of the test ***

/**
* NullPaper.java
*
* summary: java.awt.print.PageFormat.setpaper(Paper paper)
assertion test fails by not throwing
NullPointerException when a null paper instance is
passed as argument and this is specified in the doc.
import java.awt.print.PageFormat;

/*
* @test
* @bug 4199506
* @summary Verify PageFormat.setPaper(null) throws NullPointerException
* as specified
* @run main NullPaper
*/

import java.awt.print.*;

// This test is a "main" test as applets would need Runtime permission
// "queuePrintJob".

public class NullPaper {

private static void init()
{
boolean settingNullWorked = false;

try {
/* Setting the paper to null should throw an exception.
* The bug was the exception was not being thrown.
*/
new PageFormat().setPaper(null);
settingNullWorked = true;

/* If the test succeeds we'll end up here, so write
* to standard out.
*/
} catch (NullPointerException e) {
pass();

/* The test failed if we end up here because an exception
* other than the one we were expecting was thrown.
*/
} catch (Exception e) {
fail("Instead of the expected NullPointerException, '" + e + "' was thrown.");
}

if (settingNullWorked) {
fail("The expected NullPointerException was not thrown");
}

}//End init()


/*****************************************************
Standard Test Machinery Section
DO NOT modify anything in this section -- it's a
standard chunk of code which has all of the
synchronisation necessary for the test harness.
By keeping it the same in all tests, it is easier
to read and understand someone else's test, as
well as insuring that all tests behave correctly
with the test harness.
There is a section following this for test-defined
classes
******************************************************/
private static boolean theTestPassed = false;
private static boolean testGeneratedInterrupt = false;
private static String failureMessage = "";

private static Thread mainThread = null;

private static int sleepTime = 300000;

public static void main( String args[] ) throws InterruptedException
{
mainThread = Thread.currentThread();
try
{
init();
}
catch( TestPassedException e )
{
//The test passed, so just return from main and harness will
// interepret this return as a pass
return;
}
//At this point, neither test passed nor test failed has been
// called -- either would have thrown an exception and ended the
// test, so we know we have multiple threads.

//Test involves other threads, so sleep and wait for them to
// called pass() or fail()
try
{
Thread.sleep( sleepTime );
//Timed out, so fail the test
throw new RuntimeException( "Timed out after " + sleepTime/1000 + " seconds" );
}
catch (InterruptedException e)
{
if( ! testGeneratedInterrupt ) throw e;

//reset flag in case hit this code more than once for some reason (just safety)
testGeneratedInterrupt = false;
if ( theTestPassed == false )
{
throw new RuntimeException( failureMessage );
}
}

}//main

public static synchronized void setTimeoutTo( int seconds )
{
sleepTime = seconds * 1000;
}

public static synchronized void pass()
{
System.out.println( "The test passed." );
//first check if this is executing in main thread
if ( mainThread == Thread.currentThread() )
{
//Still in the main thread, so set the flag just for kicks,
// and throw a test passed exception which will be caught
// and end the test.
theTestPassed = true;
throw new TestPassedException();
}
//pass was called from a different thread, so set the flag and interrupt
// the main thead.
theTestPassed = true;
testGeneratedInterrupt = true;
mainThread.interrupt();
}//pass()

public static synchronized void fail()
{
//test writer didn't specify why test failed, so give generic
fail( "it just plain failed! :-)" );
public final class NullPaper {
public static void main(String[] args) {
try {
/* Setting the paper to null should throw an exception.
* The bug was the exception was not being thrown.
*/
new PageFormat().setPaper(null);

throw new RuntimeException("NullPointerException is expected "
+ "but not thrown");
} catch (NullPointerException e) {
System.out.println("NullPointerException caught - test passes");
}
}

public static synchronized void fail( String whyFailed )
{
System.out.println( "The test failed: " + whyFailed );
//check if this called from main thread
if ( mainThread == Thread.currentThread() )
{
//If main thread, fail now 'cause not sleeping
throw new RuntimeException( whyFailed );
}
theTestPassed = false;
testGeneratedInterrupt = true;
failureMessage = whyFailed;
mainThread.interrupt();
}//fail()

}// class NullPaper

//This exception is used to exit from any level of call nesting
// when it's determined that the test has passed, and immediately
// end the test.
class TestPassedException extends RuntimeException
{
}
}