/**
* Copyright (c) 2016 by Brainwy Software Ltda. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.parser;
import java.io.File;
import org.python.pydev.core.IPythonNature;
import org.python.pydev.core.TestDependent;
import org.python.pydev.parser.grammar36.PythonGrammar36;
import org.python.pydev.parser.jython.FastCharStream;
import org.python.pydev.parser.jython.ParseException;
import org.python.pydev.parser.jython.ast.Expr;
import org.python.pydev.shared_core.io.FileUtils;
public class PyParser36Test extends PyParserTestBase {
public static void main(String[] args) {
try {
PyParser36Test test = new PyParser36Test();
test.setUp();
test.testCommaAfterKwArgs1();
test.tearDown();
System.out.println("Finished");
junit.textui.TestRunner.run(PyParser36Test.class);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void setUp() throws Exception {
super.setUp();
setDefaultVersion(IPythonNature.GRAMMAR_PYTHON_VERSION_3_6);
}
public void testCommaAfterKwArgs() {
String s = "" +
"def foo(**kwargs):\n" +
" pass\n" +
"";
parseLegalDocStr(s);
}
public void testCommaAfterKwArgs1() {
String s = "" +
"x=lambda a,**kwargs,:None" +
"";
parseLegalDocStr(s);
}
public void testAnnotatedVar() {
String s = "" +
"x: int = 10" +
"";
parseLegalDocStr(s);
}
public void testTestGrammar36() {
String contents = FileUtils.getFileContents(new File(TestDependent.TEST_PYDEV_PARSER_PLUGIN_LOC +
"/tests/org/python/pydev/parser/python_test_grammar_36.py"));
parseLegalDocStr(contents);
parseLegalDocStrWithoutTree(contents);
}
public void testAsyncComprehension() {
String s = "" +
"async def f():\n" +
" [i async for b in c]" +
"";
parseLegalDocStr(s);
}
public void testIntSeparators() {
String s = "" +
"a = 1_000_000\n" +
"b = 0x00_ff_aa\n" +
"c = 0b001_0010_1111\n" +
"d = 0o00_44_55\n" +
"f = 1_34_3.45_45\n" +
"f = 1_34_3.45_45e12_23\n" +
"";
parseLegalDocStr(s);
}
public void testFString() {
String s = "" +
"a = f'some{string}'\n" +
"";
parseLegalDocStr(s);
}
public void testEvalInput() throws ParseException {
String s = "" +
"call(20, 20), 20\n" +
"";
FastCharStream in = new FastCharStream(s.toCharArray());
PythonGrammar36 grammar = new PythonGrammar36(true, in);
Expr eval_input = grammar.eval_input();
assertEquals(
"Expr[value=Tuple[elts=[Call[func=Name[id=call, ctx=Load, reserved=false], args=[Num[n=20, type=Int, num=20], Num[n=20, type=Int, num=20]], keywords=[], starargs=null, kwargs=null], Num[n=20, type=Int, num=20]], ctx=Load, endsWithComma=false]]",
eval_input.toString());
}
public void testAsync() {
String s = "" +
"async def test2(session):\n" +
" async with session:\n" +
" async for _msg in session:\n" +
" pass\n" +
"\n" +
" # broken grammar\n" +
" await session\n" +
"";
parseLegalDocStr(s);
}
}