/*******************************************************************************
* Copyright 2014 Analog Devices, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
********************************************************************************/
package com.analog.lyric.dimple.test.solvers.lp;
import static java.util.Objects.*;
import static org.junit.Assert.*;
import org.junit.Test;
import com.analog.lyric.dimple.model.core.FactorGraph;
import com.analog.lyric.dimple.solvers.lp.LPOptions;
import com.analog.lyric.dimple.solvers.lp.LPSolver;
import com.analog.lyric.dimple.solvers.lp.LPSolverGraph;
import com.analog.lyric.dimple.test.DimpleTestBase;
/**
* Test initalization of {@link LPOptions}.
* <p>
* @since 0.07
* @author Christopher Barber
*/
public class TestLPOptions extends DimpleTestBase
{
@Test
public void test()
{
// Test default values
assertEquals("", LPOptions.LPSolver.defaultValue());
assertEquals("", LPOptions.MatlabLPSolver.defaultValue());
FactorGraph fg = new FactorGraph();
LPOptions.LPSolver.set(fg, "GLPK");
LPOptions.MatlabLPSolver.set(fg, "glpkIP");
LPSolverGraph sfg = requireNonNull(fg.setSolverFactory(new LPSolver()));
assertEquals("GLPK", LPOptions.LPSolver.get(sfg));
assertEquals("glpkIP", LPOptions.MatlabLPSolver.get(sfg));
// Test pre-initialization values. Most if not all options don't take effect until initialize().
assertEquals("", sfg.getLPSolverName());
assertEquals("", sfg.getMatlabLPSolver());
// Test post-initialization values.
sfg.initialize();
assertEquals("GLPK", sfg.getLPSolverName());
assertEquals("glpkIP", sfg.getMatlabLPSolver());
// Make sure that set* methods update options locally.
assertNull(sfg.getLocalOption(LPOptions.LPSolver));
assertNull(sfg.getLocalOption(LPOptions.MatlabLPSolver));
sfg.setLPSolverName("LpSolve");
assertEquals("LpSolve", sfg.getLPSolverName());
assertEquals("LpSolve", sfg.getLocalOption(LPOptions.LPSolver));
sfg.setMatlabLPSolver("gurobi");
assertEquals("gurobi", sfg.getMatlabLPSolver());
assertEquals("gurobi", sfg.getLocalOption(LPOptions.MatlabLPSolver));
}
}