diff options
Diffstat (limited to 'xc/test/xsuite/xtest/tset/CH04/intrnatm')
-rw-r--r-- | xc/test/xsuite/xtest/tset/CH04/intrnatm/intrnatm.m | 431 |
1 files changed, 431 insertions, 0 deletions
diff --git a/xc/test/xsuite/xtest/tset/CH04/intrnatm/intrnatm.m b/xc/test/xsuite/xtest/tset/CH04/intrnatm/intrnatm.m new file mode 100644 index 000000000..e73ba80d6 --- /dev/null +++ b/xc/test/xsuite/xtest/tset/CH04/intrnatm/intrnatm.m @@ -0,0 +1,431 @@ +/* + * Copyright 1990, 1991 by the Massachusetts Institute of Technology and + * UniSoft Group Limited. + * + * 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 names of MIT and UniSoft not be + * used in advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. MIT and UniSoft + * make no representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * $XConsortium$ + */ +>>TITLE XInternAtom CH04 +Atom + +Display *display = Dsp; +char *atom_name; +Bool only_if_exists; +>>EXTERN +/* Need to pick up the XA_RECTANGLE declaration */ +#include "Xatom.h" + +#define XIA_ATOM_NAME_1 "XTEST_ATOM_ONE" +#define XIA_ATOM_NAME_2 "XTEST_ATOM_TWO" +#define XIA_ATOM_NAME_3a "XTEST_ATOM_THREE" +#define XIA_ATOM_NAME_3b "Xtest_Atom_Three" +#define XIA_ATOM_NAME_3c "xTeSt_aToM_tHrEe" +#define XIA_ATOM_NAME_4 "XTEST_ATOM_FOUR" +#define XIA_ATOM_NAME_5 "XTEST_ATOM_FIVE" +>>ASSERTION Good A +A call to xname +returns the atom identifier associated with the specified +.A atom_name . +>>STRATEGY +Call xname to obtain the atom representation associated with "RECTANGLE". +Verify that the atom returned was as expected. +>>CODE +Atom atom_return; + +/* Call xname to obtain the atom representation associated with "RECTANGLE". */ + atom_name = "RECTANGLE"; + only_if_exists = True; + atom_return = XCALL; + +/* Verify that the atom returned was as expected. */ + if (atom_return != XA_RECTANGLE) { + FAIL; + report("%s did not return the expected value", + TestName); + report("Expected value: %u (%s)", (unsigned long)XA_RECTANGLE, + atomname(XA_RECTANGLE)); + report("Returned value: %u (%s)", (unsigned long)atom_return, + atomname(atom_return)); + } else + CHECK; + + CHECKPASS(1); + +>>ASSERTION Good A +When xname is called with +.A only_if_exists +set to +.S True +and the specified +.A atom_name +is not associated with an atom, then +.S None +is returned. +>>STRATEGY +Call xname with an atom_name not associated with an atom, + with only_if_exists True. +Verify that None was returned. +>>CODE +Atom atom_return; + +/* Call xname with an atom_name not associated with an atom, */ +/* with only_if_exists True. */ + atom_name=XIA_ATOM_NAME_1; + only_if_exists = True; + atom_return = XCALL; + +/* Verify that None was returned. */ + if (atom_return != (Atom)None) { + FAIL; + report("%s did not return the expected value", TestName); + report("Expected value: %u (None)", None); + report("Returned value: %u (%s)", (unsigned long)atom_return, + atomname(atom_return)); + } else + CHECK; + CHECKPASS(1); + +>>ASSERTION Good A +When xname is called with +.A only_if_exists +set to +.S False +and the specified +.A atom_name +is not associated with an atom, then +an atom is created and its atom identifer is returned. +>>STRATEGY +Call xname to ensure that atom_name is not associated with an atom. +Call xname with an atom_name not associated with an atom, + with only_if_exists False. +Verify that None was not returned. +Verify that the returned atom id corresponds to atom_name. +>>CODE +Atom atom_return; +char *check_name; + +/* Call xname to ensure that atom_name is not associated with an atom. */ + atom_name=XIA_ATOM_NAME_2; + only_if_exists = True; + atom_return = XCALL; + + if(atom_return != None) { + delete("Atom name %s has an identifier associated with it (%u)", + XIA_ATOM_NAME_2, atom_return); + report("Possible reason: Server was not reset"); + report("after a previous test run"); + return; + } else + CHECK; + +/* Call xname with an atom_name not associated with an atom, */ +/* with only_if_exists False. */ + atom_name=XIA_ATOM_NAME_2; + only_if_exists = False; + atom_return = XCALL; + +/* Verify that None was not returned. */ + trace("Atom id returned: %u (%s)", (unsigned long)atom_return, + atomname(atom_return)); + + if (atom_return == (Atom)None) { + FAIL; + report("%s did not return the expected value", TestName); + report("Expected value: an atom identifier"); + report("Returned value: %u (None)", None); + return; + } else + CHECK; + +/* Verify that the returned atom id corresponds to atom_name. */ + check_name = XGetAtomName(display, atom_return); + if (check_name == NULL) { + delete("XGetAtomName returned NULL"); + return; + } else + CHECK; + + if(strcmp(check_name, XIA_ATOM_NAME_2) != 0) { + FAIL; + report("%s did not return an atom id associated with atom_name", + TestName); + report("Atom returned was %u", (unsigned long)atom_return); + report("Expected associated name: %s", XIA_ATOM_NAME_2); + report("Returned associated name: %s", check_name); + } else + CHECK; + + XFree(check_name); + CHECKPASS(4); + +>>ASSERTION Good A +On a call to xname, the case of the +.A atom_name +string is significant for designating or identifying atoms. +>>STRATEGY +Call xname to ensure that atom XIA_ATOM_NAME_3a does not exist. +Call xname to create an atom XIA_ATOM_NAME_3a. +Call xname to create an atom XIA_ATOM_NAME_3b. +Verify the atom identifiers are distinct. +Call xname to obtain the atom id associated with XIA_ATOM_NAME_3c. +Verify the atom identifier is None. +>>CODE +Atom atom_a, atom_b, atom_return; + +/* Call xname to ensure that atom XIA_ATOM_NAME_3a does not exist. */ + atom_name=XIA_ATOM_NAME_3a; + only_if_exists = True; + atom_return = XCALL; + + if(atom_return != None) { + delete("Atom name %s has an identifier associated with it (%u)", + XIA_ATOM_NAME_3a, atom_return); + report("Possible reason: Server was not reset"); + report("after a previous test run"); + return; + } else + CHECK; + +/* Call xname to create an atom XIA_ATOM_NAME_3a. */ + atom_name=XIA_ATOM_NAME_3a; + only_if_exists = False; + atom_a = XCALL; + + if (atom_a == (Atom)None) { + delete("%s did not return the expected value", TestName); + report("Expected value: an atom identifier for %s", + XIA_ATOM_NAME_3a); + report("Returned value: %u (None)", None); + return; + } else + CHECK; + trace("XIA_ATOM_NAME_3a (%s) is %u", XIA_ATOM_NAME_3a, + (unsigned long)atom_a); + +/* Call xname to create an atom XIA_ATOM_NAME_3b. */ + atom_name=XIA_ATOM_NAME_3b; + only_if_exists = False; + atom_b = XCALL; + + if (atom_b == (Atom)None) { + delete("%s did not return the expected value", TestName); + report("Expected value: an atom identifier for %s", + XIA_ATOM_NAME_3b); + report("Returned value: %u (None)", None); + return; + } else + CHECK; + trace("XIA_ATOM_NAME_3b (%s) is %u", XIA_ATOM_NAME_3b, + (unsigned long)atom_b); + +/* Verify the atom identifiers are distinct. */ + if(atom_a == atom_b) { + FAIL; + report("%s did not return distinct atom identifiers for", + TestName); + report("atom %s and atom %s.", + XIA_ATOM_NAME_3a, XIA_ATOM_NAME_3b); + } else + CHECK; + +/* Call xname to obtain the atom id associated with XIA_ATOM_NAME_3c. */ + atom_name=XIA_ATOM_NAME_3c; + only_if_exists = True; + atom_return = XCALL; + +/* Verify the atom id associated with XIA_ATOM_NAME_3c is None. */ + if (atom_return != (Atom)None) { + char *check_name; + check_name=XGetAtomName(display, atom_return); + FAIL; + report("%s did not return the expected value", TestName); + report("Expected value: %u (None)", None); + report("Returned value: %u (%s)", (unsigned long)atom_return, + (check_name==NULL?"NO_NAME":check_name)); + XFree(check_name); + } else + CHECK; + + CHECKPASS(5); + +>>ASSERTION Good A +Atoms created by a call to xname will remain defined after the client's +connection closes. +>>STRATEGY +Create a new client. +Call xname to ensure that XIA_ATOM_NAME_4 is not associated with an atom. +Call xname to create atom XIA_ATOM_NAME_4 on display2. +Close display2. +Allow sufficient time for the server to register the close display +Verify that atom XIA_ATOM_NAME_4 remains defined. +>>CODE +Atom atom_return, atom_return2; +Display *display2; + +/* Create a new client. */ + if (config.display == (char *) NULL) { + delete("config.display not set"); + return; + } + else + CHECK; + + display2 = XOpenDisplay(config.display); + if (display2 == (Display *)NULL) { + delete("Could not open display for display2"); + return; + } else + CHECK; + +/* Call xname to ensure that atom_name is not associated with an atom. */ + display = display2; + atom_name=XIA_ATOM_NAME_4; + only_if_exists = True; + atom_return = XCALL; + + if(atom_return != None) { + delete("Atom name %s has an identifier associated with it (%u)", + XIA_ATOM_NAME_4, atom_return); + report("Possible reason: Server was not reset"); + report("after a previous test run"); + return; + } else + CHECK; + +/* Call xname to create a new atom on display2. */ + atom_name=XIA_ATOM_NAME_4; + only_if_exists = False; + atom_return = XCALL; + + trace("Atom id %u returned for %s", (unsigned long)atom_return, + XIA_ATOM_NAME_4); + + if (atom_return == (Atom)None) { + delete("%s did not return the expected value", TestName); + report("Expected value: an atom identifier"); + report("Returned value: %u (None)", None); + return; + } else + CHECK; + +/* Close display2. */ + (void) XCloseDisplay(display2); + +/* Allow sufficient time for the server to register the close display */ + reset_delay(); + +/* Verify that atom XIA_ATOM_NAME_4 remains defined. */ + display = Dsp; + atom_name=XIA_ATOM_NAME_4; + only_if_exists = True; + atom_return2 = XCALL; + + trace("Atom id %u returned for %s", (unsigned long)atom_return, + XIA_ATOM_NAME_4); + + if (atom_return2 != atom_return) { + FAIL; + report("%s did not return the expected value", TestName); + report("Expected value: %u (%s)", atom_return, + XIA_ATOM_NAME_4); + report("Returned value: %u", (unsigned long)atom_return2); + } else + CHECK; + + CHECKPASS(5); + +>>ASSERTION Good A +When the last connection to the server closes, then atoms created by +a call to xname will become undefined. +>>STRATEGY +Ensure we can open a new display. +Create an atom by calling xname. +Close the last connection to the server. +Allow sufficient time for the server to register the close display +Open a new connection to the server. +Verify that the atom is undefined. +>>CODE +Atom atom_return; + +/* Ensure we can open a new display. */ + if (config.display == (char *) NULL) { + delete("config.display not set"); + return; + } + else + CHECK; + +/* Create an atom by calling xname. */ + atom_name=XIA_ATOM_NAME_5; + only_if_exists = False; + atom_return = XCALL; + + trace("Atom id %u returned for %s", (unsigned long)atom_return, + XIA_ATOM_NAME_4); + +#ifdef TESTING + atom_return = None; +#endif + if (atom_return == (Atom)None) { + delete("%s did not return the expected value", TestName); + report("Expected value: an atom identifier"); + report("Returned value: %u (None)", None); + return; + } else + CHECK; + +/* Close the last connection to the server. */ + (void) XCloseDisplay(display); + +/* Allow sufficient time for the server to register the close display */ + reset_delay(); + +/* Open a new connection to the server. */ + Dsp = XOpenDisplay(config.display); + if (Dsp == (Display *)NULL) { + int i; + delete("Could not open display"); + cancelrest("Could not open display"); + return; + } else + CHECK; + +/* Verify that the atom is undefined. */ + display = Dsp; + atom_name=XIA_ATOM_NAME_5; + only_if_exists = True; + atom_return = XCALL; + + trace("Atom id %u returned for %s", (unsigned long)atom_return, + XIA_ATOM_NAME_5); + + if (atom_return != (Atom)None) { + char *check_name; + FAIL; + report("Closing last connection to server did not"); + report("clear the defined atom %s", XIA_ATOM_NAME_5); + report("Expected value: %u (None)", (unsigned long)None); + check_name=XGetAtomName(display, atom_return); + report("Returned value: %u (%s)", (unsigned long)atom_return, + (check_name==NULL?"NO_NAME":check_name)); + report("Possible reason: Other connections open to server"); + report("during test run"); + XFree(check_name); + } else + CHECK; + + CHECKPASS(4); + +>>ASSERTION Bad A +.ER BadAlloc +>>ASSERTION Bad A +.ER BadValue only_if_exists True False |