123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #include "osqp.h" // OSQP API
- #include "minunit.h" // Basic testing script header
- #include "unconstrained/data.h"
- static const char* test_unconstrained_solve()
- {
- c_int exitflag;
- // Problem settings
- OSQPSettings *settings = (OSQPSettings *)c_malloc(sizeof(OSQPSettings));
- // Structures
- OSQPWorkspace *work; // Workspace
- OSQPData *data; // Data
- unconstrained_sols_data *sols_data;
- // Populate data
- data = generate_problem_unconstrained();
- sols_data = generate_problem_unconstrained_sols_data();
- // Define Solver settings as default
- osqp_set_default_settings(settings);
- settings->verbose = 1;
- // Setup workspace
- exitflag = osqp_setup(&work, data, settings);
- // Setup correct
- mu_assert("Unconstrained test solve: Setup error!", exitflag == 0);
- // Solve Problem first time
- osqp_solve(work);
- // Compare solver statuses
- mu_assert("Unconstrained test solve: Error in solver status!",
- work->info->status_val == sols_data->status_test);
- // Compare primal solutions
- mu_assert("Unconstrained test solve: Error in primal solution!",
- vec_norm_inf_diff(work->solution->x, sols_data->x_test,
- data->n) < TESTS_TOL);
- // Compare objective values
- mu_assert("Unconstrained test solve: Error in objective value!",
- c_absval(work->info->obj_val - sols_data->obj_value_test) <
- TESTS_TOL);
- // Clean workspace
- osqp_cleanup(work);
- // Cleanup settings and data
- c_free(settings);
- clean_problem_unconstrained(data);
- clean_problem_unconstrained_sols_data(sols_data);
- return 0;
- }
- static const char* test_unconstrained()
- {
- mu_run_test(test_unconstrained_solve);
- return 0;
- }
|