spawn_override_test.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <algorithm>
  2. #include <cassert>
  3. #include <iostream>
  4. #include "../Sunrise/src/state/activity/destination/activity_destination_spawn_binding.cpp"
  5. namespace data = sunrise::state::build_data;
  6. namespace dest = sunrise::state::activity::destination;
  7. static data::scenarios::Definition layout;
  8. static data::spawn_sets::NameHash spawn;
  9. static bool available = true;
  10. namespace sunrise::state::build_data {
  11. bool find_scenario_layout(std::string_view, scenarios::Definition& out) noexcept {
  12. out = layout;
  13. return available;
  14. }
  15. bool find_spawn_sets(std::string_view,
  16. std::span<spawn_sets::NameHash> out,
  17. std::size_t& count) noexcept {
  18. count = 1;
  19. out[0] = spawn;
  20. return true;
  21. }
  22. } // namespace sunrise::state::build_data
  23. namespace sunrise::core::log {
  24. void write(Channel, Level, std::string_view) noexcept {}
  25. } // namespace sunrise::core::log
  26. int main() {
  27. dest::DestinationSelection selection{};
  28. selection.packageName[0] = 'x';
  29. selection.packageNameLength = 1;
  30. selection.hasSpawnSetHash = true;
  31. selection.spawnSetHash = 0x12345678;
  32. layout.spawnStem[0] = 'x';
  33. layout.spawnStemLength = 1;
  34. layout.packageCount = 1;
  35. layout.packages[0] = 10;
  36. spawn.value = selection.spawnSetHash;
  37. spawn.activityPackageCount = 1;
  38. spawn.activityPackages[0] = 20; // A dependency is absent from the direct package list.
  39. assert(dest::attachable_spawn_set_hash(selection, 0) == dest::kAbsentSpawnSetHash);
  40. selection.hasSpawnSetOverride = true;
  41. selection.spawnSetOverride = spawn.value;
  42. assert(dest::attachable_spawn_set_hash(selection, 0) == spawn.value);
  43. selection.spawnSetOverride = dest::kAbsentSpawnSetHash;
  44. assert(dest::attachable_spawn_set_hash(selection, 0) == dest::kAbsentSpawnSetHash);
  45. selection.spawnSetOverride = 0;
  46. assert(dest::attachable_spawn_set_hash(selection, 0) == 0);
  47. selection.hasSpawnSetOverride = false;
  48. spawn.activityPackages[0] = 10;
  49. assert(dest::attachable_spawn_set_hash(selection, 0) == spawn.value);
  50. spawn.activityPackages[0] = 20;
  51. spawn.inMapPackage = 1;
  52. assert(dest::attachable_spawn_set_hash(selection, 0) == spawn.value);
  53. spawn.inMapPackage = 0;
  54. available = false;
  55. assert(dest::attachable_spawn_set_hash(selection, 0) == spawn.value);
  56. std::cout << "Explicit spawn override precedence and inferred-set filtering passed\n";
  57. }