/* $XConsortium: README /main/4 1996/07/15 14:25:32 drk $ */ 3. OSF/Motif Toolkit Tests This README describes the OSF/Motif Toolkit tests. It pro- vides information about the individual tests, and offers instructions for running and interpreting the tests and test output. Note Throughout this README, we use the path ./tests/Toolkit to identify the top directory of the Toolkit tests. The ./ indicates the testing tree root and is not an actual path designation. For example, if you installed the Motif 1.1 release software at /source/Motif, then ./tests/Toolkit translates to /source/Motif/tests/Toolkit at your site. 3.1 Overview and Directory Structure The OSF/Motif Toolkit test directory, ./tests/Toolkit, con- sists of several files and subdirectories: * The file Imakefile is used to build Makefile, which in it's turn is used to build the tests. * The subdirectory ./tests/Toolkit/bitmaps contains bit- maps used by some of the Toolkit tests. * The Buttons subdirectory contains the toolkit tests of Button widgets and gadgets. This test subdirectory contains the following tests. ArrowBGad1 ArrowBtn4 PushBtn2 ArrowBGad2 DrawnBtn1 ToggleBGad1 ArrowBGad3 DrawnBtn2 ToggleBGad2 ArrowBGad4 PushBGad1 ToggleBGad3 ArrowBGad5 PushBGad2 ToggleBGad4 ArrowBtn1 PushBGad3 ToggleBtn1 ArrowBtn2 PushBGad4 ToggleBtn2 ArrowBtn3 PushBtn1 * The Constraint subdirectory contains the toolkit tests of Form and PanedWindow constraints. This test sub- directory contains the following tests. Form1 Form16 PanedWin1 Form2 Form17 PanedWin2 Form3 Form18 PanedWin3 Form4 Form19 PanedWin4 Form5 Form20 PanedWin5 Form6 Form21 PanedWin6 Form7 Form22 PanedWin7 Form8 Form23 PanedWin8 Form9 Form24 PanedWin9 Form10 Form25 PanedWin10 Form11 Form26 PanedWin11 Form12 Form27 PanedWin12 Form13 Form28 PanedWin13 Form14 FormDia1 PanedWin14 Form15 PanedWin1 * The CutPaste subdirectory contains the toolkit tests of the cut and paste mechanisms. This test subdirectory contains the following tests. Cutpaste1 Cutpaste3 icccm Cutpaste2a Cutpaste4a multi Cutpaste2b Cutpaste4b * The List subdirectory contains the toolkit tests of the List widget. This test subdirectory contains the fol- lowing tests. List1 List5 ScrollList2 List2 List6 ScrollList3 List3 List7 ScrollList4 List4 ScrollList1 * The Manager subdirectory contains the toolkit tests of the various manager widgets. This test subdirectory contains the following tests. BBoard1 BBoard7 Frame1 BBoard2 DrawArea1 Frame2 BBoard3 DrawArea2 Frame3 BBoard4 RowCol1 Frame4 BBoard5 RowCol2 BBoard6 RowCol3 * The Menus subdirectory contains the toolkit tests of Menus and Menu systems. This test subdirectory con- tains the following tests. Menu1 MenuBar1 PopupMenu1 Menu2 MenuGad1 PopupMenu2 Menu3 OptionMenu1 RowCol1 Menu4 OptionMenu2 RowCol2 Menu5 OptionMenu3 Simple1 Menu6 OptionMenu4 WindowMenu1 * The Message subdirectory contains the toolkit tests of MessageBoxes. This test subdirectory contains the fol- lowing tests. ErrorDia1 MessageBox5 QuestionDia1 InfoDia1 MessageBox6 QuestionDia2 MessageBox1 MessageBox7 WarningDia1 MessageBox2 MessageBox8 WorkingDia1 MessageBox3 MessageDia1 MessageBox4 MessageDia2 * The Other subdirectory contains the toolkit tests of miscellaneous toolkit functions. This test subdirec- tory contains the following tests. Color1 Navigation5 Navigation11 Grab1 Navigation6 ResPartOff Navigation1 Navigation7 TrackingLoc1 Navigation2 Navigation8 Conversion1 Navigation3 Navigation9 Conversion2 Navigation4 Navigation10 * The Primitive subdirectory contains the toolkit tests of primitive Motif widgets and gadgets. This test sub- directory contains the following tests. Label1 Scrollbar1 Scrollbar8 Label2 Scrollbar2 Scrollbar9 Label3 Scrollbar3 Scrollbar10 Label4 Scrollbar4 Scrollbar11 Label5 Scrollbar5 Separ1 Label6 Scrollbar6 SeparGad1 LabelGad1 Scrollbar7 * The Select subdirectory contains the toolkit tests of selection dialogs and Scale. This test subdirectory contains the following tests. Command1 Scale1 Scale7 Command2 Scale2 Scale8 Command3 Scale3 Scale9 FileSelect1 Scale4 Scale10 FileSelect2 Scale5 SelectBox1 PromptDia1 Scale6 * The Shells subdirectory contains the toolkit tests of shells. This test subdirectory contains the following tests. DiaShell1 DiaShell2 * The Text subdirectory contains the toolkit tests of the Text and TextField widgets. This test subdirectory contains the following tests. ScrollText1 Text3 Text8 ScrollText2 Text4 Text9 ScrollText3 Text5 TextField1 Text1 Text6 TextField2 Text2 Text7 * The Windows subdirectory contains the toolkit tests of MainWindows and ScrolledWindows. This test subdirec- tory contains the following tests. MainWin1 ScrollWin2 ScrollWin5 MainWin2 ScrollWin3 ScrollWin1 ScrollWin4 Each test subdirectory contains the following common files. Each test subdirectory may not contain all of the different files. * The file Imakefile is used to build Makefile, which in it's turn is used to build the tests. * The README file contains information specific to that test directory's build and run procedure. A README file will only exist if the test subdirectory has a nonstandard build or run procedure, or if a bug exists in one of the tests. * The file RUN is used to run all the Toolkit tests in series. In some instances the RUN script also initial- izes a test before running it. * Test source files consisting of the suffixes .c, .h, and .uil. * The file allheaders.h contains declarations used by most of the tests. 3.2 Compiling the Tests All the tests must be compiled before you can run them. * If you used the global build process after installing the software, the tests should already be built. We do not recommend building the tests with global build pro- cess because of the size of the test suite. (This assumes that you did not move the test suite files prior to invoking the make commands.) * If you did not include the test suite files in your initial global build process, you can build the tests now using the make all command from the ./tests/Toolkit directory. * You can build just the tests in one test subdirectory using the make all command from the specific test sub- directory. For example, to build the tests in the List subdirectory, enter the make all command from the ./tests/Toolkit/List test subdirectory. The compiled tests use a large amount of disk space. You may prefer to build each test separately if disk space is limited at your site. You can build each test individually using the make command for each test. For example, to build the Text4 test in the Text test subdirectory, enter the com- mand make Text4 from the ./tests/Toolkit/Text test subdirec- tory. 3.3 Running the Toolkit Tests The tests in this section are interactive tests. They include a MessageBox with instructions for running and interpreting the test. The MessageBox provides step-by-step instructions for running each test. The instructions assume you have a general knowledge of Motif behavior, and often omit simple descriptions of what to expect after each step. For example, if the instructions say that you should resize a window, they assume that you know to look for problems in resizing, such as improper layout after the resize, or visual corruption of the elements. The instructions also often omit repetitive instructions or results. For example, if the instructions say that you should press the button marked Clear and that this should clear a text area, they assume that you will look for the text area to clear every time you are instructed to press the Clear button in that test. You can run all the tests in a test subdirectory in series with the RUN script in the specific test subdirectory. In some cases the RUN script initializes a test or cleans up after a test is executed. These initialization and cleanup procedures are described where appropriate in the following information about running the tests individually. To run most of the tests individually, simply enter the name of the compiled test in the appropriate test subdirectory. For example, enter PushBtn1 in the ./tests/Toolkit/Buttons test subdirectory to run the PushBtn1 test. The following tests require special initialization and cleanup procedures. CutPaste/CutPaste2* This test requires multiple clients to test cut and paste interaction among mul- tiple clients. First, two instances of Cutpaste2a should be started up. Second, Cutpaste2b should be started up. Then the instructions can be followed correctly. The RUN script simply insures that after the test is completed, all the clients are properly killed. The script RUN_CP2 runs this test independently. CutPaste/Cutpaste4* This test requires two clients to test cut and paste interaction between clients. Both Cutpaste4a and Cutpaste4b should be started up, then the instructions can be followed correctly. The RUN script simply insures that after the test is completed, both clients are properly killed. The script RUN_CP4 runs this test indepen- dently. List/List3 This test requires special resources located in the file List3DB. The RUN script saves the current resources, merges in the new resources, runs the test, and then restores the old resources using the following commands. xrdb -e /tmp/$$tmp1 xrdb -merge List3DB List3 xrdb -load /tmp/$$tmp1 Other/Conversion1 This test is not interactive. The results of the test are sent to the standard out- put. The RUN script simply redirects the results to the file conversion1.out. This test should produce a series of warning messages. Other/Conversion2 This test is not interactive. The results of the test are sent to the standard out- put. The RUN script simply redirects the results to the file conversion2.out. This test should produce a series of warning messages. Select/FileSelect* This test relies on the file structure in the directory ./tests/Toolkit/Select/FS being available in the directory /tmp. The RUN script executes the ./tests/Toolkit/Select/setup script, which copies the FS directory structure into /tmp. The RUN script then executes the tests FileSelect1 and FileSelect2, and finally executes the ./tests/Toolkit/Select/clean script, which removes the FS directory structure from /tmp. The program icccm is a simple client that is implemented using the clipboard mechanism described by the ICCCM. It does not use any Motif clipboard mechanisms. It contains the following six PushButtons: Request TARGETS Prints to the standard output the results of XConvertSelection from the clipboard with ICCCM XA_TARGETS atom as the type selected. Request formats Prints the results of XConvertSelection through a loop of any data in the clip- board found during the TARGETS request. Request MULTIPLE Does the same thing as Request formats except it uses the ICCCM atom XA_MULTIPLE and makes only one XConvertSelection call to get all the TARGETS data. Request TIMESTAMP Prints the results of XConvertSelection using the ICCCM XA_TIMESTAMP atom. Own CLIPBOARD Calls XSetSelectionOwner setting itself as the owner of the clipboard. Quit Quits the icccm application. The program multi is a typical Motif client that uses the clipboard. It contains elements that can be cut or pasted to the clipboard using the applications Popup Menu, which is usually popped-up using mouse button 3. Using icccm and multi together we test the interaction between the Motif clipboard and standard ICCCM clipboards. Run the test by starting up two multi clients and one icccm client. Verify that the clipboard operates properly between two Motif clients by cutting and pasting between the two multi clients. You can then use the icccm client to verify that the items cut from the Motif application can be prop- erly recognized by a non-Motif client. Verify that this works correctly for regular cutting and cutting by name, and that it works correctly for cutting strings, integers, pix- maps, and various combinations of the three. Also verify that items cut from the icccm client can be pasted into the multi clients by choosing Own CLIPBOARD from the icccm client and then use the Inquire and Paste options in the multi client. Inquire should return STRING and INTEGER. Paste should return ICCCM Clipboard Text and 911.