package com.github.sommeri.less4j.compiler; import java.io.File; import java.util.ArrayList; import java.util.Collection; import org.junit.runners.Parameterized.Parameters; import com.github.sommeri.less4j.AbstractFileBasedTest; import com.github.sommeri.less4j.Less4jException; import com.github.sommeri.less4j.LessCompiler; import com.github.sommeri.less4j.LessCompiler.CompilationResult; import com.github.sommeri.less4j.LessCompiler.Configuration; import com.github.sommeri.less4j.LessSource; import com.github.sommeri.less4j.MultiPathFileSource; import com.github.sommeri.less4j.MultiPathStringSource; public class MultiPathLessSourceTest extends AbstractFileBasedTest { private static final String standardCases = "src/test/resources/compile-basic-features/include-path"; private static final String includePath = "src/test/resources/compile-basic-features/import"; private boolean useStringSource; public MultiPathLessSourceTest(File inputFile, File outputFile, File errorList, File mapdataFile, File configFile, String kind, String testName, boolean useStringSource) { super(inputFile, outputFile, errorList, mapdataFile, configFile, testName); this.useStringSource = useStringSource; } protected CompilationResult compile(File lessFile, File cssOutput) throws Less4jException { LessCompiler compiler = getCompiler(); Configuration configuration = createConfiguration(cssOutput); LessSource source = createLessSource(lessFile); CompilationResult actual = compiler.compile(source, configuration); return actual; } private LessSource createLessSource(File lessFile) { return useStringSource? createStringSource(lessFile) : createFileSource(lessFile); } private LessSource createFileSource(File lessFile) { return new MultiPathFileSource(lessFile, new File (includePath)); } private LessSource createStringSource(File lessFile) { String content = readFile(lessFile); return new MultiPathStringSource(content, "test", lessFile.toURI(), new File (includePath)); } @Parameters(name="{4}: {5}") public static Collection<Object[]> allTestsParameters() { Collection<Object[]> loadedTestFiles = createTestFileUtils().loadTestFiles(standardCases); Collection<Object[]> result = new ArrayList<Object[]>(loadedTestFiles.size()*2); for (Object[] objects : loadedTestFiles) { Object[] useStringSourceArray = new Object[objects.length + 2]; System.arraycopy(objects, 0, useStringSourceArray, 0, objects.length); useStringSourceArray[6] = useStringSourceArray[5]; useStringSourceArray[5] = "String Based"; useStringSourceArray[7] = true; result.add(useStringSourceArray); Object[] useFileSourceArray = new Object[objects.length + 2]; System.arraycopy(objects, 0, useFileSourceArray, 0, objects.length); useFileSourceArray[6] = useFileSourceArray[5]; useFileSourceArray[5] = "File Based"; useFileSourceArray[7] = false; result.add(useFileSourceArray); } return result; } }