test_primal_infeasibility.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "osqp.h" // OSQP API
  2. #include "cs.h" // CSC data structure
  3. #include "util.h" // Utilities for testing
  4. #include "minunit.h" // Basic testing script header
  5. #include "primal_infeasibility/data.h"
  6. static const char* test_primal_infeasible_qp_solve()
  7. {
  8. c_int exitflag;
  9. // Problem settings
  10. OSQPSettings *settings = (OSQPSettings *)c_malloc(sizeof(OSQPSettings));
  11. // Structures
  12. OSQPWorkspace *work; // Workspace
  13. OSQPData *data; // Data
  14. primal_infeasibility_sols_data *sols_data;
  15. // Populate data
  16. data = generate_problem_primal_infeasibility();
  17. sols_data = generate_problem_primal_infeasibility_sols_data();
  18. // Define Solver settings as default
  19. osqp_set_default_settings(settings);
  20. settings->max_iter = 10000;
  21. settings->alpha = 1.6;
  22. settings->polish = 1;
  23. settings->scaling = 0;
  24. settings->verbose = 1;
  25. settings->warm_start = 0;
  26. // Setup workspace
  27. exitflag = osqp_setup(&work, data, settings);
  28. // Setup correct
  29. mu_assert("Primal infeasible QP test solve: Setup error!", exitflag == 0);
  30. // Solve Problem
  31. osqp_solve(work);
  32. // Compare solver statuses
  33. mu_assert("Primal infeasible QP test solve: Error in solver status!",
  34. work->info->status_val == sols_data->status_test);
  35. // Clean workspace
  36. osqp_cleanup(work);
  37. // Cleanup data
  38. clean_problem_primal_infeasibility(data);
  39. clean_problem_primal_infeasibility_sols_data(sols_data);
  40. // Cleanup
  41. c_free(settings);
  42. return 0;
  43. }
  44. static const char* test_primal_infeasibility()
  45. {
  46. mu_run_test(test_primal_infeasible_qp_solve);
  47. return 0;
  48. }