package splar.apps.experiments;
import java.util.HashMap;
import java.util.List;
import org.sat4j.specs.ContradictionException;
import splar.core.fm.FeatureModel;
import splar.core.fm.XMLFeatureModel;
import splar.core.heuristics.FTPreOrderSortedECTraversalHeuristic;
import splar.core.heuristics.VariableOrderingHeuristic;
import splar.core.heuristics.VariableOrderingHeuristicsManager;
import splar.plugins.reasoners.bdd.javabdd.FMReasoningWithBDD;
import splar.plugins.reasoners.bdd.javabdd.ReasoningWithBDD;
import splar.plugins.reasoners.sat.sat4j.FMReasoningWithSAT;
public class Tests {
public static void main(String args[]) {
new Tests().init();
}
public void init() {
try {
FeatureModel featureModel = new XMLFeatureModel("c:\\users\\marcilio\\eclipse\\SPLAR\\resources\\apagme.xml");
featureModel.loadModel();
// String jsonString = "{ \"feature_model_name\" : \"\", \"feature_diagram\" : [[\"_r\",\"carro\",\"root\",\"\"],[\"_r_1\",\"motor\",\"mandatory\",\"_r\"],[\"_r_1_2\",\"[1..1]\",\"xor\",\"_r_1\"],[\"_r_1_2_3\",\"gasolina\",\"grouped\",\"_r_1_2\"],[\"_r_1_2_4\",\"alcool\",\"grouped\",\"_r_1_2\"],[\"_r_1_2_5\",\"diesel\",\"grouped\",\"_r_1_2\"],[\"_r_6\",\"air bag\",\"optional\",\"_r\"],[\"_r_7\",\"leather seats\",\"optional\",\"_r\"],[]],\"crosstree_constraints\" : {\"constraint_1\" : [\"~_r_1_2_5\",\"_r_7\"], \"constraint_2\" : [\"~_r_6\",\"~_r_7\"], \"\":[]}, \"additional_information\" : {\"fm_description\" : \"\",\"fm_author\" : \"\",\"fm_author_address\" : \"\",\"fm_author_email\" : \"\",\"fm_author_phone\" : \"\",\"fm_author_website\" : \"\",\"fm_author_organization\" : \"\",\"fm_author_department\" : \"\",\"fm_creation_date\" : \"\",\"fm_publication\" : \"\"}}";
// FeatureModel featureModel = new JSONFeatureModel(jsonString);
// featureModel.loadModel();
//
// FMReasoningWithSAT reasoner = new FMReasoningWithSAT("MiniSAT", featureModel, 60000);
// // SAT-based analysis
// boolean isConsistent = true;
// try {
// reasoner.init();
// isConsistent = reasoner.isConsistent();
// } catch (ContradictionException e) {
// isConsistent = false;
// }
//
// List<String> deadFeatures = reasoner.allDeadFeatures(new HashMap<String, String>());
// List<String> coreFeatures = reasoner.allCoreFeatures(new HashMap<String, String>());
//
// System.out.println(deadFeatures);
// System.out.println(coreFeatures);
featureModel.dumpXML();
} catch (Exception e) {
e.printStackTrace();
}
}
}