blob: 15a57f561fe2057856d3af4ce13a42ec369a04c2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2012 BREDEX GmbH.
* 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:
* BREDEX GmbH - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.jubula.client.core.tests.parameter;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;
import java.util.Arrays;
import java.util.Collection;
import org.eclipse.jubula.client.core.gen.parser.parameter.lexer.LexerException;
import org.eclipse.jubula.client.core.gen.parser.parameter.node.Start;
import org.eclipse.jubula.client.core.gen.parser.parameter.parser.Parser;
import org.eclipse.jubula.client.core.gen.parser.parameter.parser.ParserException;
import org.eclipse.jubula.client.core.parser.parameter.JubulaParameterLexer;
import org.eclipse.jubula.client.core.utils.ParsedParameter;
import org.eclipse.jubula.client.core.utils.SemanticParsingException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class TestParameterInput {
private String m_inputString;
private boolean m_inputIsValid;
public TestParameterInput(String inputString, boolean inputIsValid) {
m_inputString = inputString;
m_inputIsValid = inputIsValid;
}
@SuppressWarnings("nls")
@Test
public void testParameterInput() throws IOException {
Parser parser = new Parser(new JubulaParameterLexer(new PushbackReader(
new StringReader(m_inputString))));
try {
Start ast = parser.parse();
ParsedParameter param =
new ParsedParameter(true, null, null);
ast.apply(param);
assertTrue(m_inputString + " succeeded unexpectedly.", m_inputIsValid); //$NON-NLS-1$
} catch (ParserException e) {
assertFalse(m_inputString + " failed unexpectedly.", m_inputIsValid); //$NON-NLS-1$
} catch (LexerException e) {
assertFalse(m_inputString + " failed unexpectedly.", m_inputIsValid); //$NON-NLS-1$
} catch (SemanticParsingException spe) {
assertFalse(m_inputString + " failed unexpectedly.", m_inputIsValid); //$NON-NLS-1$
}
}
/**
*
* @return the parameters for the tests, in the format:
* <table border="1"><tr><td>String: input</td>
* <td>boolean: inputIsValid</td></tr></table>
*
*/
@SuppressWarnings("nls")
@Parameters
public static Collection<Object[]> createInputStrings() {
return Arrays.asList(new Object[][] {
{"", true}, //$NON-NLS-1$
{"abc123", true}, //$NON-NLS-1$
{"=PARAMETER", true}, //$NON-NLS-1$
{"={PARAMETER}", true}, //$NON-NLS-1$
{"=1", true}, //$NON-NLS-1$
{"={1}", true}, //$NON-NLS-1$
{"?abc()", true}, //$NON-NLS-1$
{"?abc(arg)", true}, //$NON-NLS-1$
{"?abc(arg1, arg2)", true}, //$NON-NLS-1$
{"?abc(?abc(arg1, arg2), ={PARAM_ARG}, \\=prefix${VARIABLE_ARG}\\$\\?suffix)", true}, //$NON-NLS-1$
{"=", false}, // missing parameter name //$NON-NLS-1$
{"={}", false}, // missing parameter name //$NON-NLS-1$
{"$", false}, // missing variable name //$NON-NLS-1$
{"${}", false}, // missing variable name //$NON-NLS-1$
{"'", false}, // missing closing single quote //$NON-NLS-1$
{"?", false}, // missing function body //$NON-NLS-1$
{"?(", false}, // missing closing parentheses //$NON-NLS-1$
{"?)", false}, // missing opening parentheses //$NON-NLS-1$
{"?()", false}, // missing function name //$NON-NLS-1$
{"?a", false}, // missing function argument list //$NON-NLS-1$
{"?=", false}, // invalid (parameter symbol) after function symbol //$NON-NLS-1$
{"??", false}, // invalid (function symbol) after function symbol //$NON-NLS-1$
{"?$", false}, // invalid (variable symbol) after function symbol //$NON-NLS-1$
{"?''", false}, // invalid (single quote) after function symbol //$NON-NLS-1$
{"?abc(?abc(arg1, arg2))", true}, //$NON-NLS-1$
{"?abc(?abc(arg1, arg2), ={PARAM_ARG}, prefix${VARIABLE_ARG}suffix)", true}, //$NON-NLS-1$
});
}
}