diff options
Diffstat (limited to 'internal/ceres/iterative_schur_complement_solver_test.cc')
-rw-r--r-- | internal/ceres/iterative_schur_complement_solver_test.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/internal/ceres/iterative_schur_complement_solver_test.cc b/internal/ceres/iterative_schur_complement_solver_test.cc index 86e7825..db45741 100644 --- a/internal/ceres/iterative_schur_complement_solver_test.cc +++ b/internal/ceres/iterative_schur_complement_solver_test.cc @@ -58,9 +58,9 @@ const double kEpsilon = 1e-14; class IterativeSchurComplementSolverTest : public ::testing::Test { protected : - virtual void SetUp() { + void SetUpProblem(int problem_id) { scoped_ptr<LinearLeastSquaresProblem> problem( - CreateLinearLeastSquaresProblemFromId(2)); + CreateLinearLeastSquaresProblemFromId(problem_id)); CHECK_NOTNULL(problem.get()); A_.reset(down_cast<BlockSparseMatrix*>(problem->A.release())); @@ -90,7 +90,9 @@ class IterativeSchurComplementSolverTest : public ::testing::Test { qr->Solve(&dense_A, b_.get(), per_solve_options, reference_solution.data()); options.elimination_groups.push_back(num_eliminate_blocks_); + options.elimination_groups.push_back(0); options.max_num_iterations = num_cols_; + options.preconditioner_type = SCHUR_JACOBI; IterativeSchurComplementSolver isc(options); Vector isc_sol(num_cols_); @@ -114,7 +116,14 @@ class IterativeSchurComplementSolverTest : public ::testing::Test { scoped_array<double> D_; }; -TEST_F(IterativeSchurComplementSolverTest, SolverTest) { +TEST_F(IterativeSchurComplementSolverTest, NormalProblem) { + SetUpProblem(2); + EXPECT_TRUE(TestSolver(NULL)); + EXPECT_TRUE(TestSolver(D_.get())); +} + +TEST_F(IterativeSchurComplementSolverTest, ProblemWithNoFBlocks) { + SetUpProblem(3); EXPECT_TRUE(TestSolver(NULL)); EXPECT_TRUE(TestSolver(D_.get())); } |