rendered paste body/// this program generates test data for assn3
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <limits.h>
#define ROUNDS 1005
#define TESTS 100000
#define DRAWDECK 'd'
#define DRAWTABLE 't'
#define CLAIM 'c'
#define PASSENGER 'p'
#define NOTHING 'n'
#define VIEWHAND 'H'
#define VIEWTTOKENS 'T'
#define VIEWSCORE 'S'
#define VIEWGAMEBOARD 'M'
#define VIEWLOCATIONS 'L'
#define VIEWTABLECARDS 'C'
#define VIEWPASSENGER 'P'
#define PRINTHELP '?'
#define QUIT 'q'
#define CARDS_ON_TABLE 5
#define NUMBER_OF_LOCATIONS 40
#define NUMBER_OF_COLOURS 9
#define NEXTTURN "H\nT\nS\nM\nL\nC\nP\n?\n"
#define TESTFILE "gentest.in"
#define rnd(X) (int)(1.0 * random() / RAND_MAX * (X-1))
void bm(FILE *);
int main(int argc, char** argv){
int test;
int round;
int op;
int cards=0;
int cardCount=0;
FILE * fpt;
// FILE * fps;
// FILE * fpa;
srand(time(NULL));
printf("\n\n");
for(test=1; test < TESTS; test++){
fpt = fopen("gensample.out", "w");
cardCount=0;
system("clear");
printf("\nTest :%d/%d\n", test, TESTS);
for(round=1;round<ROUNDS;round++){
//draw cards
for(cards=0; cards < 2; cards++){
bm(fpt);
op = rnd(3);
if (cardCount<94){//94 fails!!! test this
if(op==1){
fprintf(fpt, "%c\n",DRAWDECK);
}else{
if (op==0){
op=rnd(CARDS_ON_TABLE);
fprintf(fpt, "%c %d\n", DRAWTABLE, op);
}
}
}
cardCount++;
}
bm(fpt);
//perform move
op=rnd(3);
if(op==1){
//claim connection
fprintf(fpt, "%c %d %d %d\n", CLAIM, rnd(NUMBER_OF_LOCATIONS),rnd(NUMBER_OF_LOCATIONS),rnd(NUMBER_OF_COLOURS));
}else{
//passenger move
op=rnd(NUMBER_OF_LOCATIONS);
fprintf(fpt, "%c %d\n",PASSENGER, op);
}
bm(fpt);
}
fprintf(fpt, "q\n");
fclose(fpt);
system("./assn3 1000 1 < gensample.out > assn3sample.out");
system("./main 1000 1 < gensample.out > mainsample.out");
if(system("diff mainsample.out assn3sample.out")){
printf("FAILED!!");
return(1);
}
}
return 0;
}
void bm(FILE * fp){ //between move
fprintf(fp, "%s", NEXTTURN);
}