mission_seed_world_change_test.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233
  1. // Packed regions select native entries: 4C8E60 base, 4C8E40 alternates.
  2. #include <cassert>
  3. #include "../Sunrise/src/server/bap/encrypted/push/activity/mission_seed_world_change.h"
  4. namespace seed = sunrise::server::bap::encrypted::push::activity;
  5. int main() {
  6. // Both movies need their own native world entry even though the bubble stays zero.
  7. assert(seed::mission_seed_region_change_replaces_world(0, 0, 0, 1));
  8. assert(seed::mission_seed_region_change_replaces_world(0, 1, 0, 2));
  9. assert(seed::mission_seed_region_change_replaces_world(0, 2, 0, 0));
  10. assert(!seed::mission_seed_region_change_replaces_world(0, 1, 0, 1));
  11. // Preserve ordinary mission travel and exact same-state idempotence.
  12. assert(seed::mission_seed_region_change_replaces_world(48, 49, 64, 64));
  13. assert(seed::mission_seed_region_change_replaces_world(64, 64, 56, 56));
  14. assert(seed::mission_seed_region_change_replaces_world(40, 40, 0, 0));
  15. assert(!seed::mission_seed_region_change_replaces_world(40, 40, 40, 40));
  16. // Held base gameplay is not a bookend arrival; pending/unknown is not held.
  17. assert(!seed::mission_seed_arrival_window_closed(0, 1, 0, 8));
  18. assert(!seed::mission_seed_arrival_window_closed(1, 2, 0, 8));
  19. assert(!seed::mission_seed_arrival_window_closed(-1, 1, 0, 8));
  20. assert(!seed::mission_seed_arrival_window_closed(1, 1, 0, 0));
  21. assert(seed::mission_seed_arrival_window_closed(1, 1, 0, 8));
  22. assert(seed::mission_seed_arrival_window_closed(2, 2, 0, 8));
  23. // The last scripted seed can be landing while natural traversal reached Apex.
  24. assert(seed::mission_seed_selection_needs_arrival(64, 64, 0, 1, 0, 8));
  25. assert(!seed::mission_seed_selection_needs_arrival(64, 64, 0, 1, 1, 8));
  26. assert(!seed::mission_seed_selection_needs_arrival(64, 64, 0, 0, 0, 8));
  27. // Local objects must wait for their actual world; global-only startup stays intact.
  28. assert(seed::mission_seed_transition_subset_only(false, true, false, 0, 1, 0, 8));
  29. assert(!seed::mission_seed_transition_subset_only(false, true, false, 1, 1, 0, 8));
  30. assert(seed::mission_seed_transition_subset_only(false, false, false, 1, 1, 0, 8));
  31. assert(!seed::mission_seed_transition_subset_only(false, false, true, 1, 1, 0, 8));
  32. assert(!seed::mission_seed_transition_subset_only(true, true, false, 0, 1, 0, 8));
  33. }