test_open.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <zip.h>
  4. #include "minunit.h"
  5. #if defined(_WIN32) || defined(_WIN64)
  6. #define MKTEMP _mktemp
  7. #else
  8. #define MKTEMP mkstemp
  9. #endif
  10. static char ZIPNAME[L_tmpnam + 1] = {0};
  11. void test_setup(void) {
  12. strncpy(ZIPNAME, "z-XXXXXX\0", L_tmpnam);
  13. MKTEMP(ZIPNAME);
  14. }
  15. void test_teardown(void) { remove(ZIPNAME); }
  16. MU_TEST(test_openwitherror) {
  17. int errnum;
  18. struct zip_t *zip =
  19. zip_openwitherror(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'r', &errnum);
  20. mu_check(zip == NULL);
  21. mu_assert_int_eq(ZIP_ERINIT, errnum);
  22. zip = zip_openwitherror(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w', &errnum);
  23. mu_check(zip != NULL);
  24. mu_assert_int_eq(0, errnum);
  25. zip_close(zip);
  26. }
  27. MU_TEST(test_stream_openwitherror) {
  28. int errnum;
  29. struct zip_t *zip = zip_stream_openwitherror(
  30. NULL, 0, ZIP_DEFAULT_COMPRESSION_LEVEL, 'r', &errnum);
  31. mu_check(zip == NULL);
  32. mu_assert_int_eq(ZIP_EINVMODE, errnum);
  33. zip = zip_stream_openwitherror(NULL, 0, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w',
  34. &errnum);
  35. mu_check(zip != NULL);
  36. mu_assert_int_eq(0, errnum);
  37. zip_stream_close(zip);
  38. }
  39. MU_TEST_SUITE(test_entry_suite) {
  40. MU_SUITE_CONFIGURE(&test_setup, &test_teardown);
  41. MU_RUN_TEST(test_openwitherror);
  42. MU_RUN_TEST(test_stream_openwitherror);
  43. }
  44. #define UNUSED(x) (void)x
  45. int main(int argc, char *argv[]) {
  46. UNUSED(argc);
  47. UNUSED(argv);
  48. MU_RUN_SUITE(test_entry_suite);
  49. MU_REPORT();
  50. return MU_EXIT_CODE;
  51. }