/*******************************************************************************
* Copyright (c) 2012 Sierra Wireless and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Sierra Wireless - initial API and implementation
*******************************************************************************/
package org.eclipse.koneki.ldt.ui.tests.internal.rules;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.koneki.ldt.ui.internal.editor.text.LuaCodeScanner.LuaNumberRule;
import org.junit.Test;
public class LuaNumberRuleTest extends AbstractRuleTestCase {
private static final Token NUMBER_TOKEN = new Token("number"); //$NON-NLS-1$
@Test
public void testIntegers() {
assertTokenFound("0", 0, 1, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("10", 0, 2, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("-10", 1, 2, NUMBER_TOKEN); //$NON-NLS-1$
}
@Test
public void testDecimals() {
assertTokenFound("0.", 0, 2, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound(".1", 0, 2, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("0.0", 0, 3, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("local x = 3.4", 10, 3, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("local x=3.4", 8, 3, NUMBER_TOKEN); //$NON-NLS-1$
}
@Test
public void testHexadecimals() {
assertTokenFound("0x1", 0, 3, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("0xf", 0, 3, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("0x12", 0, 4, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("0xAA", 0, 4, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("0x", NUMBER_TOKEN); //$NON-NLS-1$
}
@Test
public void testNumbersInExpressions() {
assertTokenFound("local x = (10/3.4)", 11, 2, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("local x = (10/3.4)", 14, 3, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("local x = (10./3.4E10)", 11, 3, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("local x = (10./3.4E10)", 15, 6, NUMBER_TOKEN); //$NON-NLS-1$
}
@Test
public void testExponential() {
assertTokenFound("1e1", 0, 3, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("1E10", 0, 4, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("0.1e10", 0, 6, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("0.1E10", 0, 6, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound(".1E10", 0, 5, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound(".1e10", 0, 5, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("1.E10", 0, 5, NUMBER_TOKEN); //$NON-NLS-1$
assertTokenFound("1.e10", 0, 5, NUMBER_TOKEN); //$NON-NLS-1$
}
@Test
public void testNonNumbers() {
assertTokenNotFound("abc", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("e", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("E", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("ex", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound(".", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("..", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound(".x", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("abc.x", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("a.b", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("a.E", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("a.ex", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("a.x", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("os.exit()", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("table:send()", NUMBER_TOKEN); //$NON-NLS-1$
assertTokenNotFound("io.flush()", NUMBER_TOKEN); //$NON-NLS-1$
}
@Override
protected IRule createRule() {
return new LuaNumberRule(NUMBER_TOKEN);
}
}