aboutsummaryrefslogtreecommitdiff
path: root/test/test_bass.cpp
blob: e48decd83d64906a9dbb8a9d491c406962fa2c92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <cstring>

#include <catch2/catch.hpp>
#include <QString>

#include "bass.h"
#include "bassmidi.h"
#include "bassopus.h"

TEST_CASE("BASS URL streaming", "[bass][noci]") {
  // Sample
  QString url = "https://raw.githubusercontent.com/skyedeving/aocharedit/master/Attorney%20Online%20Character%20Editor/Resources/about.mp3";

  // initialize
  BASS_Init(-1, 44100, 0, 0, nullptr);

  // create stream from url
  HSTREAM stream;
  unsigned int flags = BASS_STREAM_AUTOFREE | BASS_STREAM_STATUS;
  if (url.endsWith(".opus")) {
    stream = BASS_OPUS_StreamCreateURL(url.toStdString().c_str(), 0, flags, nullptr, 0);
  }
  else {
    stream = BASS_StreamCreateURL(url.toStdString().c_str(), 0, flags, nullptr, 0);
  }

  // Log http status
  const char *tags = BASS_ChannelGetTags(stream, BASS_TAG_HTTP);
  if (tags) {
    while(*tags) {
      UNSCOPED_INFO(tags);
      tags += strlen(tags) + 1;
    }
  }

  // Test
  REQUIRE(stream != 0);
  REQUIRE(BASS_ChannelPlay(stream, TRUE) == TRUE);
  // while (BASS_ChannelIsActive(stream) != BASS_ACTIVE_STOPPED); // block test to listen
}