package org.fugazi.qls.type_checker;
import org.fugazi.ql.type_checker.TestQlTypeCheckerBase;
import org.fugazi.qls.ast.DefaultStyleHandler;
import org.fugazi.qls.ast.QLSASTBuilder;
import org.fugazi.qls.ast.stylesheet.StyleSheet;
import org.fugazi.qls.ast.stylesheet.stylesheet_data.QLSStyleSheetDataStorage;
import org.junit.Before;
import org.junit.Ignore;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
@Ignore("This is a base class.")
public abstract class TestQlsTypeCheckerBase extends TestQlTypeCheckerBase {
protected QLSTypeChecker qlsChecker;
protected String qlsInputFile;
protected InputStream qlsInput;
protected QLSASTBuilder qlsAstBuilder;
protected String qlsFileName;
private final String path = "/test/org/fugazi/qls/type_checker/test_form/";
/*
Both ql and qls files need to be loaded here.
*/
@Before
public void setUp() {
// we are only testing qls here
// correct ql form necessary
this.fileName = "correctForm.ql";
super.setUp();
this.filePath = this.path.concat(this.qlsFileName);
this.qlsInputFile = new File("").getAbsolutePath().concat(this.filePath);
try {
if (qlsInputFile != null)
qlsInput = new FileInputStream(qlsInputFile);
// Create The AST Builder.
qlsAstBuilder = new QLSASTBuilder(qlsInput);
} catch (IOException ex) {
ex.printStackTrace();
}
// Build the AST.
StyleSheet styleSheet = qlsAstBuilder.buildStyleSheet();
// Get the styles.
DefaultStyleHandler.applyStylesToStyleSheet(this.formDataStorage, styleSheet);
QLSStyleSheetDataStorage styleSheetData = new QLSStyleSheetDataStorage(styleSheet);
// Perform QLS type checking.
this.qlsChecker = new QLSTypeChecker(
styleSheetData, this.formDataStorage
);
qlsChecker.checkStylesheet();
}
}