diff options
author | RĂ¼diger Timm <rt@openoffice.org> | 2004-04-02 09:46:59 +0000 |
---|---|---|
committer | RĂ¼diger Timm <rt@openoffice.org> | 2004-04-02 09:46:59 +0000 |
commit | d34fd01fc89ffbb5f3c9ba4406afa6b8bfa33875 (patch) | |
tree | 0411880e835f62d9675465f0c98bc431afc67296 /forms/qa/integration | |
parent | ecea2ebf16127fe107d8b6ea2f7a74ed99bd87cd (diff) |
INTEGRATION: CWS frmvalidation (1.1.2); FILE ADDED
2004/03/11 16:50:19 fs 1.1.2.1: some more classes for integration tests
Diffstat (limited to 'forms/qa/integration')
-rw-r--r-- | forms/qa/integration/forms/ControlValidation.java | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/forms/qa/integration/forms/ControlValidation.java b/forms/qa/integration/forms/ControlValidation.java new file mode 100644 index 000000000000..add8947474d5 --- /dev/null +++ b/forms/qa/integration/forms/ControlValidation.java @@ -0,0 +1,232 @@ +/************************************************************************* + * + * $RCSfile: ControlValidation.java,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: rt $ $Date: 2004-04-02 10:46:59 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +package integration.forms; + +import com.sun.star.uno.*; +import com.sun.star.util.*; +import com.sun.star.lang.*; +import com.sun.star.accessibility.*; +import com.sun.star.container.*; +import com.sun.star.beans.*; +import com.sun.star.form.binding.*; + +import complexlib.ComplexTestCase; +import integration.forms.DocumentHelper; +import integration.forms.NumericValidator; +import integration.forms.TextValidator; +import integration.forms.BooleanValidator; +import integration.forms.ListSelectionValidator; +import integration.forms.SingleControlValidation; + +/** + * + * @author fs@openoffice.org + */ +public class ControlValidation extends complexlib.ComplexTestCase implements com.sun.star.lang.XEventListener +{ + private DocumentHelper m_document; /// our current test document + private XMultiServiceFactory m_orb; /// our service factory + + /** Creates a new instance of ControlValidation */ + public ControlValidation() + { + } + + public String[] getTestMethodNames() + { + return new String[] { + "interactiveValidation" + }; + } + + public String getTestObjectName() + { + return "Form Control Validation Test"; + } + + /* ------------------------------------------------------------------ */ + /* test framework */ + /* ------------------------------------------------------------------ */ + public void before() throws com.sun.star.uno.Exception, java.lang.Exception + { + m_orb = (XMultiServiceFactory)param.getMSF(); + } + + /* ------------------------------------------------------------------ */ + private void prepareTestStep( ) throws com.sun.star.uno.Exception, java.lang.Exception + { + m_document = DocumentHelper.blankTextDocument( m_orb ); + m_document.getDocument( ).addEventListener( this ); + } + + /* ------------------------------------------------------------------ */ + public void after() + { + closeDocument(); + } + + /* ------------------------------------------------------------------ */ + /** closes our document, if we have an open one + */ + private void closeDocument() + { + try + { + // close our document + if ( m_document != null ) + { + XCloseable closeDoc = (XCloseable)UnoRuntime.queryInterface( XCloseable.class, + m_document.getDocument() ); + closeDoc.close( true ); + } + } + catch ( com.sun.star.uno.Exception e ) + { + e.printStackTrace( System.out ); + } + } + + /* ------------------------------------------------------------------ */ + /* public test methods */ + /* ------------------------------------------------------------------ */ + public void interactiveValidation() throws com.sun.star.uno.Exception, java.lang.Exception + { + prepareTestStep(); + + SingleControlValidation validation; + XPropertySet focusField; + + validation = new SingleControlValidation( m_document, 5, 5, "DatabaseFormattedField", new NumericValidator() ); + focusField = validation.getInputField(); + validation.setExplanatoryText( "Please enter a number between 0 and 100, with at most 1 decimal digit" ); + + validation = new SingleControlValidation( m_document, 90, 5, "DatabaseTextField", new TextValidator() ); + validation.setExplanatoryText( "Please enter a text whose length is a multiple of 3, and which does not contain the letter 'Z'" ); + + validation = new SingleControlValidation( m_document, 5, 55, "DatabaseDateField", new DateValidator() ); + validation.setExplanatoryText( "Please enter a date in the current month" ); + validation.getInputField().setPropertyValue( "Dropdown", new Boolean( true ) ); + + validation = new SingleControlValidation( m_document, 90, 55, "DatabaseTimeField", new TimeValidator() ); + validation.setExplanatoryText( "Please enter a time. Valid values are all full hours." ); + + validation = new SingleControlValidation( m_document, 5, 110, "DatabaseCheckBox", new BooleanValidator( false ) ); + validation.setExplanatoryText( "Please check (well, or uncheck) the box. Don't leave it in indetermined state." ); + validation.getInputField().setPropertyValue( "TriState", new Boolean( true ) ); + + validation = new SingleControlValidation( m_document, 90, 110, "DatabaseRadioButton", new BooleanValidator( true ), 3, 0 ); + validation.setExplanatoryText( "Please check any but the first button" ); + + validation = new SingleControlValidation( m_document, 5, 165, "DatabaseListBox", new ListSelectionValidator( ), 1, 24 ); + validation.setExplanatoryText( "Please select not more than two entries." ); + validation.getInputField().setPropertyValue( "MultiSelection", new Boolean( true ) ); + validation.getInputField().setPropertyValue( "StringItemList", new String[] { "first", "second", "third", "forth", "fivth" } ); + + // switch to alive mode + m_document.getCurrentView( ).toggleFormDesignMode( ); + m_document.getCurrentView( ).grabControlFocus( focusField ); + + // wait for the user telling us to exit + waitForUserInput(); + } + + /* ------------------------------------------------------------------ */ + /* internal methods */ + /* ------------------------------------------------------------------ */ + /** waits for the user to press a key (on the console where she started the java program) + or the document to be closed by the user. + @return + <TRUE/> if the user pressed a key on the console, <FALSE/> if she closed the document + */ + protected boolean waitForUserInput() throws java.lang.Exception + { + synchronized (this) + { + integration.forms.WaitForInput aWait = new integration.forms.WaitForInput( this ); + aWait.start(); + wait(); + + // if the waiter thread is done, the user pressed enter + boolean bKeyPressed = aWait.isDone(); + if ( !bKeyPressed ) + aWait.interrupt(); + + return bKeyPressed; + } + } + + /* ------------------------------------------------------------------ */ + /* XEventListener overridables */ + /* ------------------------------------------------------------------ */ + public void disposing( com.sun.star.lang.EventObject eventObject ) + { + if ( m_document.getDocument().equals( eventObject.Source ) ) + { + // notify ourself that we can stop waiting for user input + synchronized (this) + { + notify(); + } + } + } + +} |