drive.c

drive.c

/* Part of a driver used to test dbase  */
 
/* Include those modules that export things that are used explicitly here */
 
#include <stdio.h>
#include "bool.h"
#include "employee.h"
#include "empset.h"
#include "dbase.h"
 
int main(int argc, char *argv[]) {
 
  employee e;
  empset em1, em2, em3;
  char na[10000];
  char * sprintResult;
  int i, j;
  db_q q;
 
/* Initialize all of the LCL-specified modules that were included */
  bool_initMod();
  employee_initMod();
  empset_initMod();
  db_initMod();
 
  if (argc != 1) {
     printf("FormatPos: Wrong number of arguments. Given %d needs 0.\n",
            argc - 1);
      return 1;
   }
 
/* Unit test empset */
   em1 = empset_create( );
   if (!(empset_size(em1) == 0)) printf("Size should be 0.\n");
   for (i = 0; i < 500; i++) {
     e.ssNum = i;
     e.salary = 100000;
     e.gen = MALE;
     e.j = MGR;
     (void) sprintf(na, "S.S. Doe %d", i);
     employee_setName(&e, na);
     empset_insert(em1, e);
     }
   if (!(empset_size(em1) == 500)) printf("Size should be 500.\n");
   for (i = 0; i < 250; i++) {
     e.ssNum = i;
     e.salary = 100000;
     e.gen = MALE;
     e.j = MGR;
     (void) sprintf(na, "S.S. Doe %d", i);
     employee_setName(&e, na);
     empset_delete(em1, e);
     }
   if (!(empset_size(em1) == 250)) printf("Size should be 250.\n");
   em2 = empset_create();
   for (i = 0; i < 100; i++) {
     e.ssNum = i;
     e.salary = 100000;
     e.gen = MALE;
     e.j = MGR;
     (void) sprintf(na, "S.S. Doe %d", i);
     employee_setName(&e, na);
     empset_insert(em2, e);
     }
   em3 = empset_union(em1, em2);
   if (!(empset_size(em3) == 350)) printf("Size should be 350.\n");
   empset_intersect(em3, em3);
   if (!(empset_size(em3) == 350)) printf("Size should be 350.\n");
   printf("Print two different employees:\n");
   for (i = 0; i < 2; i++) {
     e = empset_choose(em3);
     employee_sprint(na, e);
     printf("%s\n", &(na[0]));
     empset_delete(em3, e);
   }
 
 
  
  /* Test dbase  */
   for (i = 0; i < 20; i++) {
     e.ssNum = i;
     e.salary = 10 * i;
     if (i < 10) e.gen = MALE; else e.gen = FEMALE;
     if (i < 15) e.j = NONMGR; else e.j = MGR;
     (void) sprintf(na, "J. Doe %d", i);
     employee_setName(&e, na);
     if ( (i/2)*2 == i) hire(e);
        else {uncheckedHire(e); j = hire(e);}
     }
   printf("Should print 4: %d\n", j); 
   printf("Employees 0 - 19\n");
   db_print();
   fire(17);
   q.g = FEMALE; q.j = job_ANY; q.l = 158; q.h = 185;
   printf("Employees 0 - 16, 18 - 19\n");
   db_print();
   i = query(q, em1 = empset_create());
   sprintResult = empset_sprint(em1);
   printf("Should get two females: %d\n%s\n", i, sprintResult);
   free(sprintResult);
   q.g = MALE; q.j = NONMGR; q.l = 0; q.h = 185;
   i = query(q, em2 = empset_create());
   em3 = empset_disjointUnion(em2, em1);
   sprintResult = empset_sprint(em3);
   i = empset_size(em3);
   printf("Should get two females and ten males: %d\n%s\n", i, sprintResult);
   free(sprintResult);
   empset_intersect(em1, em3);
   sprintResult = empset_sprint(em1);
   i = empset_size(em1);
   printf("Should get two females: %d\n%s\n", i, sprintResult);
   free(sprintResult); 
   fire(empset_choose(em3).ssNum);
   printf("Should get 18 employees\n");
   db_print();
   return 0;
}

Return LCLint Home Page David Evans
University of Virginia, Computer Science
evans@cs.virginia.edu