import org.junit.Test;
import org.simantics.scl.compiler.compilation.CompilationContext;
import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
import org.junit.Test;
import org.simantics.scl.compiler.compilation.CompilationContext;
import org.simantics.scl.compiler.elaboration.chr.CHRRuleset;
import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint.IndexInfo;
import org.simantics.scl.compiler.environment.specification.EnvironmentSpecification;
import org.simantics.scl.compiler.errors.Locations;
import org.simantics.scl.compiler.elaboration.chr.relations.CHRConstraint.IndexInfo;
import org.simantics.scl.compiler.environment.specification.EnvironmentSpecification;
import org.simantics.scl.compiler.errors.Locations;
import org.simantics.scl.compiler.internal.codegen.types.JavaTypeTranslator;
import org.simantics.scl.compiler.internal.codegen.utils.JavaNamingPolicy;
import org.simantics.scl.compiler.internal.codegen.utils.ModuleBuilder;
import org.simantics.scl.compiler.internal.codegen.types.JavaTypeTranslator;
import org.simantics.scl.compiler.internal.codegen.utils.JavaNamingPolicy;
import org.simantics.scl.compiler.internal.codegen.utils.ModuleBuilder;
CHRRuleset ruleset = new CHRRuleset();
CHRConstraint exampleFact = new CHRConstraint(Locations.NO_LOCATION, "ExampleFact", new Type[] { Types.INTEGER, Types.INTEGER });
CHRRuleset ruleset = new CHRRuleset();
CHRConstraint exampleFact = new CHRConstraint(Locations.NO_LOCATION, "ExampleFact", new Type[] { Types.INTEGER, Types.INTEGER });
System.out.println("==============================================================================================");
ruleset.initializeCodeGeneration(compilationContext);
System.out.println("==============================================================================================");
ruleset.initializeCodeGeneration(compilationContext);
exampleFact.indices.put(3, new IndexInfo(3, "bb", null, null));
exampleFact.setMayBeRemoved();
exampleFact.indices.put(3, new IndexInfo(3, "bb", null, null));
exampleFact.setMayBeRemoved();
MutableClassLoader classLoader = environment.getMutableClassLoader();
classLoader.addClasses(moduleBuilder.getClasses());
MutableClassLoader classLoader = environment.getMutableClassLoader();
classLoader.addClasses(moduleBuilder.getClasses());
Class<?> storeClass = classLoader.loadClass(storeClassName);
Class<?> factClass = classLoader.loadClass(storeClassName+"$ExampleFact");
Constructor<?> factConstructor = factClass.getConstructor(int.class, int.class, int.class);
Class<?> storeClass = classLoader.loadClass(storeClassName);
Class<?> factClass = classLoader.loadClass(storeClassName+"$ExampleFact");
Constructor<?> factConstructor = factClass.getConstructor(int.class, int.class, int.class);