mission_effect_test.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031
  1. #include <cassert>
  2. #include "../Sunrise/src/middleware/bap/activity_message/mission_effect_auth.h"
  3. int main(){
  4. namespace effect=sunrise::middleware::bap::activity_message::mission_effect;
  5. namespace auth=sunrise::middleware::bap::activity_message::scriptable_auth;
  6. std::array<std::byte,effect::kBytes> bytes{};std::size_t written{};
  7. assert(effect::encode({0x12345678,34,117},true,3,bytes,written));
  8. assert(written==24&&effect::validate(bytes,186));
  9. bytes.back()|=std::byte{1};assert(!effect::validate(bytes,186));
  10. assert(effect::encode({},false,4,bytes,written)&&effect::validate(bytes,186));
  11. assert(!effect::encode({},true,4,bytes,written));
  12. assert(!effect::encode({1,34,1},true,0,bytes,written));
  13. auth::Type34Body filter{};filter.count=2;
  14. filter.predicates[0]=auth::Type34ModeOnlyB{0};
  15. filter.predicates[1]=auth::Type34ModeFlagSlotRef{1,false,{0x98765432,60,116}};
  16. std::array<std::byte,auth::kType34MaximumByteCount> out{};std::size_t bits{};
  17. assert(auth::encode_type34(filter,out,written,bits));
  18. assert(bits==130&&effect::validate_filter(std::span(out).first(written),bits));
  19. assert(!effect::validate_filter(std::span(out).first(written-1),bits));
  20. filter.predicates[1]=auth::Type34ModeFlagSlotRef{0,false,{1,60,1}}; // Native unreachable add-outside combination.
  21. assert(auth::encode_type34(filter,out,written,bits));
  22. assert(!effect::validate_filter(std::span(out).first(written),bits));
  23. filter.count=6;
  24. for (int i=0;i<5;++i) filter.predicates[i]=auth::Type34ModeFlagSlotRef{0,true,{1,60,static_cast<std::int16_t>(i+3)}};
  25. filter.predicates[5]=auth::Type34ModeOnlyB{1};
  26. assert(auth::encode_type34(filter,out,written,bits));
  27. assert(bits==494 && effect::validate_filter(std::span(out).first(written),bits));
  28. filter.count=1;filter.predicates[0]=auth::Type34ModeSlotRefC{0,{1,4,25}};
  29. assert(auth::encode_type34(filter,out,written,bits));
  30. assert(bits==94&&effect::validate_filter(std::span(out).first(written),bits));
  31. }