test_demo.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "osqp.h" // OSQP API
  2. #include "minunit.h" // Basic testing script header
  3. static const char* test_demo_solve()
  4. {
  5. // Load problem data
  6. c_float P_x[3] = { 4.0, 1.0, 2.0, };
  7. c_int P_nnz = 3;
  8. c_int P_i[3] = { 0, 0, 1, };
  9. c_int P_p[3] = { 0, 1, 3, };
  10. c_float q[2] = { 1.0, 1.0, };
  11. c_float A_x[4] = { 1.0, 1.0, 1.0, 1.0, };
  12. c_int A_nnz = 4;
  13. c_int A_i[4] = { 0, 1, 0, 2, };
  14. c_int A_p[3] = { 0, 2, 4, };
  15. c_float l[3] = { 1.0, 0.0, 0.0, };
  16. c_float u[3] = { 1.0, 0.7, 0.7, };
  17. c_int n = 2;
  18. c_int m = 3;
  19. c_int exitflag;
  20. // Problem settings
  21. OSQPSettings *settings = (OSQPSettings *)c_malloc(sizeof(OSQPSettings));
  22. // Structures
  23. OSQPWorkspace *work; // Workspace
  24. OSQPData *data; // OSQPData
  25. // Populate data
  26. data = (OSQPData *)c_malloc(sizeof(OSQPData));
  27. data->n = n;
  28. data->m = m;
  29. data->P = csc_matrix(data->n, data->n, P_nnz, P_x, P_i, P_p);
  30. data->q = q;
  31. data->A = csc_matrix(data->m, data->n, A_nnz, A_x, A_i, A_p);
  32. data->l = l;
  33. data->u = u;
  34. // Define solver settings as default
  35. osqp_set_default_settings(settings);
  36. // Setup workspace
  37. exitflag = osqp_setup(&work, data, settings);
  38. // Setup correct
  39. mu_assert("Demo test solve: Setup error!", exitflag == 0);
  40. // Solve Problem
  41. osqp_solve(work);
  42. // Compare solver statuses
  43. mu_assert("Demo test solve: Error in solver status!",
  44. work->info->status_val == OSQP_SOLVED);
  45. // Clean workspace
  46. osqp_cleanup(work);
  47. c_free(data->A);
  48. c_free(data->P);
  49. c_free(data);
  50. c_free(settings);
  51. return 0;
  52. }
  53. static const char* test_demo()
  54. {
  55. mu_run_test(test_demo_solve);
  56. return 0;
  57. }