1/* testlib.c - test expectlib */ 2 3#include <stdio.h> 4#include "expect.h" 5 6timedout() 7{ 8 fprintf(stderr,"timed out\n"); 9 exit(-1); 10} 11 12char move[100]; 13 14read_first_move(fp) 15FILE *fp; 16{ 17 if (EXP_TIMEOUT == exp_fexpectl(fp, 18 exp_glob,"first\r\n1.*\r\n",0, 19 exp_end)) { 20 timedout(); 21 } 22 sscanf(exp_match,"%*s 1. %s",move); 23} 24 25/* moves and counter-moves are printed out in different formats, sigh... */ 26 27read_counter_move(fp) 28FILE *fp; 29{ 30 switch (exp_fexpectl(fp,exp_glob,"*...*\r\n",0, exp_end)) { 31 case EXP_TIMEOUT: timedout(); 32 case EXP_EOF: exit(-1); 33 } 34 35 sscanf(exp_match,"%*s %*s %*s %*s ... %s",move); 36} 37 38read_move(fp) 39FILE *fp; 40{ 41 switch (exp_fexpectl(fp,exp_glob,"*...*\r\n*.*\r\n",0,exp_end)) { 42 case EXP_TIMEOUT: timedout(); 43 case EXP_EOF: exit(-1); 44 } 45 46 sscanf(exp_match,"%*s %*s ... %*s %*s %s",move); 47} 48 49send_move(fp) 50FILE *fp; 51{ 52 fprintf(fp,move); 53} 54 55main(){ 56 FILE *fp1, *fp2; 57 int ec; 58 59/* exp_is_debugging = 1;*/ 60 exp_loguser = 1; 61 exp_timeout = 3600; 62 63 if (0 == (fp1 = exp_popen("chess"))) { 64 perror("chess"); 65 exit(-1); 66 } 67 68 if (0 > exp_fexpectl(fp1,exp_glob,"Chess\r\n",0,exp_end)) exit(-1); 69 fprintf(fp1,"first\r"); 70 71 read_first_move(fp1); 72 73 fp2 = exp_popen("chess"); 74 75 exp_fexpectl(fp2,exp_glob,"Chess\r\n",0,exp_end); 76 77 for (;;) { 78 send_move(fp2); 79 read_counter_move(fp2); 80 81 send_move(fp1); 82 read_move(fp1); 83 } 84} 85