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;
}
David Evans
University of Virginia, Computer Science
evans@cs.virginia.edu