bool da_exists (Da **dar, int dar_size, Da *dap){
da_exists_closure dec;
- Da *da_first = *dar;
dec.da = dap;
dec.found = false;
da_big_map(dar, dar_size, da_present, &dec);
}
void da_big_map(Da **dar, int dar_size, void f(void *, void *), void *closure){
- Da *pt = *dar;
+ Da **pt = dar;
int i = 0;
while( i < dar_size ){
- f(pt, closure);
+ f(*pt, closure);
pt++;
i++;
}
//∀, AND map
//checks that all Das are present in Da of Das
bool da_all (Da **dar, int dar_size, Da **dap){
- da_exists_closure dec;
- dec.da = *dap;
- dec.found = true;
+ Da **tdar = dap;
+ Da *test_da = *tdar;
+ bool result = true;
int i = 0;
- while(dec.found && (i < dar_size)){
- da_big_map(dar, dar_size, da_present, &dec);
- dec.da++;
+ while(result && (i < dar_size)){
+ result = da_exists(dar, dar_size, test_da);
+ tdar++;
+ test_da = *tdar;
i++;
}
- return dec.found;
+ return result;
}
Da *dap0;
{
da_alloc(dap0, sizeof(char));
- //char a = 'y';
- //da_push(dap0, &a);
+ char a = 'y';
+ da_push(dap0, &a);
}
Da *dap1;
{
da_alloc(dap1, sizeof(char));
- //char a = 'u';
- //da_push(dap1, &a);
+ char a = 'u';
+ da_push(dap1, &a);
}
Da *dap2;
{
da_alloc(dap2, sizeof(char));
- //char a = 'n';
- //da_push(dap2, &a);
+ char a = 'n';
+ da_push(dap2, &a);
}
- void *darr[3];
+ Da *darr[3];
int dar_size = 0;
//add dap0, dap1 to darr
//test that dap0 and dap1 exist in darr but not dap2
- bool f1 = da_exists((Da **)darr, dar_size, dap0);
- bool f2 = da_exists((Da **)darr, dar_size, dap1);
- bool f3 = !da_exists((Da **)darr, dar_size, dap2);
+ bool f1 = da_exists(darr, dar_size, dap0);
+ bool f2 = da_exists(darr, dar_size, dap1);
+ bool f3 = !da_exists(darr, dar_size, dap2);
//add dap2 to darr
darr[dar_size] = dap2; dar_size++;
//tests da_all
bool test_da_all_0(){
- return true;
-}
+ Da *dap0;
+ {
+ da_alloc(dap0, sizeof(char));
+ char a = 'y';
+ da_push(dap0, &a);
+ }
+ Da *dap1;
+ {
+ da_alloc(dap1, sizeof(char));
+ char a = 'u';
+ da_push(dap1, &a);
+ }
+
+ Da *dap2;
+ {
+ da_alloc(dap2, sizeof(char));
+ char a = 'n';
+ da_push(dap2, &a);
+ }
+
+ Da **darr0 = malloc(3 * sizeof(Da *));
+ int dar_size0 = 0;
+
+ //add dap0, dap1 to darr0 (array being tested)
+ darr0[dar_size0] = dap0; dar_size0++;
+ darr0[dar_size0] = dap1; dar_size0++;
+ darr0[dar_size0] = dap0;
+ //has to have same amount of elements as test array or will core dump
+
+
+ Da **darr1 = malloc(3 * sizeof(Da *));
+ int dar_size1 = 0;
+ //add dap0,1,2 to darr1 (test array, to test against)
+ darr1[dar_size1] = dap0; dar_size1++;
+ darr1[dar_size1] = dap1; dar_size1++;
+ darr1[dar_size1] = dap2; dar_size1++;
+
+ //tests that darr0 doesn't have all (dap0,1,2)
+ bool f1 = !da_all(darr0, dar_size1, darr1);
+
+ //add dap2 to darr0
+ darr0[dar_size0] = dap2; dar_size0++;
+
+ //tests that darr0 has all (dap0,1,2)
+ bool f2 = da_all(darr0, dar_size1, darr1);
+
+ return f1 && f2;
+}
+
/*
Functions