Acceleo 4 can be used programmatically and for instance integrated in other products.
Parsing
URI destination = URI.createURI(...);
environment = new AcceleoEnvironment(new DefaultGenerationStrategy(), destination);
IQualifiedNameResolver moduleResolver = new ClassLoaderQualifiedNameResolver(getClass().getClassLoader(), environment.getQueryEnvironment());
environment.setModuleResolver(moduleResolver);
Module module = environment.getModule(qualifiedName);
Validation
AcceleoValidator validator = new AcceleoValidator(environment);
List<IValidationMessage> messages = validator.validate(astResult, qualifiedName).getValidationMessages();
Completion
AcceleoCompletor completor = new AcceleoCompletor();
String source = ...;
List<ICompletionProposal> proposals = completor.getProposals(environment, source, position);
Generation
AcceleoEvaluator evaluator = new AcceleoEvaluator(environment);
ResourceSetImpl rs = new ResourceSetImpl();
Resource model = rs.getResource(..., true);
AcceleoUtil.generate(evaluator, environment, module, model);
Unit test module
You can unit test your modules using the same JUnit test suite we are using for the development of Acceleo 4. You will simply need to create a class extending the class org.eclipse.acceleo.tests.utils.AbstractEvaluationTestSuite and create a folder with you test folders. Those folders need to respect a naming convention. You can find a working example with the class FileStatementTests and the corresponding folder.