obs-x264-test.c 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <opts-parser.h>
  5. #define CHECK(condition) \
  6. do { \
  7. if (!(condition)) { \
  8. fprintf(stderr, "%s:%d: error: check failed: %s\n", \
  9. __FILE__, __LINE__, #condition); \
  10. exit(1); \
  11. } \
  12. } while (0)
  13. static void test_obs_parse_options()
  14. {
  15. struct obs_options options;
  16. options = obs_parse_options(NULL);
  17. CHECK(options.count == 0);
  18. CHECK(options.ignored_word_count == 0);
  19. obs_free_options(options);
  20. options = obs_parse_options("");
  21. CHECK(options.count == 0);
  22. CHECK(options.ignored_word_count == 0);
  23. obs_free_options(options);
  24. options = obs_parse_options("ref=3");
  25. CHECK(options.count == 1);
  26. CHECK(strcmp(options.options[0].name, "ref") == 0);
  27. CHECK(strcmp(options.options[0].value, "3") == 0);
  28. CHECK(options.ignored_word_count == 0);
  29. obs_free_options(options);
  30. options = obs_parse_options("ref=3 bframes=8");
  31. CHECK(options.count == 2);
  32. CHECK(strcmp(options.options[0].name, "ref") == 0);
  33. CHECK(strcmp(options.options[0].value, "3") == 0);
  34. CHECK(strcmp(options.options[1].name, "bframes") == 0);
  35. CHECK(strcmp(options.options[1].value, "8") == 0);
  36. CHECK(options.ignored_word_count == 0);
  37. obs_free_options(options);
  38. // Invalid options are ignored.
  39. options = obs_parse_options(
  40. "ref=3 option_with_no_equal_sign bframes=8 1234");
  41. CHECK(options.count == 2);
  42. CHECK(strcmp(options.options[0].name, "ref") == 0);
  43. CHECK(strcmp(options.options[0].value, "3") == 0);
  44. CHECK(strcmp(options.options[1].name, "bframes") == 0);
  45. CHECK(strcmp(options.options[1].value, "8") == 0);
  46. CHECK(options.ignored_word_count == 2);
  47. CHECK(strcmp(options.ignored_words[0], "option_with_no_equal_sign") ==
  48. 0);
  49. CHECK(strcmp(options.ignored_words[1], "1234") == 0);
  50. obs_free_options(options);
  51. // Extra whitespace is ignored between and around options.
  52. options = obs_parse_options(" ref=3 bframes=8 ");
  53. CHECK(options.count == 2);
  54. CHECK(strcmp(options.options[0].name, "ref") == 0);
  55. CHECK(strcmp(options.options[0].value, "3") == 0);
  56. CHECK(strcmp(options.options[1].name, "bframes") == 0);
  57. CHECK(strcmp(options.options[1].value, "8") == 0);
  58. CHECK(options.ignored_word_count == 0);
  59. obs_free_options(options);
  60. }
  61. int main()
  62. {
  63. test_obs_parse_options();
  64. return 0;
  65. }