Package com.github.sommeri.less4j.grammar

Source Code of com.github.sommeri.less4j.grammar.ExpressionGrammarTest

package com.github.sommeri.less4j.grammar;

import static com.github.sommeri.less4j.grammar.GrammarAsserts.assertChilds;
import static com.github.sommeri.less4j.grammar.GrammarAsserts.assertValidExpression;
import static org.junit.Assert.assertEquals;

import org.junit.Ignore;
import org.junit.Test;

import com.github.sommeri.less4j.core.parser.LessLexer;
import com.github.sommeri.less4j.core.parser.ANTLRParser;
import com.github.sommeri.less4j.core.parser.ANTLRParser.ParseResult;

/**
* Testing numbers and arithmetic expression parser.
*
* Note: strange things happen with EOF during unit tests, so I added a dummy
* space to the test expressions.
*
* Found something about EOF:
* http://www.antlr.org/pipermail/antlr-interest/2009-January/032219.html
*
*/
//the test is ignored. I will do pure css first and add other features later
@Ignore
public class ExpressionGrammarTest {

  @Test
  public void sequenceNumbersLong() {
    ANTLRParser compiler = new ANTLRParser();
    ParseResult result = compiler.parseExpression("12-34 56+7 8*90 ", null);
    assertValidExpression(result);
    assertChilds(result.getTree(), LessLexer.NUMBER, LessLexer.MINUS, LessLexer.NUMBER, LessLexer.EMPTY_SEPARATOR, LessLexer.NUMBER, LessLexer.PLUS, LessLexer.NUMBER, LessLexer.EMPTY_SEPARATOR, LessLexer.NUMBER, LessLexer.STAR, LessLexer.NUMBER);
  }

  @Test
  public void sequenceNumbersLongSpaces() {
    ANTLRParser compiler = new ANTLRParser();
    ParseResult result = compiler.parseExpression("12 - 34 56 + 7 8 * 90 ", null);
    assertValidExpression(result);
    assertChilds(result.getTree(), LessLexer.NUMBER, LessLexer.MINUS, LessLexer.NUMBER, LessLexer.EMPTY_SEPARATOR, LessLexer.NUMBER, LessLexer.PLUS, LessLexer.NUMBER, LessLexer.EMPTY_SEPARATOR, LessLexer.NUMBER, LessLexer.STAR, LessLexer.NUMBER);
  }

  @Test
  public void sequencePixels() {
    ANTLRParser compiler = new ANTLRParser();
    ParseResult result = compiler.parseExpression("12px 13px", null);
    assertValidExpression(result);
    assertChilds(result.getTree(), LessLexer.LENGTH, LessLexer.EMPTY_SEPARATOR, LessLexer.LENGTH);
  }

  @Test
  public void plusPixels() {
    ANTLRParser compiler = new ANTLRParser();
    ParseResult result = compiler.parseExpression("12px + 13px", null);
    assertValidExpression(result);
    assertChilds(result.getTree(), LessLexer.LENGTH, LessLexer.PLUS, LessLexer.LENGTH);
  }

  @Test
  public void plusPixelsShort() {
    ANTLRParser compiler = new ANTLRParser();
    ParseResult result = compiler.parseExpression("12px+13px", null);
    assertValidExpression(result);
    assertChilds(result.getTree(), LessLexer.LENGTH, LessLexer.PLUS, LessLexer.LENGTH);
  }

  @Test
  public void sequenceNumbers() {
    ANTLRParser compiler = new ANTLRParser();
    ParseResult result = compiler.parseExpression("1.2 13 ", null);
    assertValidExpression(result);
    assertChilds(result.getTree(), LessLexer.NUMBER, LessLexer.EMPTY_SEPARATOR, LessLexer.NUMBER);
  }

  @Test
  public void floating() {
    ANTLRParser compiler = new ANTLRParser();
    ParseResult result = compiler.parseExpression("1.2 ", null);

    assertValidExpression(result);
    assertEquals(1, result.getTree().getChildren().size());
    assertEquals(LessLexer.NUMBER, result.getTree().getChild(0).getType());
  }

  @Test
  public void integer() {
    ANTLRParser compiler = new ANTLRParser();
    ParseResult result = compiler.parseExpression("12 ", null);

    assertValidExpression(result);
    assertEquals(1, result.getTree().getChildren().size());
    assertEquals(LessLexer.NUMBER, result.getTree().getChild(0).getType());
  }

}
TOP

Related Classes of com.github.sommeri.less4j.grammar.ExpressionGrammarTest

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.