int main(int argc, char * argv[]) {
    bool pass = true;

    {
        int a[] = {};
        int b[] = {};
        std::vector<int> A = vec_transform(a, sizeof(a) / sizeof(int));
        std::vector<int> B = vec_transform(b, sizeof(b) / sizeof(int));
        int s = merge_sorted_arrays(A, 0, B);
        int r[] = {};
        pass = pass && vec_compare(A, r, sizeof(r) / sizeof(int));
    }

    {
        int a[] = { 1, 3, 5, 0, 0, 0, 0, 0 };
        int b[] = { 2, 4, 6, 8, 10 };
        std::vector<int> A = vec_transform(a, sizeof(a) / sizeof(int));
        std::vector<int> B = vec_transform(b, sizeof(b) / sizeof(int));
        int s = merge_sorted_arrays(A, 3, B);
        int r[] = {1, 2, 3, 4, 5, 6, 8, 10 };
        pass = pass && vec_compare(A, r, sizeof(r) / sizeof(int));
    }

    {
        int a[] = { 1, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0 };  // More buffer than required
        int b[] = { 2, 4, 6, 8, 10 };
        std::vector<int> A = vec_transform(a, sizeof(a) / sizeof(int));
        std::vector<int> B = vec_transform(b, sizeof(b) / sizeof(int));
        int s = merge_sorted_arrays(A, 3, B);
        int r[] = {1, 2, 3, 4, 5, 6, 8, 10, 0, 0, 0 };
        pass = pass && vec_compare(A, r, sizeof(r) / sizeof(int));
    }

    return (pass ? 0 : -1);
}
int main(){
   int list2[4] = {2,7,8,12};
   int list1[3] = {-1, 0, 10};
   int *lptr1 = list1, *lptr2 = list2;
   int *newlistptr = merge_sorted_arrays(lptr1, sizeof list1/sizeof *lptr1, lptr2, sizeof list2/sizeof *lptr2) ;
   
   printf("\n The new array after merging the two arrays is ...\n") ;

   for(long unsigned int i=0; i< ((sizeof list1/sizeof *lptr1)  + (sizeof list2/sizeof *lptr2) ); i++) {
   
      printf("%d ", *(newlistptr+i)) ;
   }
   return 0; 
}