diff Xwnmo/test/chkpsset.c @ 0:bbc77ca4def5

initial import
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Thu, 13 Dec 2007 04:30:14 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Xwnmo/test/chkpsset.c	Thu Dec 13 04:30:14 2007 +0900
@@ -0,0 +1,848 @@
+/*
+ * $Id: chkpsset.c,v 1.2 2001/06/14 18:16:11 ura Exp $
+ */
+
+/*
+ * FreeWnn is a network-extensible Kana-to-Kanji conversion system.
+ * This file is part of FreeWnn.
+ * 
+ * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
+ *
+ * Author: OMRON SOFTWARE Co., Ltd. <freewnn@rd.kyoto.omronsoft.co.jp>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Emacs; see the file COPYING.  If not, write to the
+ * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Commentary:
+ *
+ * Change log:
+ *
+ * Last modified date: 8,Feb.1999
+ *
+ * Code:
+ *
+ */
+
+/*
+ * X11R5 Input Method Test Program
+ * chkpsset.c v 1.0   Wed Mar 13 11:16:00 JST 1991
+ */
+
+/*
+ *      Author: Takashi Inoue    OMRON Corporation
+ *                               takashi@ari.ncl.omron.co.jp
+ */
+
+#include <stdio.h>
+
+#include "exvalue.h"
+#include "func.h"
+
+/* *INDENT-OFF* */
+FLAG
+sarea (ic, mode)           /* Set AREA */
+     XIC  ic;
+     FLAG mode;
+/* *INDENT-ON* */
+{
+  XRectangle *gparea, *gsarea;
+  VALUABLE *area[CHKAREA];
+  XVaNestedList spe_nelist, sst_nelist;
+  XVaNestedList gpe_nelist, gst_nelist;
+  int cnt, sum;
+
+  if ((mode == ONSP) || (mode == ROOTW))
+    {
+      prerrfunc ();
+      return (COMP);
+    }
+  else
+    {
+      cls (prdisp);             /* clear screen */
+      /* create nestedlist for set values */
+      prstatus ("Creating NestedList for set values \"Area\"...");
+      if (usta.area.width == ST_WIDTH)
+        {
+          usta.area.width += WIN_ITV;
+        }
+      else
+        {
+          usta.area.width -= WIN_ITV;
+        }
+      if (mode == OVERSP)
+        {
+          upea.area.width = (upea.area.width == WPOVER1) ? WPOVER2 : WPOVER1;
+        }
+      else if (mode == OFFSP)
+        {
+          upea.area.x = usta.area.width + 2 * WIN_ITV;
+        }
+      spe_nelist = XVaCreateNestedList (DUMMY, XNArea, &upea.area, NULL);
+      sst_nelist = XVaCreateNestedList (DUMMY, XNArea, &usta.area, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() for change \"Area\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"Area\" ...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNArea, &gparea, NULL);
+      gst_nelist = XVaCreateNestedList (DUMMY, XNArea, &gsarea, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"Area\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      sum = 0;
+      area[0] = mkstruct (PAX, DEC, upea.area.x, gparea->x);
+      area[1] = mkstruct (PAY, DEC, upea.area.y, gparea->y);
+      area[2] = mkstruct (PAW, DEC, upea.area.width, gparea->width);
+      area[3] = mkstruct (PAH, DEC, upea.area.height, gparea->height);
+      area[4] = mkstruct (SAX, DEC, usta.area.x, gsarea->x);
+      area[5] = mkstruct (SAY, DEC, usta.area.y, gsarea->y);
+      area[6] = mkstruct (SAW, DEC, usta.area.width, gsarea->width);
+      area[7] = mkstruct (SAH, DEC, usta.area.height, gsarea->height);
+      for (cnt = 0; cnt < CHKAREA; cnt++)
+        {
+          sum += verval (area[cnt]);
+        }
+      /* output of results */
+      cls (prdisp);
+      prveres (sum);
+      if (sum != NOERR)
+        {
+          prprint ("Test of XSetICValues() \"Preedit/Status Area\" is failed.\n");
+          prprint ("Preedit/Status Area has not changed.\n\n");
+          prprint ("I will destroy IC and continue test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() \"Preedit/Status Area\" is failed.\n\n");
+          XFree ((char *) spe_nelist);
+          XFree ((char *) sst_nelist);
+          XFree ((char *) gpe_nelist);
+          XFree ((char *) gst_nelist);
+          XFree ((XRectangle *) gparea);
+          XFree ((XRectangle *) gsarea);
+          prpng ();
+          return (DIC);
+        }
+      prprint ("Test of XSetICValues() \"Preedit/Status Area\" is succeeded.\n");
+      prprint ("Preedit/Status Area has changed.\n\n");
+      prprint ("Check on your own eyes and move next test.\n");
+      fprintf (icfp, "...Test of XSetICValues() \"Preedit/Status Area\" is succeeded.\n\n");
+      XFree ((char *) spe_nelist);
+      XFree ((char *) sst_nelist);
+      XFree ((char *) gpe_nelist);
+      XFree ((char *) gst_nelist);
+      XFree ((XRectangle *) gparea);
+      XFree ((XRectangle *) gsarea);
+      prpok ();
+      return (COMP);
+    }
+}
+
+/* *INDENT-OFF* */
+FLAG
+sneeded (ic, mode)         /* Set areaNEEDED */
+     XIC  ic;
+     FLAG mode;
+/* *INDENT-ON* */
+
+{
+  XRectangle *gpneeded, *gsneeded;
+  XRectangle wparea, wsarea, *gparea, *gsarea;
+  VALUABLE *needed[CHKNEEDED];
+  VALUABLE *area[CHKAREA];
+  XVaNestedList spe_nelist, sst_nelist;
+  XVaNestedList gpe_nelist, gst_nelist;
+  int cnt, sum;
+
+  if (mode != OFFSP)
+    {
+      prerrfunc ();
+      return (COMP);
+    }
+  else
+    {
+      cls (prdisp);             /* clear screen */
+      /* create nestedlist for set values */
+      prstatus ("Creating NestedList for set values \"AreaNeeded\"...");
+      upea.needed.width = 100;
+      upea.needed.height = 100;
+      usta.needed.width = 100;
+      usta.needed.height = 100;
+      spe_nelist = XVaCreateNestedList (DUMMY, XNAreaNeeded, &upea.needed, NULL);
+      sst_nelist = XVaCreateNestedList (DUMMY, XNAreaNeeded, &upea.needed, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() for change \"AreaNeeded\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"AreaNeeded\" ...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNAreaNeeded, &gpneeded, NULL);
+      gst_nelist = XVaCreateNestedList (DUMMY, XNAreaNeeded, &gsneeded, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"AreaNeeded\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      needed[0] = mkstruct (PNW, DEC, upea.needed.width, gpneeded->width);
+      needed[1] = mkstruct (PNH, DEC, upea.needed.height, gpneeded->height);
+      needed[2] = mkstruct (SNW, DEC, usta.needed.width, gsneeded->width);
+      needed[3] = mkstruct (SNH, DEC, usta.needed.height, gsneeded->height);
+      for (cnt = 0; cnt < CHKNEEDED; cnt++)
+        {
+          verval (needed[cnt]);
+        }
+      wparea = upea.area;
+      wsarea = usta.area;
+      upea.area.width = gpneeded->width;
+      upea.area.height = gpneeded->height;
+      usta.area.width = gsneeded->width;
+      usta.area.height = gsneeded->height;
+      spe_nelist = XVaCreateNestedList (DUMMY, XNArea, &upea.area, NULL);
+      sst_nelist = XVaCreateNestedList (DUMMY, XNArea, &usta.area, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() for change \"Area\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"Area\" ...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNArea, &gparea, NULL);
+      gst_nelist = XVaCreateNestedList (DUMMY, XNArea, &gsarea, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"Area\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      sum = 0;
+      area[0] = mkstruct (PAX, DEC, upea.area.x, gparea->x);
+      area[1] = mkstruct (PAY, DEC, upea.area.y, gparea->y);
+      area[2] = mkstruct (PAW, DEC, upea.area.width, gparea->width);
+      area[3] = mkstruct (PAH, DEC, upea.area.height, gparea->height);
+      area[4] = mkstruct (SAX, DEC, usta.area.x, gsarea->x);
+      area[5] = mkstruct (SAY, DEC, usta.area.y, gsarea->y);
+      area[6] = mkstruct (SAW, DEC, usta.area.width, gsarea->width);
+      area[7] = mkstruct (SAH, DEC, usta.area.height, gsarea->height);
+      for (cnt = 0; cnt < CHKAREA; cnt++)
+        {
+          sum += verval (area[cnt]);
+        }
+      /* output of results */
+      cls (prdisp);
+      prveres (sum);
+      if (sum != NOERR)
+        {
+          prprint ("Test of XSetICValues() \"Preedit/Status AreaNeeded\" is failed.\n");
+          prprint ("Preedit/Status Area has not changed, ");
+          prprint ("but I will continue test.\n\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() \"Preedit/Status AreaNeeded\" is failed.\n\n");
+        }
+      else
+        {
+          prprint ("Test of XSetICValues() \"Preedit/Status AreaNeeded\" is succeeded.\n");
+          prprint ("Preedit/Status Area has changed.\n\n");
+          prprint ("Check on your own eyes and move next test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() \"Preedit/Status AreaNeeded\" is succeeded.\n\n");
+        }
+      upea.area = wparea;
+      usta.area = wsarea;
+      spe_nelist = XVaCreateNestedList (DUMMY, XNArea, &upea.area, NULL);
+      sst_nelist = XVaCreateNestedList (DUMMY, XNArea, &usta.area, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() for change \"Area\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
+      prstatus ("done.");
+      XFree ((char *) spe_nelist);
+      XFree ((char *) sst_nelist);
+      XFree ((char *) gpe_nelist);
+      XFree ((char *) gst_nelist);
+      XFree ((XRectangle *) gparea);
+      XFree ((XRectangle *) gsarea);
+      XFree ((XRectangle *) gpneeded);
+      XFree ((XRectangle *) gsneeded);
+      prpok ();
+      return (COMP);
+    }
+}
+
+/* *INDENT-OFF* */
+FLAG
+sspot (ic, mode)           /* Set SPOTlocation */
+     XIC  ic;
+     FLAG mode;
+/* *INDENT-ON* */
+
+{
+  XPoint *gspot;
+  VALUABLE *spot[CHKSPOT];
+  XVaNestedList spe_nelist;
+  XVaNestedList gpe_nelist;
+  int cnt, sum;
+
+  if (mode != OVERSP)
+    {
+      prerrfunc ();
+      return (COMP);
+    }
+  else
+    {
+      cls (prdisp);             /* clear screen */
+      /* create nestedlist for set values */
+      prstatus ("Creating NestedList for set values \"SpotLocation\"...");
+      upea.spot.x = (upea.spot.x == XPSL1) ? XPSL2 : XPSL1;
+      upea.spot.y = YPSL;
+      spe_nelist = XVaCreateNestedList (DUMMY, XNSpotLocation, &upea.spot, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() for change \"SpotLocation\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"SpotLocation\" ...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNSpotLocation, &gspot, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"SpotLocation\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      sum = 0;
+      spot[0] = mkstruct (PSLX, DEC, upea.spot.x, gspot->x);
+      spot[1] = mkstruct (PSLY, DEC, upea.spot.y, gspot->y);
+      for (cnt = 0; cnt < CHKSPOT; cnt++)
+        {
+          sum += verval (spot[cnt]);
+        }
+      /* output of results */
+      cls (prdisp);
+      prveres (sum);
+      if (sum != NOERR)
+        {
+          prprint ("Test of XSetICValues() \"Preedit SpotLocation\" is failed.\n");
+          prprint ("Preedit SpotLocation has not changed.\n\n");
+          prprint ("I will destroy IC and continue test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() \"Preedit SpotLocation\" is failed.\n\n");
+          XFree ((char *) spe_nelist);
+          XFree ((char *) gpe_nelist);
+          prpng ();
+          return (DIC);
+        }
+      prprint ("Test of XSetICValues() \"Preedit SpotLocation\" is succeeded.\n");
+      prprint ("Preedit SpotLocation has changed.\n\n");
+      prprint ("Check on your own eyes and move next test.\n");
+      fprintf (icfp, "...Test of XSetICValues() \"Preedit SpotLocation\" is succeeded.\n\n");
+      XFree ((char *) spe_nelist);
+      XFree ((char *) gpe_nelist);
+      XFree ((XPoint *) gspot);
+      prpok ();
+      return (COMP);
+    }
+}
+
+
+/* *INDENT-OFF* */
+FLAG
+scmap (ic, mode)           /* Set ColorMAP */
+     XIC  ic;
+     FLAG mode;
+/* *INDENT-ON* */
+
+{
+  Colormap gpcmap, gscmap;
+  VALUABLE *colormap[CHKCMAP];
+  XVaNestedList spe_nelist, sst_nelist;
+  XVaNestedList gpe_nelist, gst_nelist;
+  int cnt, sum;
+
+  if (mode == ONSP)
+    {
+      prerrfunc ();
+      return (COMP);
+    }
+  else
+    {
+      cls (prdisp);             /* clear screen */
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for set values \"Colormap\"...");
+      cmflag = (cmflag == 1) ? 0 : 1;
+      XSetWindowColormap (dpy, window1.win, cmap[cmflag]);
+      XSetWindowColormap (dpy, window2.win, cmap[cmflag]);
+      XSetWindowColormap (dpy, window3.win, cmap[cmflag]);
+      XSetWindowColormap (dpy, mroot, cmap[cmflag]);
+      upea.cmap = usta.cmap = cmap[cmflag];
+      spe_nelist = XVaCreateNestedList (DUMMY, XNColormap, upea.cmap, NULL);
+      sst_nelist = XVaCreateNestedList (DUMMY, XNColormap, usta.cmap, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() for change \"Colormap\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"Colormap\" ...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNColormap, &gpcmap, NULL);
+      gst_nelist = XVaCreateNestedList (DUMMY, XNColormap, &gscmap, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"Colormap\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      sum = 0;
+      colormap[0] = mkstruct (PCM, HEX, upea.cmap, gpcmap);
+      colormap[1] = mkstruct (SCM, HEX, usta.cmap, gscmap);
+      for (cnt = 0; cnt < CHKCMAP; cnt++)
+        {
+          sum += verval (colormap[cnt]);
+        }
+      /* output of results */
+      cls (prdisp);
+      prveres (sum);
+      if (sum != NOERR)
+        {
+          prprint ("Test of XSetICValues() for change \"Preedit/Status Colormap\" is failed.\n");
+          prprint ("Preedit/Status Colormap has not changed.\n\n");
+          prprint ("I will destroy IC and continue test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Cmap\" is failed.\n\n");
+          XFree ((char *) spe_nelist);
+          XFree ((char *) sst_nelist);
+          XFree ((char *) gpe_nelist);
+          XFree ((char *) gst_nelist);
+          prpng ();
+          return (DIC);
+        }
+      prprint ("Test of XSetICValues() for change \"Preedit/Status Colormap\" is succeeded.\n");
+      prprint ("Preedit/Status Colormap has changed.\n\n");
+      prprint ("Check on your own eyes and move next test.\n");
+      prprint ("Check log file after this test.\n\n");
+      fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Colormap\" is succeeded.\n\n");
+      XFree ((char *) spe_nelist);
+      XFree ((char *) sst_nelist);
+      XFree ((char *) gpe_nelist);
+      XFree ((char *) gst_nelist);
+      prpok ();
+      return (COMP);
+    }
+}
+
+/* *INDENT-OFF* */
+FLAG
+sground (ic, mode)         /* Set fore/backGROUND */
+     XIC  ic;
+     FLAG mode;
+/* *INDENT-ON* */
+
+{
+  u_long gpfg, gpbg, gsfg, gsbg;
+  VALUABLE *ground[CHKFBGND];
+  XVaNestedList spe_nelist, sst_nelist;
+  XVaNestedList gpe_nelist, gst_nelist;
+  int cnt, sum;
+  static int i = 0, j = PIX_MAX - 1;
+
+  if (mode == ONSP)
+    {
+      prerrfunc ();
+      return (COMP);
+    }
+  else
+    {
+      cls (prdisp);             /* clear screen */
+      i++, j--;
+      if (i == PIX_MAX)
+        {
+          i = 0;
+        }
+      if (j == -1)
+        {
+          j = PIX_MAX - 1;
+        }
+      upea.fg = pixel[cmflag][j];
+      upea.bg = pixel[cmflag][i];
+      usta.fg = pixel[cmflag][i];
+      usta.bg = pixel[cmflag][j];
+      /* Create nestedlist for set values */
+      prstatus ("Creating NestedList for set values \"Fg/Bg\"...");
+      spe_nelist = XVaCreateNestedList (DUMMY, XNForeground, upea.fg, XNBackground, upea.bg, NULL);
+      sst_nelist = XVaCreateNestedList (DUMMY, XNForeground, usta.fg, XNBackground, usta.bg, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Using XSetICValues() for change \"Fg/Bg\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"Fg/Bg\" ...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNForeground, &gpfg, XNBackground, &gpbg, NULL);
+      gst_nelist = XVaCreateNestedList (DUMMY, XNForeground, &gsfg, XNBackground, &gsbg, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"Fg/Bg\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      sum = 0;
+      ground[0] = mkstruct (PFG, HEX, upea.fg, gpfg);
+      ground[1] = mkstruct (PBG, HEX, upea.bg, gpbg);
+      ground[2] = mkstruct (SFG, HEX, usta.fg, gsfg);
+      ground[3] = mkstruct (SBG, HEX, usta.bg, gsbg);
+      for (cnt = 0; cnt < CHKFBGND; cnt++)
+        {
+          sum += verval (ground[cnt]);
+        }
+      /* output of results */
+      cls (prdisp);
+      prveres (sum);
+      if (sum != NOERR)
+        {
+          prprint ("Test of XSetICValues() for change \"Preedit/Status Fg/Bg\" is failed.\n");
+          prprint ("Preedit/Status Fg/Bg has not changed.\n\n");
+          prprint ("I will destroy IC and continue test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Fg/Bg\" is failed.\n\n");
+          XFree ((char *) spe_nelist);
+          XFree ((char *) sst_nelist);
+          XFree ((char *) gpe_nelist);
+          XFree ((char *) gst_nelist);
+          prpng ();
+          return (DIC);
+        }
+      prprint ("Test of XSetICValues() for change \"Preedit/Status Fg/Bg\" is succeeded.\n");
+      prprint ("Preedit/Status Fg/Bg has changed.\n\n");
+      prprint ("Check on your own eyes and move next test.\n");
+      prprint ("Check log file after this test.\n\n");
+      fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Fg/Bg\" is succeeded.\n\n");
+      XFree ((char *) spe_nelist);
+      XFree ((char *) sst_nelist);
+      XFree ((char *) gpe_nelist);
+      XFree ((char *) gst_nelist);
+      prpok ();
+      return (COMP);
+    }
+}
+
+/* *INDENT-OFF* */
+FLAG
+spixmap (ic, mode)         /* Set bg/ PIXMAP */
+     XIC   ic;
+     FLAG  mode;
+/* *INDENT-ON* */
+
+{
+  Pixmap gppix, gspix;
+  VALUABLE *pixmap[CHKPIX];
+  XVaNestedList spe_nelist, sst_nelist;
+  XVaNestedList gpe_nelist, gst_nelist;
+  int cnt, sum;
+
+  if (mode == ONSP)
+    {
+      prerrfunc ();
+      return (COMP);
+    }
+  else
+    {
+      cls (prdisp);             /* clear screen */
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for set values \"Bg/ Pixmap\"...");
+      upea.bgpm = (upea.bgpm == pix[0]) ? pix[1] : pix[0];
+      usta.bgpm = (usta.bgpm == pix[0]) ? pix[1] : pix[0];
+      spe_nelist = XVaCreateNestedList (DUMMY, XNBackgroundPixmap, upea.bgpm, NULL);
+      sst_nelist = XVaCreateNestedList (DUMMY, XNBackgroundPixmap, usta.bgpm, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() \"Bg/ Pixmap\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"Bg/ Pixmap\" again...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNBackgroundPixmap, &gppix, NULL);
+      gst_nelist = XVaCreateNestedList (DUMMY, XNBackgroundPixmap, &gspix, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"Bg/ Pixmap\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      sum = 0;
+      pixmap[0] = mkstruct (PBP, HEX, upea.bgpm, gppix);
+      pixmap[1] = mkstruct (SBP, HEX, usta.bgpm, gspix);
+      for (cnt = 0; cnt < CHKPIX; cnt++)
+        {
+          sum += verval (pixmap[cnt]);
+        }
+      /* output of results */
+      cls (prdisp);
+      prveres (sum);
+      if (sum != NOERR)
+        {
+          prprint ("Test of XSetICValues() for change \"Preedit/Status Bg/ Pixmap\" is failed.\n");
+          prprint ("Preedit/Status Bg/ Pixmap has not changed. ");
+          prprint ("but I will continue test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Bg/ Pixmap\" is failed.\n\n");
+        }
+      else
+        {
+          prprint ("Test of XSetICValues() for change \"Preedit/Status Bg/ Pixmap\" is succeeded.\n");
+          prprint ("Preedit/Status Bg/ Pixmap has changed.\n\n");
+          prprint ("Check on your own eyes and move next test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Bg/ Pixmap\" is succeeded.\n\n");
+        }
+      XFree ((char *) spe_nelist);
+      XFree ((char *) sst_nelist);
+      XFree ((char *) gpe_nelist);
+      XFree ((char *) gst_nelist);
+      prpok ();
+      return (COMP);
+    }
+}
+
+/* *INDENT-OFF* */
+FLAG
+sfontset (ic, mode)        /* Set FONTSET */
+     XIC  ic;
+     FLAG mode;
+/* *INDENT-ON* */
+
+{
+  XFontSet gpfont, gsfont;
+  VALUABLE *font[CHKFONT];
+  XVaNestedList spe_nelist, sst_nelist;
+  XVaNestedList gpe_nelist, gst_nelist;
+  int cnt, sum;
+
+  if (mode == ONSP)
+    {
+      prerrfunc ();
+      return (COMP);
+    }
+  else
+    {
+      cls (prdisp);             /* clear screen */
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for set values \"FontSet\"...");
+      upea.fset = (upea.fset == fontset[0]) ? fontset[1] : fontset[0];
+      usta.fset = (usta.fset == fontset[0]) ? fontset[1] : fontset[0];
+      spe_nelist = XVaCreateNestedList (DUMMY, XNFontSet, upea.fset, NULL);
+      sst_nelist = XVaCreateNestedList (DUMMY, XNFontSet, usta.fset, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() for change \"FontSet\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"FontSet\" ...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNFontSet, &gpfont, NULL);
+      gst_nelist = XVaCreateNestedList (DUMMY, XNFontSet, &gsfont, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"FontSet\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      sum = 0;
+      font[0] = mkstruct (PFS, HEX, upea.fset, gpfont);
+      font[1] = mkstruct (SFS, HEX, usta.fset, gsfont);
+      for (cnt = 0; cnt < CHKFONT; cnt++)
+        {
+          sum += verval (font[cnt]);
+        }
+      /* output of results */
+      cls (prdisp);
+      prveres (sum);
+      if (sum != NOERR)
+        {
+          prprint ("Test of XSetICValues() for change \"Preedit/Status FontSet\" is failed.\n");
+          prprint ("Preedit/Status FontSet has not changed.\n\n");
+          prprint ("I will destroy IC and continue test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status FontSet\" is failed.\n\n");
+          XFree ((char *) spe_nelist);
+          XFree ((char *) sst_nelist);
+          XFree ((char *) gpe_nelist);
+          XFree ((char *) gst_nelist);
+          prpng ();
+          return (DIC);
+        }
+      prprint ("Test of XSetICValues() for change \"Preedit/Status FontSet\" is succeeded.\n");
+      prprint ("Preedit/Status FontSet has changed.\n\n");
+      prprint ("Check on your own eyes and move next test.\n");
+      prprint ("Check log file after this test.\n\n");
+      fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status FontSet\" is succeeded.\n\n");
+      XFree ((char *) spe_nelist);
+      XFree ((char *) sst_nelist);
+      XFree ((char *) gpe_nelist);
+      XFree ((char *) gst_nelist);
+      prpok ();
+      return (COMP);
+    }
+}
+
+/* *INDENT-OFF* */
+FLAG
+slinespc (ic, mode)        /* Set LINESPaCing */
+     XIC   ic;
+     FLAG  mode;
+/* *INDENT-ON* */
+
+{
+  XRectangle *gplspc;
+  VALUABLE *plspc;
+  XVaNestedList spe_nelist;
+  XVaNestedList gpe_nelist;
+  int sum;
+
+  if (mode != OVERSP)
+    {
+      prerrfunc ();
+      return (COMP);
+    }
+  else
+    {
+      cls (prdisp);             /* clear screen */
+      /* create nestedlist for set values */
+      prstatus ("Creating NestedList for set values \"LineSpacing\"...");
+      upea.lspc = (upea.lspc == LSPC1) ? LSPC2 : LSPC1;
+      spe_nelist = XVaCreateNestedList (DUMMY, XNLineSpace, upea.lspc, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() for change \"LineSpacing\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"LineSpacing\" ...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNLineSpace, &gplspc, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"LineSpacing\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      sum = 0;
+      plspc = mkstruct (PLS, DEC, upea.lspc, gplspc);
+      sum += verval (plspc);
+      /* output of results */
+      cls (prdisp);
+      prveres (sum);
+      if (sum != NOERR)
+        {
+          prprint ("Test of XSetICValues() for change \"Preedit LineSpacing\" is failed.\n");
+          prprint ("Preedit LineSpacing has not changed.\n\n");
+          prprint ("I will destroy IC and continue test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() for change \"Preedit LineSpacing\" is faled.\n\n");
+          XFree ((char *) spe_nelist);
+          XFree ((char *) gpe_nelist);
+          prpng ();
+          return (DIC);
+        }
+      prprint ("Test of XSetICValues() for change \"Preedit LineSpacing\" is succeeded.\n");
+      prprint ("Status LineSpacing has changed.\n\n");
+      prprint ("Check on your own eyes and move next test.\n");
+      prprint ("Check log file after this test.\n\n");
+      fprintf (icfp, "...Test of XSetICValues() for change \"Preedit LineSpacing\" is succeeded.\n\n");
+      XFree ((char *) spe_nelist);
+      XFree ((char *) gpe_nelist);
+      prpok ();
+      return (COMP);
+    }
+}
+
+/* *INDENT-OFF* */
+FLAG
+scursor (ic, mode)         /* Set CURSOR */
+     XIC  ic;
+     FLAG mode;
+/* *INDENT-ON* */
+
+{
+  Cursor gpcursor, gscursor;
+  VALUABLE *cur[CHKCUR];
+  XVaNestedList spe_nelist, sst_nelist;
+  XVaNestedList gpe_nelist, gst_nelist;
+  int cnt, sum;
+
+  if (mode == ONSP)
+    {
+      prerrfunc ();
+      return (COMP);
+    }
+  else
+    {
+      cls (prdisp);             /* clear screen */
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for set values \"Cursor\"...");
+      upea.cursor = (upea.cursor == cursor[0]) ? cursor[1] : cursor[0];
+      usta.cursor = (usta.cursor == cursor[0]) ? cursor[1] : cursor[0];
+      spe_nelist = XVaCreateNestedList (DUMMY, XNCursor, upea.cursor, NULL);
+      sst_nelist = XVaCreateNestedList (DUMMY, XNCursor, usta.cursor, NULL);
+      prstatus ("done.");
+      /* test of XSetICValues */
+      prstatus ("Test of XSetICValues() for change \"Cursor\"...");
+      XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
+      prstatus ("done.");
+      /* create nestedlist for get values */
+      prstatus ("Creating NestedList for get values \"Cursor\" ...");
+      gpe_nelist = XVaCreateNestedList (DUMMY, XNCursor, &gpcursor, NULL);
+      gst_nelist = XVaCreateNestedList (DUMMY, XNCursor, &gscursor, NULL);
+      prstatus ("done.");
+      /* test of XGetICValues */
+      prstatus ("Test of XGetICValues() \"Cursor\"...");
+      XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
+      prstatus ("done.");
+      /* verify values */
+      sum = 0;
+      cur[0] = mkstruct (PCU, HEX, upea.cursor, gpcursor);
+      cur[1] = mkstruct (SCU, HEX, usta.cursor, gscursor);
+      for (cnt = 0; cnt < CHKCUR; cnt++)
+        {
+          sum += verval (cur[cnt]);
+        }
+      /* output of results */
+      cls (prdisp);
+      prveres (sum);
+      if (sum != NOERR)
+        {
+          prprint ("Test of XSetICValues() for change \"Preedit/Status Cursor\" is failed.\n");
+          prprint ("Preedit/Status Cursor has not changed, ");
+          prprint ("but I will continue test.\n\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Cursor\" is failed.\n\n");
+        }
+      else
+        {
+          prprint ("Test of XSetICValues() for change \"Preedit/Status Cursor\" is succeeded.\n");
+          prprint ("Preedit/Status Cursor has changed.\n\n");
+          prprint ("Check on your own eyes and move next test.\n");
+          prprint ("Check log file after this test.\n\n");
+          fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Cursor\" is succeeded.\n\n");
+        }
+      XFree ((char *) spe_nelist);
+      XFree ((char *) sst_nelist);
+      XFree ((char *) gpe_nelist);
+      XFree ((char *) gst_nelist);
+      prpok ();
+      return (COMP);
+    }
+}