diff options
Diffstat (limited to 'xc/test/xsuite/xtest/tset/CH06/ldfnt/ldfnt.m')
-rw-r--r-- | xc/test/xsuite/xtest/tset/CH06/ldfnt/ldfnt.m | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/xc/test/xsuite/xtest/tset/CH06/ldfnt/ldfnt.m b/xc/test/xsuite/xtest/tset/CH06/ldfnt/ldfnt.m new file mode 100644 index 000000000..c3a074223 --- /dev/null +++ b/xc/test/xsuite/xtest/tset/CH06/ldfnt/ldfnt.m @@ -0,0 +1,171 @@ +/* + * 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 XLoadFont CH06 +Font + +Display *display = Dsp; +char *name = "xtfont1"; +>>SET startup fontstartup +>>SET cleanup fontcleanup +>>ASSERTION Good A +When +.A name +is a NULL terminated string in ISO Latin-1 encoding, +then +a call to xname +loads the specified font and returns its font ID. +>>STRATEGY +For each xtest font: + Load font. + Make some simple checks to see if a font ID is returned. +>>CODE +Font font; +int i; +char fname[64]; + + for (i = 0; i < XT_NFONTS; i++) { + sprintf(fname, "xtfont%d", i); + trace("Loading font %s", fname); + name = fname; + + font = XCALL; + + if (geterr() != Success) { + report("font %s could not be loaded", fname); + report("Check that xtest fonts have been installed"); + FAIL; + } else if (font == 0 || (font & 0xc0000000)) { + report("An invalid font ID was returned"); + FAIL; + } else + CHECK; + } + CHECKPASS(XT_NFONTS); + +>>ASSERTION Good A +The font ID returned by a call to xname is usable +on any GC created for any screen of the display. +>>STRATEGY +For each visual supported for the default screen: + Load font "xtfont1". + Create window. + Create GC for window. + Set font component in GC to loaded font. + Draw string with single character. + Pixmap verify. +Note: this tests the GC's for the default screen. +To test for other screens, re-run the test suite with XT_DISPLAY set +to number of required screen. +>>CODE +XVisualInfo *vp; +Font font; +char *fname = "xtfont1"; +Drawable d; +GC gc; + + for (resetvinf(VI_WIN_PIX); nextvinf(&vp); ) { + name = fname; + + font = XCALL; + + if (geterr() != Success) { + /* Already done after calling XLoadFont */ + report("font %s could not be loaded", fname); + report("Check that xtest fonts have been installed"); + FAIL; + } else { + d = makewin(display, vp); + gc = makegc(display, d); + XSetFont(display, gc, font); + XDrawString(display, d, gc, 20, 20, "z", 1); + PIXCHECK(display, d); + dclear(display, d); + XUnloadFont(display, font); + } + } + CHECKPASS(nvinf()); + +>>ASSERTION Good A +Upper and lower case characters in the +.A name +argument refer to the same font. +>># The name arg is case insensitive. +>>STRATEGY +Try series of name differing only in case. +Font ID is different each time so have to.. +Draw string and save result in original font. +Verify that font returned using each name draws same string. +>>EXTERN +#define TEXTSTRING "AbyZ%~" +>>CODE +Font font; +static char *names[] = { + "xtfont1", + "Xtfont1", + "XTFONT1", + "xTfOnT1", + "XtFoNt1", +}; +int i; +Drawable draw; +XImage *sav; +GC gc; + + name = "xtfont1"; + font = XCALL; + if (geterr() != Success) { + /* Test has already failed */ + delete("Font could not be loaded"); + return; + } + + draw = defdraw(display, VI_WIN_PIX); + gc = makegc(display, draw); + XSetFont(display, gc, font); + + XDrawString(display, draw, gc, 30, 30, TEXTSTRING, strlen(TEXTSTRING)); + sav = savimage(display, draw); + + if (isdeleted()) + return; + + for (i = 0; i < NELEM(names); i++) { + + dclear(display, draw); + name = names[i]; + font = XCALL; + + if (geterr() == Success) { + XSetFont(display, gc, font); + XDrawString(display, draw, gc, 30, 30, TEXTSTRING, strlen(TEXTSTRING)); + if (compsavimage(display, draw, sav)) + CHECK; + else { + report("Font %s was different to xtfont1", name); + FAIL; + } + } else { + report("Font load failed with name %s", name); + FAIL; /* Has been done already */ + } + } + CHECKPASS(NELEM(names)); +>>ASSERTION Bad A +.ER BadName font +>>ASSERTION Bad B 3 +.ER BadAlloc +>># HISTORY kieron Completed Reformat and tidy to ca pass |