CUEParser_test.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include "CUEParser.h"
  2. #include <stdio.h>
  3. #include <string.h>
  4. /* Unit test helpers */
  5. #define COMMENT(x) printf("\n----" x "----\n");
  6. #define TEST(x) \
  7. if (!(x)) { \
  8. fprintf(stderr, "\033[31;1mFAILED:\033[22;39m %s:%d %s\n", __FILE__, __LINE__, #x); \
  9. status = 1; \
  10. } else { \
  11. printf("\033[32;1mOK:\033[22;39m %s\n", #x); \
  12. }
  13. int test_basics()
  14. {
  15. int status = 0;
  16. const char *cue_sheet = R"(
  17. FILE "Image Name.bin" BINARY
  18. TRACK 01 MODE1/2048
  19. INDEX 01 00:00:00
  20. TRACK 02 AUDIO
  21. PREGAP 00:02:00
  22. INDEX 01 02:47:20
  23. TRACK 03 AUDIO
  24. INDEX 00 07:55:58
  25. INDEX 01 07:55:65
  26. FILE "Sound.wav" WAVE
  27. TRACK 11 AUDIO
  28. INDEX 00 00:00:00
  29. INDEX 01 00:02:00
  30. )";
  31. CUEParser parser(cue_sheet);
  32. COMMENT("Test TRACK 01 (data)");
  33. const CUETrackInfo *track = parser.next_track();
  34. TEST(track != NULL);
  35. if (track)
  36. {
  37. TEST(strcmp(track->filename, "Image Name.bin") == 0);
  38. TEST(track->file_mode == CUEFile_BINARY);
  39. TEST(track->track_number == 1);
  40. TEST(track->track_mode == CUETrack_MODE1_2048);
  41. TEST(track->unstored_pregap_length == 0);
  42. TEST(track->data_start == 0);
  43. }
  44. COMMENT("Test TRACK 02 (audio with pregap)");
  45. track = parser.next_track();
  46. TEST(track != NULL);
  47. if (track)
  48. {
  49. TEST(strcmp(track->filename, "Image Name.bin") == 0);
  50. TEST(track->file_mode == CUEFile_BINARY);
  51. TEST(track->track_number == 2);
  52. TEST(track->track_mode == CUETrack_AUDIO);
  53. TEST(track->unstored_pregap_length == 2 * 75);
  54. TEST(track->data_start == ((2 * 60) + 47) * 75 + 20);
  55. }
  56. COMMENT("Test TRACK 03 (audio with index 0)");
  57. track = parser.next_track();
  58. TEST(track != NULL);
  59. if (track)
  60. {
  61. TEST(strcmp(track->filename, "Image Name.bin") == 0);
  62. TEST(track->file_mode == CUEFile_BINARY);
  63. TEST(track->track_number == 3);
  64. TEST(track->track_mode == CUETrack_AUDIO);
  65. TEST(track->pregap_start == ((7 * 60) + 55) * 75 + 58);
  66. TEST(track->data_start == ((7 * 60) + 55) * 75 + 65);
  67. }
  68. COMMENT("Test TRACK 11 (audio from wav)");
  69. track = parser.next_track();
  70. TEST(track != NULL);
  71. if (track)
  72. {
  73. TEST(strcmp(track->filename, "Sound.wav") == 0);
  74. TEST(track->file_mode == CUEFile_WAVE);
  75. TEST(track->track_number == 11);
  76. TEST(track->track_mode == CUETrack_AUDIO);
  77. TEST(track->pregap_start == 0);
  78. TEST(track->data_start == 2 * 75);
  79. }
  80. COMMENT("Test end of file");
  81. track = parser.next_track();
  82. TEST(track == NULL);
  83. COMMENT("Test restart");
  84. parser.restart();
  85. track = parser.next_track();
  86. TEST(track != NULL && track->track_number == 1);
  87. return status;
  88. }
  89. int main()
  90. {
  91. return test_basics();
  92. }