music_section_test.cpp 1.2 KB

1234567891011121314151617181920212223242526
  1. #include <array>
  2. #include <cassert>
  3. #include "../Sunrise/src/middleware/bap/activity_message/music_section_auth.h"
  4. using namespace sunrise::middleware::bap::activity_message;
  5. int main() {
  6. std::array<std::byte, music_section::kBytes> body{};
  7. std::size_t written{};
  8. for (const auto section : {0, 5, 28, 31, 32, 127}) {
  9. assert(music_section::encode(section, true, body, written));
  10. assert(written == body.size() && music_section::validate(body, music_section::kBits));
  11. sunrise::middleware::encoding::bits::Reader r(body);
  12. for (int lane = 0; lane < 4; ++lane) {
  13. std::uint64_t v{};
  14. assert(r.read(32, v));
  15. assert(v == (section / 32 == lane ? std::uint32_t{1} << (section % 32) : 0));
  16. }
  17. body.back() |= std::byte{0x01};
  18. assert(!music_section::validate(body, music_section::kBits));
  19. }
  20. assert(music_section::encode(0, false, body, written));
  21. assert(music_section::validate(body, music_section::kBits));
  22. assert(!music_section::encode(128, true, body, written));
  23. assert(music_section::encode(0, true, body, written));
  24. body[3] |= std::byte{2};
  25. assert(!music_section::validate(body, music_section::kBits));
  26. }