All pastes #757575 Raw Edit

Stuff

public text v1 · immutable
·published 2007-11-01 13:30 UTC
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);
}