Package com.github.sommeri.less4j.compiler

Source Code of com.github.sommeri.less4j.compiler.CustomLessFunctionsTest

package com.github.sommeri.less4j.compiler;

import java.io.File;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import org.junit.runners.Parameterized.Parameters;

import com.github.sommeri.less4j.AbstractFileBasedTest;
import com.github.sommeri.less4j.LessCompiler.Configuration;
import com.github.sommeri.less4j.LessFunction;
import com.github.sommeri.less4j.LessProblems;
import com.github.sommeri.less4j.core.ast.CssString;
import com.github.sommeri.less4j.core.ast.Expression;
import com.github.sommeri.less4j.core.ast.FunctionExpression;
import com.github.sommeri.less4j.core.ast.IdentifierExpression;

public class CustomLessFunctionsTest extends AbstractFileBasedTest {

  private static final String standardCases = "src/test/resources/compile-basic-features/customfunc/";

  public CustomLessFunctionsTest(File inputFile, File outputFile, File errorList, File mapdataFile, String testName) {
    super(inputFile, outputFile, errorList, mapdataFile, testName);
  }

  @Override
  protected Configuration createConfiguration(File cssOutput) {
    Configuration configuration = super.createConfiguration(cssOutput);
    configuration.addCustomFunction(new NoParametersTestFnc());
    configuration.addCustomFunctions(Arrays.asList(new MultipleParametersTestFnc(), new CauseWarningTestFnc()));
    return configuration;
  }

  @Parameters(name="Less: {4}")
  public static Collection<Object[]> allTestsParameters() {
    return createTestFileUtils().loadTestFiles(standardCases);
  }

}

class NoParametersTestFnc implements LessFunction {

  @Override
  public boolean canEvaluate(FunctionExpression input, List<Expression> parameters) {
    return input.getName().equals("worksWithNone") && parameters.isEmpty();
  }

  @Override
  public Expression evaluate(FunctionExpression input, List<Expression> parameters, Expression evaluatedParameter, LessProblems problems) {
    return new IdentifierExpression(input.getUnderlyingStructure(), "worked");
  }
 
}

class MultipleParametersTestFnc implements LessFunction {

  @Override
  public boolean canEvaluate(FunctionExpression input, List<Expression> parameters) {
    return input.getName().equals("worksWithMultiple");
  }

  @Override
  public Expression evaluate(FunctionExpression input, List<Expression> parameters, Expression evaluatedParameter, LessProblems problems) {
    return new CssString(input.getUnderlyingStructure(), "tr", "\"");
  }
 
}

class CauseWarningTestFnc implements LessFunction {

  @Override
  public boolean canEvaluate(FunctionExpression input, List<Expression> parameters) {
    return input.getName().equals("warning");
  }

  @Override
  public Expression evaluate(FunctionExpression input, List<Expression> parameters, Expression evaluatedParameter, LessProblems problems) {
    problems.addWarning(evaluatedParameter, "With custom error node.");
    problems.addWarning(null, "Null error node.");
    return new IdentifierExpression(input.getUnderlyingStructure(), "caused");
  }
 
}
TOP

Related Classes of com.github.sommeri.less4j.compiler.CustomLessFunctionsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.