diff options
Diffstat (limited to 'lib/libmytinfo/TESTS/ttest.c')
-rw-r--r-- | lib/libmytinfo/TESTS/ttest.c | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/lib/libmytinfo/TESTS/ttest.c b/lib/libmytinfo/TESTS/ttest.c new file mode 100644 index 0000000..d6cc36e --- /dev/null +++ b/lib/libmytinfo/TESTS/ttest.c @@ -0,0 +1,297 @@ +/* + * ttest.c + * + * By Ross Ridge + * Public Domain + * 92/02/01 07:30:47 + * + */ + +#define NOTLIB +#include "defs.h" +#include <term.h> + +const char SCCSid[] = "@(#) mytinfo ttest.c 3.2 92/02/01 public domain, By Ross Ridge"; + +int +cup(x,y) +int x, y; { + if (columns < 2 || lines < 2) + return -1; + if (cursor_address != NULL) + putp(tparm(cursor_address, y, x)); + else if (cursor_home != NULL && cursor_down != NULL + && cursor_right != NULL) { + putp(cursor_home); + if (parm_down_cursor != NULL) + putp(tparm(parm_down_cursor, y)); + else + for(; y > 0; y--) + putp(cursor_down); + if (parm_right_cursor != NULL) + putp(tparm(parm_right_cursor, y)); + else + for(; y > 0; y--) + putp(cursor_right); + } else if (cursor_to_ll != NULL && cursor_up != NULL + && cursor_right != NULL) { + putp(cursor_to_ll); + if (parm_up_cursor != NULL) + putp(tparm(parm_up_cursor, y)); + else + for(y++; y < columns ; y++) + putp(cursor_up); + if (parm_right_cursor != NULL) + putp(tparm(parm_right_cursor, y)); + else + for(; y > 0; y--) + putp(cursor_right); + } else + return 1; + return 0; +} + +int +clear() { + int r; + if (clear_screen != NULL) + putp(clear_screen); + else if (clr_eos != NULL) { + r = cup(0,0); + if (r != 0) + return r; + putp(clr_eos); + } else + return -2; + return 0; +} + +void +nl() { + if (newline != NULL) + putp(newline); + else if (carriage_return != NULL && cursor_down != NULL) { + putp(cursor_down); + putp(carriage_return); + } else + quit(-1, "can't do a newline"); + return; +} + +void +putln(s) +char *s; { + int i; + + if (columns < 2 || auto_right_margin) + fputs(s, stdout); + else { + i = 0; + while(*s) { + putchar(*s); + s++; + if (++i == columns) { + nl(); + i = 0; + } + } + } + nl(); +} + +void +anykey() { + fputs("-- press any key --", stdout); + fflush(stdout); + getchar(); + nl(); +} + +void +do_cleanup(e) +int e; { + fflush(stdout); + fflush(stderr); + reset_shell_mode(); + fprintf(stderr, "\n"); +} + +#ifdef USE_SGTTY +struct sgttyb new_tty; +#else +#ifdef USE_TERMIO +struct termio new_tty; +#else +struct termios new_tty; +#endif +#endif + +int +main(argc, argv) +int argc; +char **argv; { + register int i; + + prg_name = argv[0]; + cleanup = do_cleanup; + + if (argc == 1) + setupterm(NULL, 1, (int *) 0); + else if (argc == 2) + setupterm(argv[1], 1, (int *) 0); + else { + fprintf(stderr, "usage: %s [terminal]\n", argv[0]); + return 1; + } + fflush(stderr); + fflush(stdout); +#ifdef USE_SGTTY + ioctl(1, TIOCGETP, &new_tty); + new_tty.sg_flags &= ~(CRMOD | ECHO | XTABS); +#ifdef CBREAK + new_tty.sg_flags |= CBREAK; +#else + new_tty.sg_flags |= RAW; +#endif + ioctl(1, TIOCSETP, &new_tty); +#endif +#ifdef USE_TERMIO + ioctl(1, TCGETA, &new_tty); +#else +#ifdef USE_TERMIOS + tcgetattr(1, &new_tty); +#endif +#endif +#if defined(USE_TERMIO) || defined(USE_TERMIOS) + new_tty.c_lflag &= ~(ICANON | ECHO); + new_tty.c_oflag &= ~(OPOST); + new_tty.c_cc[VMIN] = 1; + new_tty.c_cc[VTIME] = 1; +#endif +#ifdef USE_TERMIO + ioctl(1, TCSETA, &new_tty); +#else +#ifdef USE_TERMIOS + tcsetattr(1, TCSADRAIN, &new_tty); +#endif +#endif + def_prog_mode(); + + clear(); + printf("columns = %d", columns); + nl(); + printf("lines = %d", lines); + if (columns < 2) + quit(-1, "columns must be > 1"); + nl(); + anykey(); + nl(); + if (auto_right_margin) { + putln("auto_right_margin = TRUE"); + nl(); + for(i = 0; i < columns; i++) + putchar('1'); + for(i = 0; i < columns / 2; i++) + putchar('2'); + nl(); + } else { + putln("auto_right_margin = FALSE"); + nl(); + for(i = 0; i < columns + columns / 2; i++) + putchar('1'); + nl(); + for(i = 0; i < columns / 2; i++) + putchar('2'); + nl(); + } + nl(); + putln("***a line of 1's followed by a line of 2's"); + nl(); + anykey(); + nl(); + + if (over_strike) { + putln("over_strike = TRUE"); + if (cursor_left != NULL) { + for(i = 0; i < columns / 4 + 1; i++) { + putchar('/'); + putp(cursor_left); + putchar('\\'); + } + } else if (carriage_return != NULL) { + for(i = 0; i < columns / 4 + 1; i++) + putchar('/'); + putp(carriage_return); + for(i = 0; i < columns / 4 + 1; i++) + putchar('\\'); + } + nl(); + nl(); + putln("*** X's made from \\'s overstriking /'s"); + nl(); + anykey(); + nl(); + } + + if (cup(0,0) == 0) { + clear(); + putln("cup test"); + for(i = 1; i < columns; i++) + putp(tparm(cursor_address, 0, i)); + for(i = 0; i < lines; i++) + putp(tparm(cursor_address, i, columns - 1)); + for(i = columns; i--;) + putp(tparm(cursor_address, lines - 1, i)); + for(i = lines; i--;) + putp(tparm(cursor_address, i, 0)); + nl(); + anykey(); + } + clear(); + + putln("Attribute test"); + nl(); + if (enter_blink_mode != NULL) { + putp(enter_blink_mode); + printf("blink"); + putp(exit_attribute_mode); + nl(); + } + if (enter_bold_mode != NULL) { + putp(enter_bold_mode); + printf("bold"); + putp(exit_attribute_mode); + nl(); + } + if (enter_dim_mode != NULL) { + putp(enter_dim_mode); + printf("dim"); + putp(exit_attribute_mode); + nl(); + } + if (enter_reverse_mode != NULL) { + putp(enter_reverse_mode); + printf("reverse"); + putp(exit_attribute_mode); + nl(); + } + if (enter_standout_mode != NULL) { + putp(enter_standout_mode); + printf("standout"); + putp(exit_standout_mode); + nl(); + } + if (enter_underline_mode != NULL) { + putp(enter_underline_mode); + printf("underline"); + putp(exit_underline_mode); + nl(); + } + nl(); + anykey(); + + clear(); + reset_shell_mode(); + + return (0); +} |