obs-x264-test.c 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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", __FILE__, __LINE__, #condition); \
  9. exit(1); \
  10. } \
  11. } while (0)
  12. static void test_obs_parse_options()
  13. {
  14. struct obs_options options;
  15. options = obs_parse_options(NULL);
  16. CHECK(options.count == 0);
  17. CHECK(options.ignored_word_count == 0);
  18. obs_free_options(options);
  19. options = obs_parse_options("");
  20. CHECK(options.count == 0);
  21. CHECK(options.ignored_word_count == 0);
  22. obs_free_options(options);
  23. options = obs_parse_options("ref=3");
  24. CHECK(options.count == 1);
  25. CHECK(strcmp(options.options[0].name, "ref") == 0);
  26. CHECK(strcmp(options.options[0].value, "3") == 0);
  27. CHECK(options.ignored_word_count == 0);
  28. obs_free_options(options);
  29. options = obs_parse_options("ref=3 bframes=8");
  30. CHECK(options.count == 2);
  31. CHECK(strcmp(options.options[0].name, "ref") == 0);
  32. CHECK(strcmp(options.options[0].value, "3") == 0);
  33. CHECK(strcmp(options.options[1].name, "bframes") == 0);
  34. CHECK(strcmp(options.options[1].value, "8") == 0);
  35. CHECK(options.ignored_word_count == 0);
  36. obs_free_options(options);
  37. // Invalid options are ignored.
  38. options = obs_parse_options("ref=3 option_with_no_equal_sign bframes=8 1234");
  39. CHECK(options.count == 2);
  40. CHECK(strcmp(options.options[0].name, "ref") == 0);
  41. CHECK(strcmp(options.options[0].value, "3") == 0);
  42. CHECK(strcmp(options.options[1].name, "bframes") == 0);
  43. CHECK(strcmp(options.options[1].value, "8") == 0);
  44. CHECK(options.ignored_word_count == 2);
  45. CHECK(strcmp(options.ignored_words[0], "option_with_no_equal_sign") == 0);
  46. CHECK(strcmp(options.ignored_words[1], "1234") == 0);
  47. obs_free_options(options);
  48. // Extra whitespace is ignored between and around options.
  49. options = obs_parse_options(" ref=3 bframes=8 ");
  50. CHECK(options.count == 2);
  51. CHECK(strcmp(options.options[0].name, "ref") == 0);
  52. CHECK(strcmp(options.options[0].value, "3") == 0);
  53. CHECK(strcmp(options.options[1].name, "bframes") == 0);
  54. CHECK(strcmp(options.options[1].value, "8") == 0);
  55. CHECK(options.ignored_word_count == 0);
  56. obs_free_options(options);
  57. }
  58. int main()
  59. {
  60. test_obs_parse_options();
  61. return 0;
  62. }