package org.elixir_lang.elixir_flex_lexer;
import com.intellij.psi.tree.IElementType;
import org.elixir_lang.ElixirFlexLexer;
import org.elixir_lang.psi.ElixirTypes;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
/**
* Created by luke.imhoff on 11/28/14.
*/
@RunWith(Parameterized.class)
public class BaseIntegerBaseTest extends TokenTest {
/*
* Constructors
*/
public BaseIntegerBaseTest(CharSequence charSequence, IElementType tokenType, int lexicalState) {
super(charSequence, tokenType, lexicalState);
}
/*
* Methods
*/
@Override
protected void reset(CharSequence charSequence) throws IOException {
// start to trigger BASE_WHOLE_NUMBER_BASE state
CharSequence fullCharSequence = "0" + charSequence;
super.reset(fullCharSequence);
// consume '0'
flexLexer.advance();
}
@Parameterized.Parameters(
name = "\"{0}\" parses as {1} token and advances to state {2}"
)
public static Collection<Object[]> generateData() {
return Arrays.asList(new Object[][]{
{ "A", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "B", ElixirTypes.OBSOLETE_BINARY_WHOLE_NUMBER_BASE, ElixirFlexLexer.BINARY_WHOLE_NUMBER },
{ "C", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "D", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "E", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "F", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "G", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "H", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "I", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "J", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "K", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "L", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "M", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "N", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "O", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "P", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "Q", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "R", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "S", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "T", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "U", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "V", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "W", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "X", ElixirTypes.OBSOLETE_HEXADECIMAL_WHOLE_NUMBER_BASE, ElixirFlexLexer.HEXADECIMAL_WHOLE_NUMBER },
{ "Y", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "Z", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "a", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "b", ElixirTypes.BINARY_WHOLE_NUMBER_BASE, ElixirFlexLexer.BINARY_WHOLE_NUMBER },
{ "c", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "d", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "e", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "f", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "g", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "h", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "i", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "j", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "k", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "l", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "m", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "n", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "o", ElixirTypes.OCTAL_WHOLE_NUMBER_BASE, ElixirFlexLexer.OCTAL_WHOLE_NUMBER },
{ "p", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "q", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "r", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "s", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "t", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "u", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "v", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "w", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "x", ElixirTypes.HEXADECIMAL_WHOLE_NUMBER_BASE, ElixirFlexLexer.HEXADECIMAL_WHOLE_NUMBER },
{ "y", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER },
{ "z", ElixirTypes.UNKNOWN_WHOLE_NUMBER_BASE, ElixirFlexLexer.UNKNOWN_BASE_WHOLE_NUMBER }
});
}
}