OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [expect/] [example/] [chesslib2.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/* testlib.c - test expectlib */
2
 
3
#include <stdio.h>
4
#include "expect.h"
5
 
6
timedout()
7
{
8
        fprintf(stderr,"timed out\n");
9
        exit(-1);
10
}
11
 
12
char move[100];
13
 
14
read_first_move(fp)
15
FILE *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
 
27
read_counter_move(fp)
28
FILE *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
 
38
read_move(fp)
39
FILE *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
 
49
send_move(fp)
50
FILE *fp;
51
{
52
        fprintf(fp,move);
53
}
54
 
55
main(){
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
                printf("exp_popen failed\n");
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
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.