0N/A/*
2362N/A * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
0N/A * published by the Free Software Foundation.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/A
0N/A/*
0N/A test
0N/A @bug 6461933
0N/A @summary adjust system boot time in nowMillisUTC() frequently
0N/A @author Andrei Dmitriev : area=awt.component
0N/A @run applet/manual=yesno UpdatingBootTime.html
0N/A */
0N/A
0N/A/*
0N/A * verifies that time updated by the system is picked up by the Java App.
0N/A */
0N/A
0N/Aimport java.applet.Applet;
0N/Aimport java.awt.*;
0N/Aimport java.awt.event.*;
0N/Aimport java.util.Date;
0N/A
0N/Apublic class UpdatingBootTime extends Applet
0N/A{
0N/A //Declare things used in the test, like buttons and labels here
0N/A
0N/A public void init()
0N/A {
0N/A this.setLayout (new BorderLayout ());
0N/A
0N/A String[] instructions =
0N/A {
0N/A "1) Press the mouse over the button.",
0N/A "2) A two timestamps would be printed.",
0N/A "3) Verify that they are not differ a lot: it is okay to observe a 1 or 2 seconds difference.",
0N/A "4) Change the system time significantly(by a month or a year) by using the OS abilities.",
0N/A "5) Click on the button once again.",
0N/A "6) Printed times should still be the same. Pay attention to the Month/Year if they were changed.",
0N/A "7) It is okay to observe a 1 or 2 seconds difference and this is not a fail.",
0N/A "8) If the difference is more then 1-2 seconds noticed then the test fail; otherwise pass."
0N/A };
0N/A Sysout.createDialogWithInstructions( instructions );
0N/A
0N/A }//End init()
0N/A
0N/A public void start ()
0N/A {
0N/A Button b = new Button("Press me");
0N/A b.addMouseListener(new MouseAdapter(){
0N/A public void mousePressed(MouseEvent e){
0N/A Sysout.println("Event occured : "+e);
0N/A Sysout.println("The event time is : "+ (new Date(e.getWhen())));
0N/A Sysout.println("The system time is : "+ (new Date()));
0N/A }
0N/A });
0N/A add(b);
0N/A setSize (200,200);
0N/A setVisible(true);
0N/A validate();
0N/A }// start()
0N/A}// class UpdatingBootTime
0N/A
0N/A/* Place other classes related to the test after this line */
0N/A
0N/A
0N/A
0N/A
0N/A
0N/A/****************************************************
0N/A Standard Test Machinery
0N/A DO NOT modify anything below -- it's a standard
0N/A chunk of code whose purpose is to make user
0N/A interaction uniform, and thereby make it simpler
0N/A to read and understand someone else's test.
0N/A ****************************************************/
0N/A
0N/A/**
0N/A This is part of the standard test machinery.
0N/A It creates a dialog (with the instructions), and is the interface
0N/A for sending text messages to the user.
0N/A To print the instructions, send an array of strings to Sysout.createDialog
0N/A WithInstructions method. Put one line of instructions per array entry.
0N/A To display a message for the tester to see, simply call Sysout.println
0N/A with the string to be displayed.
0N/A This mimics System.out.println but works within the test harness as well
0N/A as standalone.
0N/A */
0N/A
0N/Aclass Sysout
0N/A{
0N/A private static TestDialog dialog;
0N/A
0N/A public static void createDialogWithInstructions( String[] instructions )
0N/A {
0N/A dialog = new TestDialog( new Frame(), "Instructions" );
0N/A dialog.printInstructions( instructions );
0N/A dialog.setVisible(true);
0N/A println( "Any messages for the tester will display here." );
0N/A }
0N/A
0N/A public static void createDialog( )
0N/A {
0N/A dialog = new TestDialog( new Frame(), "Instructions" );
0N/A String[] defInstr = { "Instructions will appear here. ", "" } ;
0N/A dialog.printInstructions( defInstr );
0N/A dialog.setVisible(true);
0N/A println( "Any messages for the tester will display here." );
0N/A }
0N/A
0N/A
0N/A public static void printInstructions( String[] instructions )
0N/A {
0N/A dialog.printInstructions( instructions );
0N/A }
0N/A
0N/A
0N/A public static void println( String messageIn )
0N/A {
0N/A dialog.displayMessage( messageIn );
0N/A }
0N/A
0N/A}// Sysout class
0N/A
0N/A/**
0N/A This is part of the standard test machinery. It provides a place for the
0N/A test instructions to be displayed, and a place for interactive messages
0N/A to the user to be displayed.
0N/A To have the test instructions displayed, see Sysout.
0N/A To have a message to the user be displayed, see Sysout.
0N/A Do not call anything in this dialog directly.
0N/A */
0N/Aclass TestDialog extends Dialog
0N/A{
0N/A
0N/A TextArea instructionsText;
0N/A TextArea messageText;
0N/A int maxStringLength = 80;
0N/A
0N/A //DO NOT call this directly, go through Sysout
0N/A public TestDialog( Frame frame, String name )
0N/A {
0N/A super( frame, name );
0N/A int scrollBoth = TextArea.SCROLLBARS_BOTH;
0N/A instructionsText = new TextArea( "", 15, maxStringLength, scrollBoth );
0N/A add( "North", instructionsText );
0N/A
0N/A messageText = new TextArea( "", 5, maxStringLength, scrollBoth );
0N/A add("Center", messageText);
0N/A
0N/A pack();
0N/A
0N/A setVisible(true);
0N/A }// TestDialog()
0N/A
0N/A //DO NOT call this directly, go through Sysout
0N/A public void printInstructions( String[] instructions )
0N/A {
0N/A //Clear out any current instructions
0N/A instructionsText.setText( "" );
0N/A
0N/A //Go down array of instruction strings
0N/A
0N/A String printStr, remainingStr;
0N/A for( int i=0; i < instructions.length; i++ )
0N/A {
0N/A //chop up each into pieces maxSringLength long
0N/A remainingStr = instructions[ i ];
0N/A while( remainingStr.length() > 0 )
0N/A {
0N/A //if longer than max then chop off first max chars to print
0N/A if( remainingStr.length() >= maxStringLength )
0N/A {
0N/A //Try to chop on a word boundary
0N/A int posOfSpace = remainingStr.
0N/A lastIndexOf( ' ', maxStringLength - 1 );
0N/A
0N/A if( posOfSpace <= 0 ) posOfSpace = maxStringLength - 1;
0N/A
0N/A printStr = remainingStr.substring( 0, posOfSpace + 1 );
0N/A remainingStr = remainingStr.substring( posOfSpace + 1 );
0N/A }
0N/A //else just print
0N/A else
0N/A {
0N/A printStr = remainingStr;
0N/A remainingStr = "";
0N/A }
0N/A
0N/A instructionsText.append( printStr + "\n" );
0N/A
0N/A }// while
0N/A
0N/A }// for
0N/A
0N/A }//printInstructions()
0N/A
0N/A //DO NOT call this directly, go through Sysout
0N/A public void displayMessage( String messageIn )
0N/A {
0N/A messageText.append( messageIn + "\n" );
0N/A System.out.println(messageIn);
0N/A }
0N/A
0N/A}// TestDialog class