Package org.jboss.ide.eclipse.freemarker.lang.test

Source Code of org.jboss.ide.eclipse.freemarker.lang.test.ParserUtilsTest

/*
* JBoss by Red Hat
* Copyright 2006-2009, Red Hat Middleware, LLC, and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.ide.eclipse.freemarker.lang.test;

import org.jboss.ide.eclipse.freemarker.lang.ParserUtils;
import org.jboss.ide.eclipse.freemarker.lang.ParserUtils.ParseException;

import junit.framework.TestCase;

public class ParserUtilsTest extends TestCase {

  public void testIsBetween() {
    assertEquals(true, ParserUtils.isBetween('0', '0', '9'));
    assertEquals(true, ParserUtils.isBetween('9', '0', '9'));
    assertEquals(true, ParserUtils.isBetween('5', '0', '9'));
    assertEquals(false, ParserUtils.isBetween('/', '0', '9'));
    assertEquals(false, ParserUtils.isBetween(':', '0', '9'));
  }

  public void testIsDigit() {
    assertEquals(true, ParserUtils.isDigit('0'));
    assertEquals(true, ParserUtils.isDigit('9'));
    assertEquals(false, ParserUtils.isDigit('a'));
  }

  public void testIsLetter() {
    assertEquals(true, ParserUtils.isLetter('a'));
    assertEquals(true, ParserUtils.isLetter('A'));
    assertEquals(false, ParserUtils.isLetter('9'));
  }

  public void testConsumeIdentifier() throws ParseException {
    ParserUtils parser = new ParserUtils("var='val'"); //$NON-NLS-1$
    assertEquals(3, parser.consumeIdentifier());
    assertEquals("var", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("var ='val'"); //$NON-NLS-1$
    assertEquals(3, parser.consumeIdentifier());
    assertEquals("var", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("v ='val'"); //$NON-NLS-1$
    assertEquals(1, parser.consumeIdentifier());
    assertEquals("v", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("v0 ='val'"); //$NON-NLS-1$
    assertEquals(2, parser.consumeIdentifier());
    assertEquals("v0", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("v0"); //$NON-NLS-1$
    assertEquals(2, parser.consumeIdentifier());
    assertEquals("v0", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils(""); //$NON-NLS-1$
    try {
      parser.consumeIdentifier();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils("0 ='val'"); //$NON-NLS-1$
    try {
      parser.consumeIdentifier();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils(" var ='val'"); //$NON-NLS-1$
    try {
      parser.consumeIdentifier();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }
  }

  public void testConsumeStringLiteral() throws ParseException {
    ParserUtils parser = new ParserUtils("'val'"); //$NON-NLS-1$
    assertEquals(5, parser.consumeStringLiteral());
    assertEquals("'val'", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("'val' "); //$NON-NLS-1$
    assertEquals(5, parser.consumeStringLiteral());
    assertEquals("'val'", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("'val'>"); //$NON-NLS-1$
    assertEquals(5, parser.consumeStringLiteral());
    assertEquals("'val'", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("''"); //$NON-NLS-1$
    assertEquals(2, parser.consumeStringLiteral());
    assertEquals("''", parser.getLastToken()); //$NON-NLS-1$

    /* newline and other chars */
    parser = new ParserUtils("'\n\t\r'"); //$NON-NLS-1$
    assertEquals(5, parser.consumeStringLiteral());
    assertEquals("'\n\t\r'", parser.getLastToken()); //$NON-NLS-1$

    /* quot in apos */
    parser = new ParserUtils("'\"'"); //$NON-NLS-1$
    assertEquals(3, parser.consumeStringLiteral());
    assertEquals("'\"'", parser.getLastToken()); //$NON-NLS-1$

    /* apos in apos */
    parser = new ParserUtils("'\\''"); //$NON-NLS-1$
    assertEquals(4, parser.consumeStringLiteral());
    assertEquals("'\\''", parser.getLastToken()); //$NON-NLS-1$

    /* simple escapes */
    parser = new ParserUtils("'\\n\\t\\r\\\\'"); //$NON-NLS-1$
    assertEquals(10, parser.consumeStringLiteral());
    assertEquals("'\\n\\t\\r\\\\'", parser.getLastToken()); //$NON-NLS-1$

    /* hex escapes */
    parser = new ParserUtils("'\\x00ab\\xab\\xff\\xAB\\xFF'"); //$NON-NLS-1$
    assertEquals(24, parser.consumeStringLiteral());
    assertEquals("'\\x00ab\\xab\\xff\\xAB\\xFF'", parser.getLastToken()); //$NON-NLS-1$

    /* with double quotes */
    parser = new ParserUtils("\"val\""); //$NON-NLS-1$
    assertEquals(5, parser.consumeStringLiteral());
    assertEquals("\"val\"", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("\"\""); //$NON-NLS-1$
    assertEquals(2, parser.consumeStringLiteral());
    assertEquals("\"\"", parser.getLastToken()); //$NON-NLS-1$

    /* quot in quot */
    parser = new ParserUtils("\"\\\"\""); //$NON-NLS-1$
    assertEquals(4, parser.consumeStringLiteral());
    assertEquals("\"\\\"\"", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("val"); //$NON-NLS-1$
    try {
      parser.consumeStringLiteral();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils(""); //$NON-NLS-1$
    try {
      parser.consumeStringLiteral();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    /* unfinished apos */
    parser = new ParserUtils("'"); //$NON-NLS-1$
    try {
      parser.consumeStringLiteral();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    /* unfinished quot */
    parser = new ParserUtils("\""); //$NON-NLS-1$
    try {
      parser.consumeStringLiteral();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }
  }

  public void testConsumeRawString() throws ParseException {
    ParserUtils parser = new ParserUtils("r'val'"); //$NON-NLS-1$
    assertEquals(6, parser.consumeRawString());
    assertEquals("r'val'", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("r''"); //$NON-NLS-1$
    assertEquals(3, parser.consumeRawString());
    assertEquals("r''", parser.getLastToken()); //$NON-NLS-1$

    /* escaping apos does not work in the same way as in string literal */
    parser = new ParserUtils("r' \\' '"); //$NON-NLS-1$
    assertEquals(5, parser.consumeRawString());
    assertEquals("r' \\'", parser.getLastToken()); //$NON-NLS-1$

    /* escaping quot does not work in the same way as in string literal */
    parser = new ParserUtils("r\" \\\" \""); //$NON-NLS-1$
    assertEquals(5, parser.consumeRawString());
    assertEquals("r\" \\\"", parser.getLastToken()); //$NON-NLS-1$


    parser = new ParserUtils(""); //$NON-NLS-1$
    try {
      parser.consumeRawString();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils("r"); //$NON-NLS-1$
    try {
      parser.consumeRawString();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    /* unfinished apos */
    parser = new ParserUtils("r'"); //$NON-NLS-1$
    try {
      parser.consumeRawString();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    /* unfinished quot */
    parser = new ParserUtils("r\""); //$NON-NLS-1$
    try {
      parser.consumeRawString();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }
  }

  public void testConsumeIdentifierOrStringLiteral() throws ParseException {
    ParserUtils parser = new ParserUtils("'val'"); //$NON-NLS-1$
    assertEquals(5, parser.consumeIdentifierOrStringLiteral());
    assertEquals("'val'", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("'val val'"); //$NON-NLS-1$
    assertEquals(9, parser.consumeIdentifierOrStringLiteral());
    assertEquals("'val val'", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("''"); //$NON-NLS-1$
    assertEquals(2, parser.consumeIdentifierOrStringLiteral());
    assertEquals("''", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("var"); //$NON-NLS-1$
    assertEquals(3, parser.consumeIdentifierOrStringLiteral());
    assertEquals("var", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils(""); //$NON-NLS-1$
    try {
      parser.consumeIdentifierOrStringLiteral();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils("123"); //$NON-NLS-1$
    try {
      parser.consumeIdentifierOrStringLiteral();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils(" "); //$NON-NLS-1$
    try {
      parser.consumeIdentifierOrStringLiteral();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

  }

  public void testConsumeEscapedChar() throws ParseException {
    ParserUtils parser = new ParserUtils("\\n"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\r"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\t"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\r"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\f"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\b"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\l"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\a"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\\\"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\'"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\\""); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\$"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\{"); //$NON-NLS-1$
    assertEquals(2, parser.consumeEscapedChar());

    parser = new ParserUtils("\\x0"); //$NON-NLS-1$
    assertEquals(3, parser.consumeEscapedChar());

    parser = new ParserUtils("\\xa"); //$NON-NLS-1$
    assertEquals(3, parser.consumeEscapedChar());

    parser = new ParserUtils("\\xA"); //$NON-NLS-1$
    assertEquals(3, parser.consumeEscapedChar());

    parser = new ParserUtils("\\xf"); //$NON-NLS-1$
    assertEquals(3, parser.consumeEscapedChar());

    parser = new ParserUtils("\\xF"); //$NON-NLS-1$
    assertEquals(3, parser.consumeEscapedChar());

    parser = new ParserUtils(""); //$NON-NLS-1$
    try {
      parser.consumeEscapedChar();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils("123"); //$NON-NLS-1$
    try {
      parser.consumeEscapedChar();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils(" "); //$NON-NLS-1$
    try {
      parser.consumeEscapedChar();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils("\\"); //$NON-NLS-1$
    try {
      parser.consumeEscapedChar();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils("\\ "); //$NON-NLS-1$
    try {
      parser.consumeEscapedChar();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils("\\x"); //$NON-NLS-1$
    try {
      parser.consumeEscapedChar();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

    parser = new ParserUtils("\\x "); //$NON-NLS-1$
    try {
      parser.consumeEscapedChar();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

  }

  public void testConsumeWhiteSpace() {
    ParserUtils parser = new ParserUtils(" \t\n\r"); //$NON-NLS-1$
    assertEquals(4, parser.consumeWhiteSpace());
    assertEquals(" \t\n\r", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils(""); //$NON-NLS-1$
    assertEquals(0, parser.consumeWhiteSpace());
    assertEquals("", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("x"); //$NON-NLS-1$
    assertEquals(0, parser.consumeWhiteSpace());
    assertEquals("", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils(" x"); //$NON-NLS-1$
    assertEquals(1, parser.consumeWhiteSpace());
    assertEquals(" ", parser.getLastToken()); //$NON-NLS-1$

  }

  public void testIsAtEndOfInput() {
    ParserUtils parser = new ParserUtils(" \t\n\r"); //$NON-NLS-1$
    assertEquals(false, parser.isAtEndOfInput());

    parser = new ParserUtils("x"); //$NON-NLS-1$
    assertEquals(false, parser.isAtEndOfInput());

    parser = new ParserUtils(""); //$NON-NLS-1$
    assertEquals(true, parser.isAtEndOfInput());
  }

  public void testMatch() throws ParseException {
    ParserUtils parser = new ParserUtils("assign"); //$NON-NLS-1$
    assertEquals(6, parser.match("assign")); //$NON-NLS-1$
    assertEquals("assign", parser.getLastToken()); //$NON-NLS-1$

    parser = new ParserUtils("\\x "); //$NON-NLS-1$
    try {
      parser.consumeEscapedChar();
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }
  }

  public void testMatches() throws ParseException {
    ParserUtils parser = new ParserUtils("assign"); //$NON-NLS-1$
    assertEquals(true, parser.matches('a', true));

    parser = new ParserUtils("assign"); //$NON-NLS-1$
    assertEquals(false, parser.matches('b', true));

    parser = new ParserUtils(""); //$NON-NLS-1$
    try {
      parser.matches('a', true);
      fail("ParseException expected"); //$NON-NLS-1$
    } catch (ParseException expected) {
    }

  }


}
TOP

Related Classes of org.jboss.ide.eclipse.freemarker.lang.test.ParserUtilsTest

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.