summaryrefslogtreecommitdiff
path: root/xts5/Xlib14/XwcResetIC.m
diff options
context:
space:
mode:
Diffstat (limited to 'xts5/Xlib14/XwcResetIC.m')
-rw-r--r--xts5/Xlib14/XwcResetIC.m352
1 files changed, 352 insertions, 0 deletions
diff --git a/xts5/Xlib14/XwcResetIC.m b/xts5/Xlib14/XwcResetIC.m
new file mode 100644
index 00000000..d0d70199
--- /dev/null
+++ b/xts5/Xlib14/XwcResetIC.m
@@ -0,0 +1,352 @@
+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.
+
+Copyright (c) 2001 The Open Group
+Copyright (c) Applied Testing and Technology, Inc. 1993, 1994, 1995
+Copyright (c) 88open Consortium, Ltd. 1990, 1991, 1992, 1993
+All Rights Reserved.
+
+>>#
+>># Project: VSW5
+>>#
+>># File: xts/Xlib14/XwcResetIC.m
+>>#
+>># Description:
+>># Tests for XwcResetIC()
+>>#
+>># Modifications:
+>># $Log: wcreic.m,v $
+>># Revision 1.2 2005-04-21 09:40:42 ajosey
+>># resync to VSW5.1.5
+>>#
+>># Revision 8.3 2005/01/21 10:44:37 gwc
+>># Updated copyright notice
+>>#
+>># Revision 8.2 2001/08/21 16:24:00 vsx
+>># TSD4W.00170: give UNTESTED instead of UNRESOLVED if no usable input style supported
+>>#
+>># Revision 8.1 2001/04/05 12:04:25 vsx
+>># TSD4W.00168: query supported input styles before XCreateIC()
+>>#
+>># Revision 8.0 1998/12/23 23:39:10 mar
+>># Branch point for Release 5.0.2
+>>#
+>># Revision 7.0 1998/10/30 23:02:17 mar
+>># Branch point for Release 5.0.2b1
+>>#
+>># Revision 6.0 1998/03/02 05:30:11 tbr
+>># Branch point for Release 5.0.1
+>>#
+>># Revision 5.0 1998/01/26 03:26:45 tbr
+>># Branch point for Release 5.0.1b1
+>>#
+>># Revision 4.1 1998/01/21 01:38:44 tbr
+>># Removed unnecessary dependency on XMODIFIERS
+>>#
+>># Revision 4.0 1995/12/15 09:24:46 tbr
+>># Branch point for Release 5.0.0
+>>#
+>># Revision 3.1 1995/12/15 02:02:25 andy
+>># Prepare for GA Release
+>>#
+>>AVSCODE
+>>TITLE XwcResetIC Xlib14
+void
+XwcResetIC()
+>>EXTERN
+#include <ximtest.h>
+
+Display *display_good;
+Window window_id_good;
+
+char *list, mod[256] ;
+char *xmodifier ;
+
+/******
+ * generated globals
+ ******/
+char *exec_file_name;
+int x_init,
+ y_init,
+ h_init,
+ w_init;
+
+setup_locale()
+{
+
+ char *string ;
+
+ if (setlocale(LC_ALL, "C") == (char *)0 )
+ errflg++ ;
+
+ if (!XSupportsLocale())
+ errflg++ ;
+
+ if ((string = XSetLocaleModifiers("") ) == (char *)0)
+ errflg++ ;
+
+ if (errflg)
+ message("unable to setup locale setup_locale() function failed\n", NULL, 0) ;
+}
+
+svcwcResetIC(display, ic)
+Display *display ;
+XIC ic ;
+{
+ extern int errcnt;
+ extern int errflg;
+ extern int chkflg;
+ extern int signal_status();
+ extern int unexp_err();
+ extern char *svc_user_arg;
+ extern char *strcpy();
+
+ char fmtstr[256], *call_string;
+ union msglst fmt_lst[1];
+ int skip_pixcheck;
+
+ int
+ ss_status, /* save stat return status */
+ stat_status, /* check stat return status */
+ setup_status,
+ cleanup_status,
+ i1;
+
+ char *svc_ret_value ;
+
+
+ regr_args.l_flags.bufrout = 1;
+
+ (void)strcpy(fmtstr, "*********************\n");
+ message(fmtstr, fmt_lst, 0);
+ (void)strcpy(fmtstr, "An error occurred during a call to %s\n\n");
+ fmt_lst[0].typ_str = TestName;
+ message(fmtstr, fmt_lst, 1);
+
+ call_string = "svc_ret_value = XwcResetIC(";
+
+ (void)strcpy(fmtstr, "The routine call looked like this - \n %s\n");
+ fmt_lst[0].typ_str = call_string;
+ message(fmtstr, fmt_lst, 1);
+
+ call_string = " ic)\n" ;
+ message(call_string, fmt_lst, 0);
+ (void)strcpy(fmtstr, "The parameter values were as follows... \n");
+ message(fmtstr, fmt_lst, 0);
+ bufrdisp(display); /* buffer display struct info for error checking */
+
+ if (regr_args.iter == 0)
+ regr_args.iter = 1; /* set number of iterations to 1. */
+
+
+ for (i1 = 0; i1 < regr_args.iter; i1++)
+ {
+
+
+ if (regr_args.l_flags.setup) {
+ setup_status = REGR_NORMAL;
+ XSetInputFocus (display, None, RevertToNone, CurrentTime);
+ XSelectInput (display, window_id_good, FocusChangeMask);
+ }
+
+ XSync(display_arg, 0);
+
+ if (regr_args.l_flags.chksta == 1)
+ ss_status = save_stat(dpy_msk | win_msk ,
+ gc_id,
+ display_arg,
+ drawable_id);
+
+
+ first_error = 0; /* no errors encountered yet */
+ errflg = 0;
+ XSetErrorHandler(signal_status);
+ XwcResetIC(ic) ;
+ XSync(display_arg, 0);
+ XSetErrorHandler(unexp_err);
+ r_wait(display_arg, window_arg, time_delay, None); /* no colormap by default */
+
+ if (regr_args.l_flags.chksta == 1)
+ stat_status = chek_stat (dpy_msk | win_msk ,
+ gc_id,
+ display_arg,
+ drawable_id,
+ ss_status);
+ else
+ stat_status = REGR_NORMAL;
+
+ if ((!errflg) && (!chkflg))
+ if ((badstat(display_arg, estatus, Success)) != REGR_NORMAL)
+ errflg = 1;
+
+ if ((regr_args.l_flags.check) &&
+ (errflg == 0) &&
+ (stat_status == REGR_NORMAL)) {
+ Window id ;
+ XGetICValues(ic, XNFocusWindow, &id, (char *)0) ;
+ check_dec(window_id_good, id, "expected window id") ;
+ } /* end if */
+
+ XSync(display_arg, 0);
+ if (regr_args.l_flags.cleanup) {
+ XDestroyIC(ic) ;
+ }
+ XSync(display_arg, 0);
+ } /* end of service test loop. */
+
+ if (errflg) { /* if there was an error ... */
+ errcnt++; /* ...increment the error count */
+ (void)strcpy(fmtstr, "\nEnd of error report\n");
+ message(fmtstr, fmt_lst, 0);
+ (void)strcpy(fmtstr, "*********************\n");
+ message(fmtstr, fmt_lst, 0);
+ }
+
+ /*****
+ * clear all flags
+ *****/
+ chkflg = 0;
+ regr_args.l_flags.bufrout = 0;
+
+ dumpbuf();
+} /* end of svcwcResetIC service routine */
+
+
+>>ASSERTION Good C
+If the implementation is X11R5 or later:
+A call to xname shall reset the state of an input context to its initial state.
+>>CODE
+
+#if XT_X_RELEASE > 4
+ display_arg = Dsp;
+/*
+ * Create a GC to save environmental data in
+ */
+ gc_save = XCreateGC(display_arg,XRootWindow(display_arg,XDefaultScreen(display_arg)),(unsigned long)0,(XGCValues *)0);
+
+
+ BorderPixel = XBlackPixel(display_arg,XDefaultScreen(display_arg));
+ BackgroundPixel = XWhitePixel(display_arg,XDefaultScreen(display_arg));
+ colormap_arg = XDefaultColormap(display_arg, XDefaultScreen(display_arg));
+ PixPerCM = XDisplayWidth(display_arg, XDefaultScreen(display_arg))*10/XDisplayWidthMM(display_arg,
+ XDefaultScreen(display_arg));
+ MaxDisplayWidth = XDisplayWidth(display_arg, XDefaultScreen(display_arg));
+ MaxDisplayHeight = XDisplayHeight(display_arg, XDefaultScreen(display_arg));
+ DisplayCenterX = (MaxDisplayWidth / 2) - PixPerCM;
+ DisplayCenterY = (MaxDisplayHeight / 2) - PixPerCM;
+ x_init = -1;
+ y_init = -1;
+ h_init = -1;
+ w_init = -1;
+
+
+ tet_infoline("PREP: Create a window for test.");
+ if (w_init == -1) w_init = (MaxDisplayWidth - (2 * PixPerCM));
+ if (h_init == -1) h_init = (MaxDisplayHeight - (2 * PixPerCM));
+ if (x_init == -1) x_init = PixPerCM - 5;
+ if (y_init == -1) y_init = PixPerCM - 5;
+ if ((window_arg = XCreateSimpleWindow(display_arg,
+ (Window)XRootWindow(display_arg, XDefaultScreen(display_arg)),
+ x_init, y_init,
+ (unsigned int)w_init,
+ (unsigned int)h_init,
+ BorderWidth,
+ BorderPixel,
+ BackgroundPixel)) == NULL)
+ {
+ tet_infoline("ERROR: Window creation failed.");
+ tet_infoline(" Check x y w h values in change test");
+ tet_result(TET_FAIL);
+ return;
+ }
+ XMapWindow (display_arg, window_arg);
+ XSync (display_arg, 0);
+
+ regr_args.l_flags.check = 0;
+ regr_args.l_flags.nostat = 0;
+ regr_args.l_flags.perf = 0;
+ regr_args.l_flags.setup = 0;
+ regr_args.l_flags.cleanup = 0;
+ regr_args.l_flags.chksta = 0;
+ regr_args.l_flags.chkdpy = 0;
+ regr_args.l_flags.verbose = 0;
+ regr_args.iter = 1; /* execute service once */
+ estatus[0] = 1;
+
+/******
+ * User defined initialization code for test case sets
+ ******/
+ display_good = display_arg;
+ window_id_good = window_arg;
+
+ estatus[0] = 1;
+ estatus[1] = Success;
+
+ if ((regr_args.l_flags.good == 0) || (estatus[1] == Success)) {
+ tet_infoline("TEST: XwcResetIC resets the state of an input");
+ tet_infoline(" context to its initial state");
+ regr_args.l_flags.setup = 1;
+ regr_args.l_flags.cleanup = 1;
+ regr_args.l_flags.check = 1;
+ regr_args.l_flags.chksta = 0;
+ {
+ XIM input_method ;
+ XIC input_context ;
+ XIMStyle which_style;
+
+ setup_locale() ;
+ input_method = XOpenIM(display_good, (XrmDatabase)0,
+ (char *)0, (char *)0 ) ;
+
+ /* Find a supported style we can use */
+ /* NB PreeditNone and StatusNone are no good because
+ XNFocusWindow is ignored for that style */
+ reset_ic_style(input_method);
+ which_style = 0;
+ while (next_ic_style(&which_style)) {
+ if ((which_style & XIMPreeditNone) == 0 &&
+ (which_style & XIMStatusNone) == 0)
+ break;
+ which_style = 0;
+ }
+ if (which_style == 0) {
+ tet_infoline("INFO: could not find a supported IM style the test can use");
+ tet_result(TET_UNTESTED);
+ }
+ else if ((input_context = ic_open(input_method,
+ window_id_good, which_style)) == NULL) {
+ tet_infoline("ERROR: ic_open() returned NULL");
+ tet_result(TET_UNRESOLVED);
+ }
+ else if (XSetICValues(input_context, XNFocusWindow,
+ window_id_good, (char *)0) != NULL) {
+ tet_infoline("ERROR: XSetICValues() failed to set XNFocusWindow");
+ tet_result(TET_UNRESOLVED);
+ }
+ else {
+ svcwcResetIC(display_good, input_context) ;
+ tet_result(TET_PASS);
+ }
+ }
+ } /* end if */
+#else
+ tet_infoline("INFO: Implementation not X11R5 or greater");
+ tet_result(TET_UNSUPPORTED);
+#endif