test-getters-setters.c 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "uv.h"
  2. #include "task.h"
  3. #include <string.h>
  4. #include <sys/stat.h>
  5. int cookie1;
  6. int cookie2;
  7. int cookie3;
  8. TEST_IMPL(handle_type_name) {
  9. ASSERT(strcmp(uv_handle_type_name(UV_NAMED_PIPE), "pipe") == 0);
  10. ASSERT(strcmp(uv_handle_type_name(UV_UDP), "udp") == 0);
  11. ASSERT(strcmp(uv_handle_type_name(UV_FILE), "file") == 0);
  12. ASSERT(uv_handle_type_name(UV_HANDLE_TYPE_MAX) == NULL);
  13. ASSERT(uv_handle_type_name(UV_HANDLE_TYPE_MAX + 1) == NULL);
  14. ASSERT(uv_handle_type_name(UV_UNKNOWN_HANDLE) == NULL);
  15. return 0;
  16. }
  17. TEST_IMPL(req_type_name) {
  18. ASSERT(strcmp(uv_req_type_name(UV_REQ), "req") == 0);
  19. ASSERT(strcmp(uv_req_type_name(UV_UDP_SEND), "udp_send") == 0);
  20. ASSERT(strcmp(uv_req_type_name(UV_WORK), "work") == 0);
  21. ASSERT(uv_req_type_name(UV_REQ_TYPE_MAX) == NULL);
  22. ASSERT(uv_req_type_name(UV_REQ_TYPE_MAX + 1) == NULL);
  23. ASSERT(uv_req_type_name(UV_UNKNOWN_REQ) == NULL);
  24. return 0;
  25. }
  26. TEST_IMPL(getters_setters) {
  27. uv_loop_t* loop;
  28. uv_pipe_t* pipe;
  29. uv_fs_t* fs;
  30. int r;
  31. loop = malloc(uv_loop_size());
  32. ASSERT(loop != NULL);
  33. r = uv_loop_init(loop);
  34. ASSERT(r == 0);
  35. uv_loop_set_data(loop, &cookie1);
  36. ASSERT(loop->data == &cookie1);
  37. ASSERT(uv_loop_get_data(loop) == &cookie1);
  38. pipe = malloc(uv_handle_size(UV_NAMED_PIPE));
  39. r = uv_pipe_init(loop, pipe, 0);
  40. ASSERT(uv_handle_get_type((uv_handle_t*)pipe) == UV_NAMED_PIPE);
  41. ASSERT(uv_handle_get_loop((uv_handle_t*)pipe) == loop);
  42. pipe->data = &cookie2;
  43. ASSERT(uv_handle_get_data((uv_handle_t*)pipe) == &cookie2);
  44. uv_handle_set_data((uv_handle_t*)pipe, &cookie1);
  45. ASSERT(uv_handle_get_data((uv_handle_t*)pipe) == &cookie1);
  46. ASSERT(pipe->data == &cookie1);
  47. ASSERT(uv_stream_get_write_queue_size((uv_stream_t*)pipe) == 0);
  48. pipe->write_queue_size++;
  49. ASSERT(uv_stream_get_write_queue_size((uv_stream_t*)pipe) == 1);
  50. pipe->write_queue_size--;
  51. uv_close((uv_handle_t*)pipe, NULL);
  52. r = uv_run(loop, UV_RUN_DEFAULT);
  53. ASSERT(r == 0);
  54. fs = malloc(uv_req_size(UV_FS));
  55. uv_fs_stat(loop, fs, ".", NULL);
  56. r = uv_run(loop, UV_RUN_DEFAULT);
  57. ASSERT(r == 0);
  58. ASSERT(uv_fs_get_type(fs) == UV_FS_STAT);
  59. ASSERT(uv_fs_get_result(fs) == 0);
  60. ASSERT(uv_fs_get_ptr(fs) == uv_fs_get_statbuf(fs));
  61. ASSERT(uv_fs_get_statbuf(fs)->st_mode & S_IFDIR);
  62. ASSERT(strcmp(uv_fs_get_path(fs), ".") == 0);
  63. uv_fs_req_cleanup(fs);
  64. r = uv_loop_close(loop);
  65. ASSERT(r == 0);
  66. free(pipe);
  67. free(fs);
  68. free(loop);
  69. return 0;
  70. }