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