static TM_CALLABLE long TMcompareReservationInfo (TM_ARGDECL const void* aPtr, const void* bPtr) { long r; TM_BEGIN_WAIVER(); r = reservation_info_compare((reservation_info_t*)aPtr, (reservation_info_t*)bPtr); TM_END_WAIVER(); return r; }
int main () { reservation_info_t* reservationInfo1Ptr; reservation_info_t* reservationInfo2Ptr; reservation_info_t* reservationInfo3Ptr; reservation_t* reservation1Ptr; reservation_t* reservation2Ptr; reservation_t* reservation3Ptr; assert(memory_init(1, 4, 2)); puts("Starting..."); reservationInfo1Ptr = reservation_info_alloc(0, 0, 0); reservationInfo2Ptr = reservation_info_alloc(0, 0, 1); reservationInfo3Ptr = reservation_info_alloc(2, 0, 1); /* Test compare */ assert(reservation_info_compare(reservationInfo1Ptr, reservationInfo2Ptr) == 0); assert(reservation_info_compare(reservationInfo1Ptr, reservationInfo3Ptr) > 0); assert(reservation_info_compare(reservationInfo2Ptr, reservationInfo3Ptr) > 0); reservation1Ptr = reservation_alloc(0, 0, 0); reservation2Ptr = reservation_alloc(0, 0, 1); reservation3Ptr = reservation_alloc(2, 0, 1); /* Test compare */ assert(reservation_compare(reservation1Ptr, reservation2Ptr) == 0); assert(reservation_compare(reservation1Ptr, reservation3Ptr) != 0); assert(reservation_compare(reservation2Ptr, reservation3Ptr) != 0); /* Cannot reserve if total is 0 */ assert(!reservation_make(reservation1Ptr)); /* Cannot cancel if used is 0 */ assert(!reservation_cancel(reservation1Ptr)); /* Cannot update with negative price */ assert(!reservation_updatePrice(reservation1Ptr, -1)); /* Cannot make negative total */ assert(!reservation_addToTotal(reservation1Ptr, -1)); /* Update total and price */ assert(reservation_addToTotal(reservation1Ptr, 1)); assert(reservation_updatePrice(reservation1Ptr, 1)); assert(reservation1Ptr->numUsed == 0); assert(reservation1Ptr->numFree == 1); assert(reservation1Ptr->numTotal == 1); assert(reservation1Ptr->price == 1); checkReservation(reservation1Ptr); /* Make and cancel reservation */ assert(reservation_make(reservation1Ptr)); assert(reservation_cancel(reservation1Ptr)); assert(!reservation_cancel(reservation1Ptr)); reservation_info_free(reservationInfo1Ptr); reservation_info_free(reservationInfo2Ptr); reservation_info_free(reservationInfo3Ptr); reservation_free(reservation1Ptr); reservation_free(reservation2Ptr); reservation_free(reservation3Ptr); puts("All tests passed."); return 0; }
/* ============================================================================= * compareReservationInfo * ============================================================================= */ static long compareReservationInfo (const void* aPtr, const void* bPtr) { return reservation_info_compare((reservation_info_t*)aPtr, (reservation_info_t*)bPtr); }