diff options
Diffstat (limited to 'xts5/Xlib9/XSetFontPath/XSetFontPath.m')
-rw-r--r-- | xts5/Xlib9/XSetFontPath/XSetFontPath.m | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/xts5/Xlib9/XSetFontPath/XSetFontPath.m b/xts5/Xlib9/XSetFontPath/XSetFontPath.m new file mode 100644 index 00000000..5c1c3f0f --- /dev/null +++ b/xts5/Xlib9/XSetFontPath/XSetFontPath.m @@ -0,0 +1,335 @@ +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/Xlib9/XSetFontPath/XSetFontPath.m,v 1.2 2005-11-03 08:43:59 jmichael Exp $ + +Copyright (c) Applied Testing and Technology, Inc. 1995 +All Rights Reserved. + +>># Project: VSW5 +>># +>># File: xts5/tset/Xlib9/XSetFontPath/XSetFontPath.m +>># +>># Description: +>># Tests for XSetFontPath() +>># +>># Modifications: +>># $Log: stfntpth.m,v $ +>># Revision 1.2 2005-11-03 08:43:59 jmichael +>># clean up all vsw5 paths to use xts5 instead. +>># +>># Revision 1.1.1.2 2005/04/15 14:05:39 anderson +>># Reimport of the base with the legal name in the copyright fixed. +>># +>># Revision 8.0 1998/12/23 23:30:49 mar +>># Branch point for Release 5.0.2 +>># +>># Revision 7.0 1998/10/30 22:50:04 mar +>># Branch point for Release 5.0.2b1 +>># +>># Revision 6.0 1998/03/02 05:22:35 tbr +>># Branch point for Release 5.0.1 +>># +>># Revision 5.0 1998/01/26 03:19:07 tbr +>># Branch point for Release 5.0.1b1 +>># +>># Revision 4.0 1995/12/15 09:00:16 tbr +>># Branch point for Release 5.0.0 +>># +>># Revision 3.1 1995/12/15 00:55:41 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 XSetFontPath Xlib9 +void + +Display *display = Dsp; +char **directories; +int ndirs; +>>EXTERN + +/* + * Startup and cleanup code attempt to save and restore the Font path + * over the tests. + * This should not be needed now because saving and restoring the Font path + * is done in startup/cleanup - but it is still done here in case that + * scheme is ever changed. + */ +static char **savepath; +static int savenum; +>>SET startup localstartup +static void +localstartup() +{ + startup(); + if(Dsp) { + XSetErrorHandler(error_status); + savepath = XGetFontPath(Dsp, &savenum); + XSetErrorHandler(unexp_err); + } +} +>>SET cleanup localcleanup +static void +localcleanup() +{ + if(Dsp) { + if (savepath && savenum) + XSetFontPath(Dsp, savepath, savenum); + XSync(Dsp, 0); + } + cleanup(); +} +>>ASSERTION Good A +When xname is called with the +.A directories +argument specifying a list of directories in an operating system dependent +format, +then the directory search path for font lookup is set to +the list of directories +in the order specified. +>>STRATEGY +Get TET variable XT_FONTPATH_GOOD +Set font path to this value. +Do simple check with XGetFontPath. +>>CODE +char *fpathlist; +char *fpathtmp; +char *dirlist[MAX_DIRS]; +char *strtok(); +char **checkpath; +int nret; +int i; + + fpathlist = tet_getvar("XT_FONTPATH_GOOD"); + if (fpathlist == NULL || *fpathlist == '\0') { + delete("XT_FONTPATH_GOOD not set in config file"); + return; + } + fpathtmp = (char *)calloc(strlen(fpathlist)+1, sizeof(char)); + strcpy(fpathtmp, fpathlist); + + for (i = 0; i < MAX_DIRS; i++) { + dirlist[i] = strtok((i==0)? fpathtmp: (char*)0, SEP); + if (dirlist[i] == NULL) + break; + debug(1, "dirlist entry %d - '%s'", i, dirlist[i]); + } + directories = dirlist; + ndirs = i; + + if (ndirs <= 0) { + delete("No components in supplied XT_FONTPATH_GOOD"); + return; + } + + XCALL; + + checkpath = XGetFontPath(display, &nret); + if (nret == ndirs) + CHECK; + else { + report("Different number of directories returned"); + report(" was %d, expecting %d", nret, ndirs); + FAIL; + } + + if (ndirs < nret) + nret = ndirs; + for (i = 0; i < nret; i++) { + debug(1, "got back list item '%s'", checkpath[i]); + if (strcmp(dirlist[i], checkpath[i]) == 0) + CHECK; + else { + report("Font path component did not match what was set"); + report(" was '%s', expecting '%s'", checkpath[i], dirlist[i]); + FAIL; + } + } + + CHECKPASS(1+ndirs); +>>ASSERTION Good A +On a call to xname, the directory search +path for font lookup is set for all clients. +>>STRATEGY +Open a second client. +Set font path in first client. +Get font path in the second client. +Verify that the font is the same in each client. +>>CODE +Display *client2; +char *fpathlist; +char *fpathtmp; +char *dirlist[MAX_DIRS]; +char *strtok(); +char **checkpath; +int nret; +int i; + + client2 = XOpenDisplay(DisplayString(display)); + if (client2 == NULL || isdeleted()) { + delete("Could not open second client"); + return; + } + + fpathlist = tet_getvar("XT_FONTPATH_GOOD"); + if (fpathlist == NULL || *fpathlist == '\0') { + delete("XT_FONTPATH_GOOD not set in config file"); + return; + } + fpathtmp = (char *)calloc(strlen(fpathlist)+1, sizeof(char)); + strcpy(fpathtmp, fpathlist); + + for (i = 0; i < MAX_DIRS; i++) { + dirlist[i] = strtok((i==0)? fpathtmp: (char*)0, SEP); + if (dirlist[i] == NULL) + break; + debug(1, "dirlist entry %d - '%s'", i, dirlist[i]); + } + directories = dirlist; + ndirs = i; + + if (ndirs <= 0) { + delete("No components in supplied XT_FONTPATH_GOOD"); + return; + } + + XCALL; + + checkpath = XGetFontPath(client2, &nret); + if (nret == ndirs) + CHECK; + else { + report("Different number of directories returned"); + report(" was %d, expecting %d", nret, ndirs); + FAIL; + } + + if (ndirs < nret) + nret = ndirs; + for (i = 0; i < nret; i++) { + debug(1, "got back list item '%s'", checkpath[i]); + if (strcmp(dirlist[i], checkpath[i]) == 0) + CHECK; + else { + report("Font path component did not match what was set"); + report(" was '%s', expecting '%s'", checkpath[i], dirlist[i]); + FAIL; + } + } + + CHECKPASS(1+ndirs); +>>ASSERTION Good B 1 +On a call to XSetFontPath, the X server flushes all cached information +about fonts for which there are currently no explicit resource ID's +allocated. +>>ASSERTION Bad C +When the +.A directories +argument is invalid for the operating system, +then a +.S BadValue +error occurs. +>># This says nothing +>>#and the value returned is operating system dependent. +>>STRATEGY +Get TET variable XT_FONTPATH_BAD +If this is set to UNSUPPORTED, then no bad paths are possible + result is UNSUPPORTED +Set font path to this value. +Verify that BadValue error is generated. +>>CODE BadValue +char *fpathlist; +char *dirlist[MAX_DIRS]; +char *strtok(); +int i; + + fpathlist = tet_getvar("XT_FONTPATH_BAD"); + if (fpathlist == NULL || *fpathlist == '\0') { + delete("XT_FONTPATH_BAD not set in config file"); + return; + } + if (strcmp(fpathlist, "UNSUPPORTED") == 0) { + report("No bad paths are possible"); + tet_result(TET_UNSUPPORTED); + return; + } + + for (i = 0; i < MAX_DIRS; i++) { + dirlist[i] = strtok((i==0)? fpathlist: (char*)0, SEP); + if (dirlist[i] == NULL) + break; + } + directories = dirlist; + ndirs = i; + + if (ndirs <= 0) { + delete("No components in supplied XT_FONTPATH_BAD"); + return; + } + + XCALL; + + if (geterr() == BadValue) + PASS; + else + FAIL; + +>># HISTORY kieron Completed Reformat and tidy to ca pass |