home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 June / PCWorld_1998-06_cd.bin / software / sharware / grafika / EROICA32 / _SETUP.3 / Group2 / TESTCASE.C < prev    next >
C/C++ Source or Header  |  1998-01-15  |  26KB  |  924 lines

  1. /*-------------------------- Parallax Standard C_File ----------------------------
  2.       C_File: testcase.c
  3.       
  4.       Purpose: This file contains the source code for the individual
  5.                unit tests for the Eroica unit test program.
  6.               
  7.       
  8. --------------------------------------------------------------------------------
  9.           Copyright (c)1996 Parallax Software , All rights reserved.            
  10. ------------------------------------------------------------------------------*/
  11.  
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15.  
  16. #include "dde_test.h"
  17. #include "utdde.h"
  18. #include "utfile.h"
  19.  
  20. #define NAMELEN 256
  21.  
  22. /* ========================================= Parallax C Function ==================
  23.  
  24.    @Name: UT_TestLoad
  25.    @Desc: 
  26.  
  27. ============================================================================== */
  28.  
  29. #define MAXDOCLOAD 8
  30.  
  31. int UT_TestLoad(HCONV ghConv)
  32. {
  33.   int ret = TRUE;
  34.   int n,i;
  35.  
  36.   DOCWINID docWinID = 0;
  37.  
  38.   char tmpdocname[NAMELEN];
  39.  
  40.   /* list of files to read */
  41.   char doclist[MAXDOCLOAD][NAMELEN];
  42.  
  43.   for (n=0; n<MAXDOCLOAD; n++)
  44.   {
  45.     char tag[15];
  46.     wsprintf(tag, "File%d", n+1);
  47.     lstrcpy( doclist[n], "" );
  48.     GetPrivateProfileString("LoadTest", tag, "", doclist[n], NAMELEN, ".\\dde_test.ini");
  49.   }
  50.  
  51.   _MSG("Load Test");
  52.   _MSG("=========");
  53.  
  54.   IMG_SetFocus(ghConv);
  55.  
  56.   for (n=0; n<MAXDOCLOAD; n++)
  57.   {
  58.     if (doclist[n][0] == 0) continue;
  59.  
  60.     UT_GetTmpVersion(doclist[n], tmpdocname);
  61.  
  62.     /* load this doc */
  63.     ret = IMG_OpenDocWin(ghConv, 0, TYPE_UNKNOWN, tmpdocname, NULL, 0, 0, 0, &docWinID);
  64.     if (!ret) goto cleanup;
  65.  
  66.     /* zoom to fit */
  67.     ret = IMG_SetZoom(ghConv, docWinID, ZOOM_FIT, 0, 0, 0);
  68.     if (!ret) goto cleanup;
  69.  
  70.     /* zoom way in */
  71.     for (i=0; i<3; i++)
  72.     {
  73.       ret = IMG_SetZoom(ghConv, docWinID, ZOOM_IN, 0, 0, 0);
  74.       if (!ret) goto cleanup;
  75.     } /* for (i=0; i<3; i++) */
  76.  
  77.     /* scroll corners */
  78.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_CENTER);
  79.     if (!ret) goto cleanup;
  80.  
  81.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_BOTTOMLEFT);
  82.     if (!ret) goto cleanup;
  83.  
  84.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_BOTTOMRIGHT);
  85.     if (!ret) goto cleanup;
  86.  
  87.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_TOPLEFT);
  88.     if (!ret) goto cleanup;
  89.  
  90.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_TOPRIGHT);
  91.     if (!ret) goto cleanup;
  92.  
  93.     /* zoom 1:1 */
  94.     ret = IMG_SetZoom(ghConv, docWinID, ZOOM_1TO1, 0, 0, 0);
  95.     if (!ret) goto cleanup;
  96.  
  97.     /* scroll pages */
  98.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_CENTER);
  99.     if (!ret) goto cleanup;
  100.  
  101.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_UPPAGE);
  102.     if (!ret) goto cleanup;
  103.  
  104.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_LEFTPAGE);
  105.     if (!ret) goto cleanup;
  106.  
  107.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_DOWNPAGE);
  108.     if (!ret) goto cleanup;
  109.  
  110.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_RIGHTPAGE);
  111.     if (!ret) goto cleanup;
  112.  
  113.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_LEFTUPPAGE);
  114.     if (!ret) goto cleanup;
  115.  
  116.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_RIGHTUPPAGE);
  117.     if (!ret) goto cleanup;
  118.  
  119.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_RIGHTDOWNPAGE);
  120.     if (!ret) goto cleanup;
  121.  
  122.     ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_LEFTDOWNPAGE);
  123.     if (!ret) goto cleanup;
  124.  
  125.     /* zoom way out */
  126.     for (i=0; i<3; i++)
  127.     {
  128.       ret = IMG_SetZoom(ghConv, docWinID, ZOOM_OUT, 0, 0, 0);
  129.       if (!ret) goto cleanup;
  130.     } /* for (i=0; i<3; i++) */
  131.  
  132.     /* zoom to fit */
  133.     ret = IMG_SetZoom(ghConv, docWinID, ZOOM_ACTUAL, 0, 0, 0);
  134.     if (!ret) goto cleanup;
  135.  
  136.     ret = IMG_SetZoom(ghConv, docWinID, ZOOM_HFIT, 0, 0, 0);
  137.     if (!ret) goto cleanup;
  138.  
  139.     ret = IMG_SetZoom(ghConv, docWinID, ZOOM_VFIT, 0, 0, 0);
  140.     if (!ret) goto cleanup;
  141.  
  142.     /* zoom 1:1 */
  143.     ret = IMG_SetZoom(ghConv, docWinID, ZOOM_1TO1, 0, 0, 0);
  144.     if (!ret) goto cleanup;
  145.  
  146.     for (i=0; i<6; i++)
  147.     {
  148.        /* set the scroll step */
  149.        ret = IMG_SetScrollStep(ghConv, docWinID, (float)(i+1)/6);
  150.        if (!ret) goto cleanup;
  151.  
  152.        /* scroll steps */
  153.        ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_CENTER);
  154.        if (!ret) goto cleanup;
  155.  
  156.        ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_UPSTEP);
  157.        if (!ret) goto cleanup;
  158.  
  159.        ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_LEFTSTEP);
  160.        if (!ret) goto cleanup;
  161.  
  162.        ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_DOWNSTEP);
  163.        if (!ret) goto cleanup;
  164.  
  165.        ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_RIGHTSTEP);
  166.        if (!ret) goto cleanup;
  167.  
  168.        ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_LEFTUPSTEP);
  169.        if (!ret) goto cleanup;
  170.  
  171.        ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_RIGHTUPSTEP);
  172.        if (!ret) goto cleanup;
  173.  
  174.        ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_RIGHTDOWNSTEP);
  175.        if (!ret) goto cleanup;
  176.  
  177.        ret = IMG_SetScrollView(ghConv, docWinID, SCROLLVIEW_LEFTDOWNSTEP);
  178.        if (!ret) goto cleanup;
  179.     } /* for (i=0; i<6; i++) */
  180.  
  181.     /* remove the window */
  182.     ret = IMG_CloseDocWin(ghConv, docWinID, FALSE);
  183.     if (!ret) goto cleanup;
  184.  
  185.     UT_DeleteFile(tmpdocname);
  186.  
  187.   } /* for (n=0; n<MAXDOCLOAD; n++)  */
  188.  
  189. cleanup:
  190.   if (ret)
  191.   {
  192.     /* delete the temp file */
  193.     _MSG("..........SUCCESSFUL");
  194.   } else {  /* if (ret) ... error occured */
  195.       UT_DeleteFile(tmpdocname);
  196.       _MSG("..........FAILED");
  197.   } /* if (ret) */
  198.  
  199.   return (ret);
  200. } /* UT_TestLoad() */
  201.  
  202. /* ========================================= Parallax C Function ==================
  203.  
  204.    @Name: UT_TestSave
  205.    @Desc: 
  206.  
  207. ============================================================================== */
  208.  
  209. #define MAXDOCSAVE 8
  210. int UT_TestSave(HCONV ghConv)
  211. {
  212.   int ret = TRUE;
  213.   int count0, count1;
  214.   int n;
  215.  
  216.   DOCWINID docWinID = 0;
  217.  
  218.   /* window labels */
  219.   char docwinlabel0[NAMELEN];
  220.   char docwinlabel1[NAMELEN];
  221.  
  222.   char docsavename[NAMELEN];                /* temporary file name for save  */
  223.  
  224.   char doctmplist[MAXDOCSAVE][NAMELEN];     /* temporary file names for read */
  225.  
  226.   /* list of files to read */
  227.   char doclist[MAXDOCSAVE][NAMELEN];
  228.  
  229.   for (n=0; n<MAXDOCSAVE; n++)
  230.   {
  231.     char tag[15];
  232.     wsprintf(tag, "File%d", n+1);
  233.     lstrcpy( doclist[n], "" );
  234.     GetPrivateProfileString("SaveTest", tag, "", doclist[n], NAMELEN, ".\\dde_test.ini");
  235.   } /* for (n=0; n<MAXDOCSAVE; n++) */
  236.  
  237.   _MSG("=========");
  238.   _MSG("Save Test");
  239.   _MSG("=========");
  240.  
  241.   UT_GetTmpFileName(docsavename);
  242.  
  243.   for (n=0; n<MAXDOCSAVE; n++)
  244.   {
  245.     if (doclist[n][0] == 0) continue;
  246.  
  247.     UT_GetTmpVersion(doclist[n], doctmplist[n]);
  248.  
  249.     if (docWinID == 0)
  250.     {
  251.       /* load this doc as a document */
  252.       ret = IMG_OpenDocWin(ghConv, 0, TYPE_UNKNOWN, doctmplist[n], NULL, 0, 0, 0, &docWinID);
  253.       if (!ret) goto cleanup;
  254.     } else /* docWinID == 0 */
  255.     { 
  256.       char explayerfile[NAMELEN];
  257.       LAYERID layerID;
  258.       DOCWINID docWinIDTmp;
  259.  
  260.       /* import this doc as a layer */
  261.       ret = IMG_ImportLayer(ghConv, docWinID, doctmplist[n], NULL, TYPE_UNKNOWN, &layerID);
  262.       if (!ret) goto cleanup;
  263.  
  264.       /* export this layer to a tmp file */
  265.       UT_GetTmpFileName(explayerfile);
  266.  
  267.       ret = IMG_ExportLayer(ghConv, docWinID, layerID, TRUE, explayerfile, NULL, FALSE);
  268.       if (!ret) goto cleanup;
  269.  
  270.       UT_Sleep(3);
  271.  
  272.       /* load the file back in */
  273.       ret = IMG_OpenDocWin(ghConv, 0, TYPE_UNKNOWN, explayerfile, NULL, 0, 0, 0, &docWinIDTmp);
  274.       if (!ret) goto cleanup;
  275.  
  276.       /* destroy this docwin */
  277.       ret = IMG_CloseDocWin(ghConv, docWinIDTmp, FALSE);
  278.       if (!ret) goto cleanup;
  279.  
  280.       /* delete the tmp file */
  281.       UT_DeleteFile(explayerfile);
  282.  
  283.       /* save this layer to a tmp file */
  284.       UT_GetTmpFileName(explayerfile);
  285.  
  286.       ret = IMG_SaveLayer(ghConv, docWinID, layerID, TRUE, explayerfile, NULL, TRUE, 1, 0);
  287.       if (!ret) goto cleanup;
  288.  
  289.       UT_Sleep(3);
  290.  
  291.       /* load the file back in */
  292.       ret = IMG_OpenDocWin(ghConv, 0, TYPE_UNKNOWN, explayerfile, NULL, 0, 0, 0, &docWinIDTmp);
  293.       if (!ret) goto cleanup;
  294.  
  295.       /* destroy this docwin */
  296.       ret = IMG_CloseDocWin(ghConv, docWinIDTmp, FALSE);
  297.       if (!ret) goto cleanup;
  298.  
  299.       /* delete the tmp file */
  300.       UT_DeleteFile(explayerfile);
  301.     } /* docWinID == 0 */
  302.  
  303.     /* set the document title */
  304.     UT_ConstructUniqueLabel(1, docwinlabel0);
  305.  
  306.     ret = IMG_SetDocumentTitle(ghConv, docWinID, docwinlabel0);
  307.     if (!ret) goto cleanup;
  308.  
  309.     /* count the layers in this document */
  310.     ret = IMG_GetNumberLayers(ghConv, docWinID, &count0);
  311.     if (!ret) goto cleanup;
  312.  
  313.     /* save all layers out into a document */
  314.     ret = IMG_Save(ghConv, docWinID, TRUE, docsavename, "TEST", TRUE);
  315.     if (!ret) goto cleanup;
  316.  
  317.     UT_Sleep(3*(n+1));
  318.  
  319.     /* close all current windows */
  320.     ret = IMG_CloseAllDocWin(ghConv, FALSE);
  321.     if (!ret) goto cleanup;
  322.  
  323.     /* open the saved file */
  324.     ret = IMG_OpenDocWin(ghConv, 0, TYPE_UNKNOWN, docsavename, NULL, 0, 0, 0, &docWinID);
  325.     if (!ret) goto cleanup;
  326.  
  327.     /* check that the title was saved with the doc */
  328.     ret = IMG_GetDocumentTitle(ghConv, docWinID, docwinlabel1);
  329.     if (!ret) goto cleanup;
  330.  
  331. #if 0
  332.     if (strcmp(docwinlabel0, docwinlabel1) != 0)
  333.     {
  334.       ret = FALSE;
  335.       _MSG("Document labels don't match!!!");
  336.       goto cleanup;
  337.     } /* if (strcmp(docwinlabel0, docwinlabel1) != 0) */
  338. #endif
  339.  
  340.     /* check that all layers are present */
  341.     ret = IMG_GetNumberLayers(ghConv, docWinID, &count1);
  342.     if (!ret) goto cleanup;
  343.  
  344.     if (count0 != count1)
  345.     {
  346.       ret = FALSE;
  347.       _MSG("Count wrong. Test failed!!!");
  348.       goto cleanup;
  349.     } /* if (count0 != count1) */
  350.  
  351.     UT_DeleteFile(doctmplist[n]);
  352.  
  353.   } /* for (n=0; n<MAXDOCSAVE; n++) */
  354.  
  355. cleanup:
  356.   /* delete the document file */
  357.   UT_DeleteFile(docsavename);
  358.  
  359.   if (ret) {
  360.       _MSG("..........SUCCESSFUL");
  361.   } else { /* if (ret) */
  362.      /* delete all temp copies */
  363.      for (n=0; n<MAXDOCSAVE; n++) {
  364.          UT_DeleteFile(doctmplist[n]);
  365.      } /* for (n=0; n<MAXDOCSAVE; n++) */
  366.      _MSG("..........FAILED");
  367.   } /* if (ret) */
  368.  
  369.   return (ret);
  370. } /* UT_TestSave() */
  371.  
  372. /* ========================================= Parallax C Function ==================
  373.  
  374.    @Name: UT_TestMerge
  375.    @Desc: 
  376.  
  377. ============================================================================== */
  378.  
  379. #define MAXDOCMERGE   8
  380.  
  381. int UT_TestMerge(HCONV ghConv)
  382. {
  383.   int ret = TRUE;
  384.   int n;
  385.   int count;
  386.   int mergecalls = 0;
  387.  
  388.   DOCWINID docWinID = 0;
  389.   DOCWINID mergeID;
  390.   LAYERID  layerID;
  391.  
  392.   char doctmplist[MAXDOCMERGE][NAMELEN];     /* temporary file names for read */
  393.   int  layeridlist[MAXDOCSAVE];              /* temporary layer ids to activate */
  394.  
  395.   /* list of files to read */
  396.   char doclist[MAXDOCMERGE][NAMELEN];
  397.  
  398.   for (n=0; n<MAXDOCMERGE; n++)
  399.   {
  400.      char tag[15];
  401.      wsprintf(tag, "File%d", n+1);
  402.      lstrcpy( doclist[n], "" );
  403.      lstrcpy( doctmplist[n], "" );
  404.      GetPrivateProfileString("MergeTest", tag, "", doclist[n], NAMELEN, ".\\dde_test.ini");
  405.   } /* for (n=0; n<MAXDOCMERGE; n++) */
  406.  
  407.   _MSG("==========");
  408.   _MSG("Merge Test");
  409.   _MSG("==========");
  410.  
  411.   /* close all docwind to count windows correctly */
  412.   ret = IMG_CloseAllDocWin( ghConv, FALSE );
  413.   if (!ret) goto cleanup;
  414.  
  415.   count = 0;
  416.  
  417.   for (n=0; n<MAXDOCMERGE; n++)
  418.   {
  419.     if (doclist[n][0] == 0) continue;
  420.  
  421.     UT_GetTmpVersion(doclist[n], doctmplist[n]);
  422.  
  423.     if (docWinID==0)
  424.     {
  425.       /* load this doc as a document */
  426.       ret = IMG_OpenDocWin(ghConv, 0, TYPE_UNKNOWN, doctmplist[n], NULL, 0, 0, 0, &docWinID);
  427.       if (!ret) goto cleanup;
  428.     } else /* if (docWinID == 0) */
  429.     {
  430.       /* import this doc as a layer and save its id */
  431.       ret = IMG_ImportLayer(ghConv, docWinID, doctmplist[n], NULL, TYPE_UNKNOWN, layeridlist+n);
  432.       if (!ret) goto cleanup;
  433.     } /* if (docWinID == 0) */
  434.     count++;
  435.   } /* for (n=0; n<MAXDOCMERGE; n++) */
  436.  
  437.   /* set the window title */
  438.   ret = IMG_SetWindowTitle(ghConv, docWinID, "Original");
  439.   if (!ret) goto cleanup;
  440.  
  441.   /* set active raster layer */
  442.   ret = IMG_GetActiveRasterLayer(ghConv, docWinID, &layerID);
  443.   if (!ret) goto cleanup;
  444.  
  445.   ret = IMG_SetActiveLayer(ghConv, docWinID, layerID, TRUE);
  446.   if (!ret) goto cleanup;
  447.  
  448.   /* set active edit layer */
  449.   ret = IMG_GetActiveEditLayer(ghConv, docWinID, &layerID);
  450.   if (!ret) goto cleanup;
  451.  
  452.   ret = IMG_SetActiveLayer(ghConv, docWinID, layerID, TRUE);
  453.   if (!ret) goto cleanup;
  454.  
  455.   /* turn some layers off */
  456.   ret = IMG_SetDisplayLayer(ghConv, docWinID, layeridlist[2], FALSE);
  457.   if (!ret) goto cleanup;
  458.  
  459.   /* turn some layers off */
  460.   ret = IMG_SetDisplayLayer(ghConv, docWinID, layeridlist[4], FALSE);
  461.   if (!ret) goto cleanup;
  462.  
  463.   /* merge all layers into a single raster layer */
  464.   ret = IMG_Merge(ghConv, docWinID, MERGE_WHOLEDOC, &mergeID);
  465.   if (!ret) goto cleanup;
  466.  
  467.   if (mergeID != 0)
  468.   {
  469.     ret = IMG_SetWindowTitle(ghConv, mergeID, "MERGE WholeDoc (ABCDEFGHabcdefgh)");
  470.     if (!ret) goto cleanup;
  471.     mergecalls++;
  472.   } /* if (mergeID != 0) */
  473.  
  474.   /* merge displayed layers into a single raster layer */
  475.   ret = IMG_Merge(ghConv, docWinID, MERGE_DISPLAYEDLAYERS, &mergeID);
  476.   if (!ret) goto cleanup;
  477.  
  478.   if (mergeID != 0)
  479.   {
  480.     ret = IMG_SetWindowTitle(ghConv, mergeID, "MERGE Displayed Layers (AFGDabgh)");
  481.     if (!ret) goto cleanup;
  482.     mergecalls++;
  483.   } /* if (mergeID != 0)*/
  484.  
  485.   /* merge as displayed into a single raster layer */
  486.   ret = IMG_Merge(ghConv, docWinID, MERGE_ASDISPLAYED, &mergeID);
  487.   if (!ret) goto cleanup;
  488.  
  489.   if (mergeID != 0)
  490.   {
  491.     ret = IMG_SetWindowTitle(ghConv, mergeID, "MERGE As Displayed (AFGDabgh)");
  492.     if (!ret) goto cleanup;
  493.     mergecalls++;
  494.   } /* if (mergeID != 0) */
  495.  
  496.   /* merge displayed rasters into a single raster layer */
  497.   ret = IMG_Merge(ghConv, docWinID, MERGE_DISPLAYEDRASTERS, &mergeID);
  498.   if (!ret) goto cleanup;
  499.  
  500.   if (mergeID != 0)
  501.   {
  502.     ret = IMG_SetWindowTitle(ghConv, mergeID, "MERGE Displayed Rasters (AFGD)");
  503.     if (!ret) goto cleanup;
  504.     mergecalls++;
  505.   } /* if (mergeID != 0) */
  506.  
  507.   /* merge displayed edits into a single raster layer */
  508.   ret = IMG_Merge(ghConv, docWinID, MERGE_DISPLAYEDEDITS, &mergeID);
  509.   if (!ret) goto cleanup;
  510.  
  511.   if (mergeID != 0)
  512.   {
  513.     ret = IMG_SetWindowTitle(ghConv, mergeID, "MERGE displayed edits (abgh)");
  514.     if (!ret) goto cleanup;
  515.     mergecalls++;
  516.   } /* if (mergeID != 0) */
  517.  
  518.   /* merge active raster into a single raster layer - activate raster */
  519.   ret = IMG_SetActiveLayer(ghConv, docWinID, layeridlist[1], TRUE);
  520.   if (!ret) goto cleanup;
  521.  
  522.   ret = IMG_Merge(ghConv, docWinID, MERGE_ACTIVERASTER, &mergeID);
  523.   if (!ret) goto cleanup;
  524.  
  525.   if (mergeID != 0)
  526.   {
  527.     ret = IMG_SetWindowTitle(ghConv, mergeID, "MERGE Active Raster (F)");
  528.     if (!ret) goto cleanup;
  529.     mergecalls++;
  530.   } /* if (mergeID != 0) */
  531.  
  532.   /* merge active edit into a single raster layer - activate edit */
  533.   ret = IMG_SetActiveLayer(ghConv, docWinID, layeridlist[3], TRUE);
  534.   if (!ret) goto cleanup;
  535.  
  536.   ret = IMG_Merge(ghConv, docWinID, MERGE_ACTIVEEDIT, &mergeID);
  537.   if (!ret) goto cleanup;
  538.  
  539.   if (mergeID != 0)
  540.   {
  541.     ret = IMG_SetWindowTitle(ghConv, mergeID, "MERGE Active Edit (g)");
  542.     if (!ret) goto cleanup;
  543.     mergecalls++;
  544.   } /* if (mergeID != 0) */
  545.  
  546.   /* set active raster layer off */
  547.   ret = IMG_GetActiveRasterLayer(ghConv, docWinID, &layerID);
  548.   if (!ret) goto cleanup;
  549.  
  550.   ret = IMG_SetActiveLayer(ghConv, docWinID, layerID, FALSE);
  551.   if (!ret) goto cleanup;
  552.  
  553.   ret = IMG_GetActiveRasterLayer(ghConv, docWinID, &layerID);
  554.   if (!ret) goto cleanup;
  555.  
  556.   if (layerID != 0)
  557.   {
  558.     ret = FALSE;
  559.     _MSG("Could not reset active raster layer.");
  560.     goto cleanup;
  561.   } /* if (mergeID != 0) */
  562.  
  563.   /* set active edit layer off */
  564.   ret = IMG_GetActiveEditLayer(ghConv, docWinID, &layerID);
  565.   if (!ret) goto cleanup;
  566.  
  567.   ret = IMG_SetActiveLayer(ghConv, docWinID, layerID, FALSE);
  568.   if (!ret) goto cleanup;
  569.  
  570.   ret = IMG_GetActiveEditLayer(ghConv, docWinID, &layerID);
  571.   if (!ret) goto cleanup;
  572.  
  573.   if (layerID != 0)
  574.   {
  575.     ret = FALSE;
  576.     _MSG("Could not reset active edit layer.");
  577.     goto cleanup;
  578.   } /* if (mergeID != 0) */
  579.  
  580.   /* check the number of docwins */
  581.   ret = IMG_GetNumberDocWins(ghConv, &count);
  582.   if (!ret) goto cleanup;
  583.  
  584.   if (count != mergecalls+1)
  585.   {
  586.     ret = FALSE;
  587.     _MSG("Docwin count failed.");
  588.     goto cleanup;
  589.   } /* if (mergeID != 0) */
  590.  
  591. cleanup:
  592.   IMG_ArrangeDocWins(ghConv, ARRANGE_TILE);
  593.  
  594.     for (n=0; n<MAXDOCSAVE; n++)
  595.     {
  596.       UT_DeleteFile(doctmplist[n]);
  597.     } /* for (n=0; n<MAXDOCSAVE; n++) */
  598.  
  599.   if (ret)
  600.   {
  601.     /* delete all temp copies */
  602.       _MSG("..........SUCCESSFUL");
  603.   } else { /* if (ret) */
  604.       _MSG("..........FAILED");
  605.   } /* if (ret) */
  606.  
  607.   return (ret);
  608. } /* UT_TestMerge() */
  609.  
  610.  
  611. /* ========================================= Parallax C Function ==================
  612.  
  613.    @Name: UT_TestDisplayLayer
  614.    @Desc: 
  615.  
  616. ============================================================================== */
  617.  
  618. int UT_TestDisplayLayer(HCONV ghConv)
  619. {
  620.   int     ret = TRUE;
  621.   int     i,count;
  622.   BOOL    bDisp;
  623.   LAYERID list[20];
  624.   DOCWINID docWinID;
  625.   char    docname[NAMELEN];
  626.   char    tmpdocname[NAMELEN] = "";
  627.  
  628.   _MSG("==================");
  629.   _MSG("Display Layer Test");
  630.   _MSG("==================");
  631.  
  632.   lstrcpy( docname, "" );
  633.   GetPrivateProfileString("DisplayTest", "8LayerCLF", "", docname, NAMELEN, ".\\dde_test.ini");
  634.  
  635.   UT_GetTmpVersion(docname, tmpdocname);
  636.   ret = IMG_OpenDocWin(ghConv, 0, TYPE_UNKNOWN, tmpdocname, NULL, 0, 0, 0, &docWinID);
  637.   if (!ret) goto cleanup;
  638.  
  639.   ret = IMG_GetLayerIDs(ghConv, docWinID, list, 20, &count);
  640.   if (!ret) goto cleanup;
  641.  
  642.   for (i=0; i<count; i++)
  643.   {
  644.     ret = IMG_GetDisplayLayer(ghConv, docWinID, list[i], &bDisp);
  645.     if (!ret) goto cleanup;
  646.  
  647.     if (bDisp != TRUE)
  648.     {
  649.       _MSG("Loaded layer should be displayed.");
  650.       ret = FALSE;
  651.       goto cleanup;
  652.     } /* if (bDisp != TRUE) */
  653.  
  654.     ret = IMG_SetDisplayLayer(ghConv, docWinID, list[i], FALSE);
  655.     if (!ret) goto cleanup;
  656.  
  657.     UT_Sleep(1);
  658.  
  659.   } /* for (i=0; i<count; i++) */
  660.  
  661.   for (i=0; i<count; i++)
  662.   {
  663.      ret = IMG_GetDisplayLayer(ghConv, docWinID, list[i], &bDisp);
  664.      if (!ret) goto cleanup;
  665.  
  666.      if (bDisp != FALSE)
  667.      {
  668.         _MSG("Loaded layer should NOT be displayed.");
  669.         ret = FALSE;
  670.         goto cleanup;
  671.      } 
  672.  
  673.      ret = IMG_SetDisplayLayer(ghConv, docWinID, list[i], TRUE);
  674.      if (!ret) goto cleanup;
  675.  
  676.      UT_Sleep(1);
  677.  
  678.   } /* for (i=0; i<count; i++) */
  679.  
  680.   /* remove the window */
  681.   ret = IMG_CloseDocWin(ghConv, docWinID, FALSE);
  682.   if (!ret) goto cleanup;
  683.  
  684. cleanup:
  685.   UT_DeleteFile(tmpdocname);
  686.   if (ret) {
  687.     _MSG("..........SUCCESSFUL");
  688.   } else /* if (ret) */
  689.   {
  690.     _MSG("..........FAILED");
  691.   } /* if (ret) */
  692.  
  693.   return (ret);
  694. } /* UT_TestDisplayLayer() */
  695.  
  696. /* ========================================= Parallax C Function ==================
  697.  
  698.    @Name: UT_TestToolSet
  699.    @Desc: 
  700.  
  701. ============================================================================== */
  702.  
  703. int UT_TestToolSet(HCONV ghConv)
  704. {
  705.   int ret = FALSE;
  706.   DOCWINID docWinID;
  707.   LAYERID  layerID;
  708.   char pTmpName[256];
  709.   int tool, maxtoolset;
  710.   int i,j;
  711.   int toolIDs[] = {
  712.         TOOL_NONE       ,
  713.         TOOL_CUT        ,
  714.         TOOL_COPY       ,
  715.      /* TOOL_PASTE      , */
  716.         TOOL_LINE       ,
  717.         TOOL_BOX        ,
  718.         TOOL_CIRCLE     ,
  719.         TOOL_ELLIPSE    ,
  720.         TOOL_ARROW      ,
  721.         TOOL_SKETCH     ,
  722.         TOOL_POLYLINE   ,
  723.         TOOL_POLYGON    ,
  724.         TOOL_TEXT       ,
  725.         TOOL_ANNOTATION ,
  726.         TOOL_DIMENSION  ,
  727.      /* TOOL_SYMBOL     , */
  728.         TOOL_HOTSPOT    ,
  729.         TOOL_RUBOUT     ,
  730.         TOOL_ERASER     ,
  731.         TOOL_SELECT     ,
  732.      /* TOOL_CHANGETEXT , */
  733.      /* TOOL_ARC        , */
  734.      /* TOOL_MOVERESIZE , */
  735.      /* TOOL_ROTATE       */  };
  736.  
  737.   _MSG("=============");
  738.   _MSG("Tool Set Test");
  739.   _MSG("=============");
  740.  
  741.   maxtoolset = sizeof(toolIDs)/sizeof(toolIDs[0]);
  742.  
  743.   /* create blank document */
  744.   UT_GetTmpFileName(pTmpName);
  745.  
  746.   ret = IMG_NewDocument(ghConv, "Tool Test A", pTmpName, &docWinID);
  747.   if (!ret) goto cleanup;
  748.  
  749.   /* get rid of this one */
  750.   ret = IMG_CloseDocWin(ghConv, docWinID, FALSE);
  751.   if (!ret) goto cleanup;
  752.  
  753.   /* create blank document */
  754.   ret = IMG_CreateDocWin(ghConv, "Tool Test B", &docWinID);
  755.   if (!ret) goto cleanup;
  756.  
  757.   /* create edit layer on blank doc */
  758.   ret = IMG_NewLayer(ghConv, docWinID, ETYPE_FULLEDIT, &layerID);
  759.   if (!ret) goto cleanup;
  760.  
  761.   /* make the edit layer active */
  762.   ret = IMG_SetActiveLayer(ghConv, docWinID, layerID, 1);
  763.   if (!ret) goto cleanup;
  764.  
  765.   /* loop through all combinations */
  766.   for (i=1; i<maxtoolset-1; i++)
  767.   {
  768.     _FMTMSG2("===Stage %d of %d.", i+1, maxtoolset-1);
  769.  
  770.     for (j=i; j<maxtoolset; j++)
  771.     {
  772.       ret = IMG_SetTool(ghConv, docWinID, toolIDs[i]);
  773.       if (!ret) goto cleanup;
  774.  
  775.       ret = IMG_GetTool(ghConv, docWinID, &tool);
  776.       if (!ret) goto cleanup;
  777.  
  778.       if (tool != toolIDs[i])
  779.       {
  780.         _MSG("Tool setting failed!!!");
  781.         ret = FALSE;
  782.         goto cleanup;
  783.       } /* if (tool != toolIDs[i]) */
  784.  
  785.       ret = IMG_SetTool(ghConv, docWinID, toolIDs[j]);
  786.       if (!ret) goto cleanup;
  787.  
  788.       ret = IMG_GetTool(ghConv, docWinID, &tool);
  789.       if (!ret) goto cleanup;
  790.  
  791.       if (tool != toolIDs[j])
  792.       {
  793.         ret = FALSE;
  794.         _MSG("Tool setting failed!!!");
  795.         goto cleanup;
  796.       } /* if (tool != toolIDs[j]) */
  797.     } /* for (j=i; j<maxtoolset; j++) */
  798.   } /* for (i=1; i<maxtoolset-1; i++) */
  799.  
  800. cleanup:
  801.   if (ret)
  802.   {
  803.     IMG_CloseDocWin(ghConv, docWinID, FALSE);
  804.     _MSG("..........SUCCESSFUL");
  805.   } else { /* if (ret) */
  806.     _MSG("..........FAILED");
  807.   } /* if (ret) */
  808.  
  809.   return (ret);
  810. } /* UT_TestToolSet() */
  811.  
  812. /* ========================================= Parallax C Function ==================
  813.  
  814.    @Name: UT_TestDeskew
  815.    @Desc: 
  816.  
  817. ============================================================================== */
  818.  
  819. int UT_TestDeskew(HCONV ghConv)
  820. {
  821.   DOCWINID  docWinID;
  822.   int       i;
  823.   int       ret = TRUE;
  824.   int       mod = 10;
  825.   float     start_angle = (float)0.0;
  826.   float     end_angle = (float)90.0;
  827.   float     angle = (float)1.0;
  828.   char      doc[NAMELEN + 1] = "";
  829.   char      sangle[5] = "";
  830.   char      eangle[5] = "";
  831.   char      tangle[5] = "";
  832.   char      ptr[5];
  833.   char      ptr2[5];
  834.   char      ptr3[5];
  835.   char      ptr4[5];
  836.   int       num_iters = 0;
  837.   double    max_angle;
  838.   char      tmpdocname[NAMELEN] = "";
  839.  
  840.  
  841.   IMG_SetShowStatusDialogs(ghConv, 0);
  842.  
  843.   GetPrivateProfileString("DeskewTest", "File", "", doc, NAMELEN, ".\\dde_test.ini");
  844.   GetPrivateProfileString("DeskewTest", "Start Angle", "", sangle, 5, ".\\dde_test.ini");
  845.   GetPrivateProfileString("DeskewTest", "End Angle", "", eangle, 5, ".\\dde_test.ini");
  846.   GetPrivateProfileString("DeskewTest", "Angle", "", tangle, 5, ".\\dde_test.ini");
  847.   mod = GetPrivateProfileInt("DeskewTest", "Keep", 10, ".\\dde_test.ini");
  848.  
  849.   if (lstrlen(sangle)) start_angle = img_ATOF(sangle);
  850.   if (lstrlen(eangle)) end_angle = img_ATOF(eangle);
  851.   if (lstrlen(tangle)) angle = img_ATOF(tangle);
  852.  
  853.   if (lstrlen(doc))
  854.   {
  855.  
  856.      UT_GetTmpVersion(doc, tmpdocname);
  857.  
  858.     ret = IMG_OpenDocWin(ghConv, 0, TYPE_UNKNOWN, tmpdocname, NULL, 0, 0, 0, &docWinID);
  859.     if (!ret) goto cleanup;
  860.  
  861.     gcvt((double)start_angle, 5, ptr);
  862.     gcvt((double)end_angle, 5, ptr2);
  863.     gcvt((double)angle, 5, ptr3);
  864.  
  865.     /* N.B. the following function is ONLY applicable to Eroica 3.6 and */
  866.     /* above */
  867.     ret = IMG_GetDeskewLimit(ghConv, docWinID, 0, &max_angle);
  868.     if (!ret) goto cleanup;
  869.  
  870.     if (!max_angle) max_angle = 2.0;
  871.  
  872.     if (max_angle >= angle)
  873.     {
  874.       _FMTMSG4("Deskewing %s from %s to %s", doc, ptr, ptr2, ptr3);
  875.       num_iters = (int)((end_angle - start_angle) / angle) + 1;
  876.  
  877.       for (i=0; i < num_iters; i++)
  878.       {
  879.         _FMTMSG2("Deskewing %d of %d", i + 1, num_iters);
  880.         ret = IMG_Deskew(ghConv, (HWND)docWinID, angle);
  881.         if (!ret) goto cleanup;
  882.  
  883.         if (i % mod)
  884.         {
  885.           ret = IMG_CloseDocWin(ghConv, docWinID, FALSE);
  886.           if (!ret) goto cleanup;
  887.         } /* if (i % mod) */
  888.  
  889.         ret = IMG_GetDocWin(ghConv, &docWinID);
  890.         if (!ret) goto cleanup;
  891.       } /* for (i=0; i < num_iters; i++) */
  892.  
  893.       if (!GetPrivateProfileInt("DeskewTest", "Keep Last", 0, ".\\dde_test.ini")) {
  894.           IMG_CloseDocWin(ghConv, docWinID, FALSE);
  895.       }
  896.  
  897. /*
  898.       ret = IMG_CloseAllDocWin(ghConv, FALSE);
  899.       if (!ret) goto cleanup;
  900. */
  901.     } else {/* if (max_angle >= angle) */
  902.       gcvt((double)max_angle, 5, ptr4);
  903.       _FMTMSG2("Deskew Angle of %s greater than maximum angle %s.", ptr3, ptr4);
  904.     } /* if (max_angle >= angle) */
  905.   } /* if (lstrlen(doc)) */
  906.  
  907. cleanup:
  908.  
  909.   UT_DeleteFile(tmpdocname);
  910.  
  911.   if (ret)
  912.   {
  913.     _MSG("..........SUCCESSFUL");
  914.   } else /* if (ret) */
  915.   {
  916.     _MSG("..........FAILED");
  917.   } /* if (ret) */
  918.  
  919.   return (ret);
  920. } /* UT_TestDeskew() */
  921.  
  922. /* TESTCASE.C */
  923. /* end of file */
  924.