package de.gaalop.testbenchTbaGapp.tba;
import de.gaalop.api.cfg.AssignmentNodeCollector;
import de.gaalop.cfg.AssignmentNode;
import de.gaalop.dfg.Exponentiation;
import de.gaalop.dfg.Expression;
import de.gaalop.dfg.MultivectorComponent;
import de.gaalop.dfg.Variable;
import de.gaalop.tba.Multivector;
import de.gaalop.tba.Plugin;
import de.gaalop.testbenchTbaGapp.graphstorage.GraphStoragePlugin;
import de.gaalop.testbenchTbaGapp.tba.framework.TBATestCase;
import de.gaalop.testbenchTbaGapp.tba.framework.TestDummy;
import de.gaalop.visitors.DFGTraversalVisitor;
import de.gaalop.visualizer.zerofinding.RayMethod;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.*;
/**
*
* @author Christian Steinmetz
*/
public class TestExponentiation {
@Ignore //TODO chs change to @Ignore because of using maxima at this test
public void testAssignmentCopy() {
TBATestCase tC = new TBATestCase() {
@Override
public String getCLUScript() {
return
"?b2 = a*a;\n"+
"?b3 = a*a*a;\n"+
"?b4 = a*a*a*a;\n"+
"?b5 = a*a*a*a*a;\n";
}
@Override
public void testOutputs(HashMap<Variable, Double> outputs) {
}
@Override
public HashMap<Variable, Double> getInputValues() {
return new HashMap<Variable, Double>();
}
@Override
public String getAlgebraName() {
return "5d";
}
};
GraphStoragePlugin graphStoragePlugin = new GraphStoragePlugin();
de.gaalop.globalSettings.Plugin globalPlugin = new de.gaalop.globalSettings.Plugin();
globalPlugin.optMaxima = true;
globalPlugin.maximaCommand = "C:\\Program Files (x86)\\Maxima\\bin\\maxima.bat";
TestDummy.compileWithOptions(tC, globalPlugin, graphStoragePlugin);
AssignmentNodeMapCollector collectorMap = new AssignmentNodeMapCollector();
graphStoragePlugin.getGraph().accept(collectorMap);
HashMap<Variable, Expression> map = collectorMap.getAssignmentNodes();
assertFalse(hasExponations(map.get(new MultivectorComponent("b2", 0))));
assertFalse(hasExponations(map.get(new MultivectorComponent("b3", 0))));
assertTrue(hasExponations(map.get(new MultivectorComponent("b4", 0))));
assertTrue(hasExponations(map.get(new MultivectorComponent("b5", 0))));
}
private boolean hasExponations(Expression e) {
HasExponentiations h = new HasExponentiations();
e.accept(h);
return h.hasExpononation;
}
class HasExponentiations extends DFGTraversalVisitor {
public boolean hasExpononation = false;
@Override
public void visit(Exponentiation node) {
hasExpononation = true;
super.visit(node);
}
}
}