summaryrefslogtreecommitdiff
path: root/xts5/Xlib5/XConvertSelection/XConvertSelection.m
diff options
context:
space:
mode:
Diffstat (limited to 'xts5/Xlib5/XConvertSelection/XConvertSelection.m')
-rw-r--r--xts5/Xlib5/XConvertSelection/XConvertSelection.m299
1 files changed, 299 insertions, 0 deletions
diff --git a/xts5/Xlib5/XConvertSelection/XConvertSelection.m b/xts5/Xlib5/XConvertSelection/XConvertSelection.m
new file mode 100644
index 00000000..6c979825
--- /dev/null
+++ b/xts5/Xlib5/XConvertSelection/XConvertSelection.m
@@ -0,0 +1,299 @@
+Copyright (c) 2005 X.Org Foundation L.L.C.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+$Header: /cvs/xtest/xtest/xts5/tset/Xlib5/XConvertSelection/XConvertSelection.m,v 1.2 2005-11-03 08:43:38 jmichael Exp $
+
+Copyright (c) Applied Testing and Technology, Inc. 1995
+All Rights Reserved.
+
+>># Project: VSW5
+>>#
+>># File: xts5/tset/Xlib5/XConvertSelection/XConvertSelection.m
+>>#
+>># Description:
+>># Tests for XConvertSelection()
+>>#
+>># Modifications:
+>># $Log: cnvrtslctn.m,v $
+>># Revision 1.2 2005-11-03 08:43:38 jmichael
+>># clean up all vsw5 paths to use xts5 instead.
+>>#
+>># Revision 1.1.1.2 2005/04/15 14:05:27 anderson
+>># Reimport of the base with the legal name in the copyright fixed.
+>>#
+>># Revision 8.0 1998/12/23 23:26:43 mar
+>># Branch point for Release 5.0.2
+>>#
+>># Revision 7.0 1998/10/30 22:45:00 mar
+>># Branch point for Release 5.0.2b1
+>>#
+>># Revision 6.0 1998/03/02 05:18:57 tbr
+>># Branch point for Release 5.0.1
+>>#
+>># Revision 5.0 1998/01/26 03:15:28 tbr
+>># Branch point for Release 5.0.1b1
+>>#
+>># Revision 4.1 1996/05/09 00:34:16 andy
+>># Corrected Xatom include
+>>#
+>># Revision 4.0 1995/12/15 08:48:30 tbr
+>># Branch point for Release 5.0.0
+>>#
+>># Revision 3.1 1995/12/15 00:47:11 andy
+>># Prepare for GA Release
+>>#
+/*
+Portions of this software are based on Xlib and X Protocol Test Suite.
+We have used this material under the terms of its copyright, which grants
+free use, subject to the conditions below. Note however that those
+portions of this software that are based on the original Test Suite have
+been significantly revised and that all such revisions are copyright (c)
+1995 Applied Testing and Technology, Inc. Insomuch as the proprietary
+revisions cannot be separated from the freely copyable material, the net
+result is that use of this software is governed by the ApTest copyright.
+
+Copyright (c) 1990, 1991 X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of UniSoft not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission. UniSoft
+makes no representations about the suitability of this software for any
+purpose. It is provided "as is" without express or implied warranty.
+*/
+>>TITLE XConvertSelection Xlib5
+void
+
+Display *display = Dsp;
+Atom selection = XA_COPYRIGHT;
+Atom target = XA_NOTICE;
+Atom property = XA_INTEGER;
+Window requestor = defwin(display);
+Time thetime = CurrentTime;
+>>EXTERN
+#include "X11/Xatom.h"
+>>ASSERTION Good A
+When the specified
+.A selection
+has an owner, then a call to xname generates a
+.S SelectionRequest
+event to the selection owner, with
+.A selection ,
+.A target ,
+.A property ,
+.A requestor ,
+and
+.A time
+arguments passed unchanged as event structure members.
+>>STRATEGY
+Create a new client.
+Create a window with a selection which it owns on client2.
+Call xname to convert the selection.
+Verify that the correct SelectionNotify event was delivered to client2
+Verify no events were delivered to client1.
+>>CODE
+Display *client1, *client2;
+Window owner;
+int num_ev;
+XEvent ev;
+
+/* Create a new client. */
+ client1 = display;
+ client2 = opendisplay();
+ if (client2 == (Display *)NULL) {
+ delete("Could not create client2");
+ return;
+ } else
+ CHECK;
+
+/* Create a window with a selection which it owns on client2. */
+ owner = defwin(client2);
+ XSetSelectionOwner(client2, selection, owner, CurrentTime);
+ XSync(client2, True);
+
+/* Call xname to convert the selection. */
+ XCALL;
+ XSync(client1, False);
+ XSync(client2, False);
+
+/* Verify that the correct SelectionNotify event was delivered to client2 */
+ num_ev = getevent(client2, &ev);
+ if (num_ev != 1) {
+ FAIL;
+ report("%s did not cause a single SelectionNotify event",
+ TestName);
+ trace("Received %d events", num_ev);
+ while (num_ev > 0) {
+ trace("Event %s", eventname(ev.type));
+ num_ev = getevent(client2, &ev);
+ }
+ } else {
+ XEvent good;
+
+ good.type = SelectionRequest;
+ good.xselectionrequest.type = SelectionRequest;
+ good.xselectionrequest.display = client2;
+ good.xselectionrequest.owner = owner;
+ good.xselectionrequest.requestor = requestor;
+ good.xselectionrequest.selection = selection;
+ good.xselectionrequest.target = target;
+ good.xselectionrequest.property = property;
+ good.xselectionrequest.time = -1;
+
+ if (checkevent(&good, &ev)) {
+ FAIL;
+ report("SelectionNotify event was incorrect");
+ } else
+ CHECK;
+ }
+
+/* Verify no events were delivered to client1. */
+ num_ev = getevent(client1, &ev);
+ if (num_ev != 0) {
+ FAIL;
+ report("%s generated unexpected events on client1",
+ TestName);
+ trace("Expected 0 events");
+ trace("Received %d events", num_ev);
+ do {
+ trace("Event: %s", eventname(ev.type));
+ } while(getevent(client1, &ev));
+ } else
+ CHECK;
+
+ CHECKPASS(3);
+
+>>ASSERTION Good A
+When the specified
+.A selection
+has no owner, then a call to xname generates a
+.S SelectionNotify
+event to the
+.A requestor
+window with
+.A selection ,
+.A target
+and
+.A time
+arguments passed unchanged as event structure members, and with
+.A property
+set to
+.S None .
+>>STRATEGY
+Call xname to convert the selection.
+Verify that the correct SelectionNotify event was delivered to display.
+>>CODE
+int num_ev;
+XEvent ev;
+
+/* Call xname to convert the selection. */
+ XCALL;
+ XSync(display, False);
+
+/* Verify that the correct SelectionNotify event was delivered to display. */
+ num_ev = getevent(display, &ev);
+ if (num_ev != 1) {
+ FAIL;
+ report("%s did not cause a single SelectionNotify event",
+ TestName);
+ trace("Received %d events", num_ev);
+ while (num_ev > 0) {
+ trace("Event %s", eventname(ev.type));
+ num_ev = getevent(display, &ev);
+ }
+ } else {
+ XEvent good;
+
+ good.type = SelectionNotify;
+ good.xselection.type = SelectionNotify;
+ good.xselection.display = display;
+ good.xselection.requestor = requestor;
+ good.xselection.selection = selection;
+ good.xselection.target = target;
+ good.xselection.property = None; /* is passed with no owner */
+ good.xselection.time = -1;
+
+ if (checkevent(&good, &ev)) {
+ FAIL;
+ report("SelectionNotify event was incorrect");
+ } else
+ CHECK;
+ }
+
+ CHECKPASS(1);
+
+>>ASSERTION Good A
+The atoms
+.S PRIMARY
+and
+.S SECONDARY
+are predefined selection atoms.
+>>STRATEGY
+Obtain the server representation for the PRIMARY and SECONDARY atoms.
+Verify that the atoms were defined.
+>>CODE
+Atom primary, secondary;
+
+/* Obtain the server representation for the PRIMARY and SECONDARY atoms. */
+ primary = XInternAtom(display, "PRIMARY", True);
+ secondary = XInternAtom(display, "SECONDARY", True);
+
+/* Verify that the atoms were defined. */
+ if (primary == None) {
+ FAIL;
+ report("PRIMARY was not defined");
+ } else
+ CHECK;
+
+ if (secondary == None) {
+ FAIL;
+ report("SECONDARY was not defined");
+ } else
+ CHECK;
+
+ CHECKPASS(2);
+
+>>ASSERTION Bad A
+.ER BadWindow
+>>ASSERTION Bad A
+.ER BadAtom