ae8992b58b31e9738db1b734cf08129f5b43c905
[oweals/cde.git] / cde / programs / dtterm / tests / tabctrl / tabctrl.c
1 /* $XConsortium: tabctrl.c /main/3 1995/10/31 12:02:15 rswiston $ */
2 #include <stdio.h>
3 #include  "synvar.h"
4
5 #ifdef LOG
6 FILE *TermLog;
7 #define SAVELOG  fclose(TermLog); TermLog = fopen("term.log", "a");
8 #endif
9
10 char LogStr[200];
11
12
13 #define  BELL             007
14 #define  BACKSPACE        010
15 #define  HORI_TAB         011
16 #define  NEWLINE          012
17 #define  VERTI_TAB        013
18 #define  NEWPAGE          014
19 #define  CARRI_RET        015
20
21
22
23 void TestTabCtrl(WinName)
24 char *WinName;
25 {
26   int i,j,k, l, Lines, Cols, TabSpace, TabCount;
27   char Str[IMAGE_FILE_LEN];
28
29     START(1, 0, 0, 0, 0);
30     TabSpace = 5; /* how to take parameter */
31     if (CheckTermStatus() == -1)
32        {printf("terminal emulator malfunctioning\n"); exit(-1);}
33     ClearScreen(); 
34     GetWinSize(&Lines, &Cols); 
35 #ifdef DEBUG
36 fprintf(TermLog, "WINDOW Size Cols: %d Lines: %d \n", Cols, Lines);
37 SAVELOG;
38 #endif
39     ClearAllTabs(); 
40     HomeUp(); 
41     SetTab(); 
42     TabCount = (Cols / TabSpace);
43     if ((Cols % TabSpace) == 0) TabCount -= 1;
44     for (i=0; i < TabCount; i++)
45       {CursorForward(TabSpace); SetTab();}
46     HomeUp();
47     for (k=0; k < Lines; k++) {
48        for (j=0; j < TabCount; j++) {
49          sprintf(Str, "*%c", HORI_TAB); WRITETEST(Str); 
50 #ifdef SLOW
51 sleep(1);
52 #endif
53          for (l=0; l < TabSpace-1; l++) {
54            sprintf(Str, "%c", BACKSPACE); WRITETEST(Str);
55 #ifdef SLOW
56 sleep(1);
57 #endif
58          } 
59          for (l=0; l < TabSpace-1; l++) 
60            {sprintf(Str, "-");WRITETEST(Str);} 
61        }
62        sprintf(Str, "*");WRITETEST(Str); 
63        for (l=0; l < ((Cols-1) % TabSpace); l++) 
64          {sprintf(Str, "-"); WRITETEST(Str);} 
65        if (k < (Lines -1))  {
66           switch ((k % 3)) {
67             case 0: sprintf(Str, "%c", NEWLINE); WRITETEST(Str); break;
68             case 1: sprintf(Str, "%c%c", CARRI_RET, VERTI_TAB); WRITETEST(Str);
69                     break;
70             case 2: sprintf(Str, "%c%c", CARRI_RET, NEWPAGE); WRITETEST(Str);
71                     break;
72           }
73        }
74     }
75 #ifdef SYNLIB
76     sprintf(Str, "%stabctrl1", IMAGE_DIR);
77     MatchWindows(WinName, Str);
78 #endif
79     HomeUp();
80     for (j=0; j < TabCount; j++) 
81       {sprintf(Str, "%c", HORI_TAB); WRITETEST(Str); ClearCurTab();}
82     HomeUp(); ClearScreen();
83     for (k=0; k < Lines; k++) {
84       sprintf(Str, "*%c", HORI_TAB); WRITETEST(Str);
85       sprintf(Str, "%c", NEWLINE); WRITETEST(Str); 
86     }
87 #ifdef SYNLIB
88     sprintf(Str, "%stabctrl2", IMAGE_DIR);
89     MatchWindows(WinName, Str);
90 #endif
91     HomeUp(); TabSpace = 8;
92     TabCount = (Cols / TabSpace);
93     if ((Cols % TabSpace) == 0) TabCount -= 1;
94     for (i=0; i < TabCount; i++)
95       {CursorForward(TabSpace); SetTab();}
96     DONE();
97 }
98
99
100 main(argc, argv)
101 int argc;
102 char *argv[];
103 {
104      
105 #ifdef LOG
106 if ((TermLog = fopen("term.log", "a")) == NULL) {
107    if ((TermLog = fopen("term.log", "w")) == NULL)
108       {printf("Logfile could not be opened \n"); exit(-1);}
109 }
110 fprintf(TermLog, "**************************************************\n");
111 LogTime();
112 fprintf(TermLog, "TestName: <%s> STARTS\n", argv[0]);
113 #endif 
114 #ifdef SYNLIB
115      InitTest(argc, argv);
116      AssignWinName("TermWin", TERM_EMU);
117 #endif
118      TestTabCtrl("TermWin");
119 #ifdef SYNLIB
120      CloseTest(False);
121 #endif
122 #ifdef LOG
123 fprintf(TermLog, "TestName: <%s> ENDS\n", argv[0]);
124 fclose(TermLog);
125 #endif
126 }
127