1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 22:10:05 +08:00
SpaceVim/bundle/jedi-vim/pythonx/jedi/test/completion/precedence.py
2022-10-23 15:41:52 +08:00

193 lines
2.7 KiB
Python
Vendored

"""
Test Jedi's operation understanding. Jedi should understand simple additions,
multiplications, etc.
"""
# -----------------
# numbers
# -----------------
x = [1, 'a', 1.0]
#? int() str() float()
x[12]
#? float()
x[1 + 1]
index = 0 + 1
#? str()
x[index]
#? int()
x[1 + (-1)]
def calculate(number):
return number + constant
constant = 1
#? float()
x[calculate(1)]
def calculate(number):
return number + constant
# -----------------
# strings
# -----------------
x = 'upp' + 'e'
#? str.upper
getattr(str, x + 'r')
a = "a"*3
#? str()
a
a = 3 * "a"
#? str()
a
a = 3 * "a"
#? str()
a
#? int()
(3 ** 3)
#? int()
(3 ** 'a')
#? int()
(3 + 'a')
#? bool()
(3 == 'a')
#? bool()
(3 >= 'a')
class X():
foo = 2
#? int()
(X.foo ** 3)
# -----------------
# assignments
# -----------------
x = [1, 'a', 1.0]
i = 0
i += 1
i += 1
#? float()
x[i]
i = 1
i += 1
i -= 3
i += 1
#? int()
x[i]
# -----------------
# in
# -----------------
if 'X' in 'Y':
a = 3
else:
a = ''
# For now don't really check for truth values. So in should return both
# results.
#? str() int()
a
if 'X' not in 'Y':
b = 3
else:
b = ''
# For now don't really check for truth values. So in should return both
# results.
#? str() int()
b
# -----------------
# for flow assignments
# -----------------
class FooBar(object):
fuu = 0.1
raboof = 'fourtytwo'
# targets should be working
target = ''
for char in ['f', 'u', 'u']:
target += char
#? float()
getattr(FooBar, target)
# github #24
target = u''
for char in reversed(['f', 'o', 'o', 'b', 'a', 'r']):
target += char
#? str()
getattr(FooBar, target)
# -----------------
# repetition problems -> could be very slow and memory expensive - shouldn't
# be.
# -----------------
b = [str(1)]
l = list
for x in [l(0), l(1), l(2), l(3), l(4), l(5), l(6), l(7), l(8), l(9), l(10),
l(11), l(12), l(13), l(14), l(15), l(16), l(17), l(18), l(19), l(20),
l(21), l(22), l(23), l(24), l(25), l(26), l(27), l(28), l(29)]:
b += x
#? str()
b[1]
# -----------------
# undefined names
# -----------------
a = foobarbaz + 'hello'
#? int() float()
{'hello': 1, 'bar': 1.0}[a]
# -----------------
# stubs
# -----------------
from datetime import datetime, timedelta
#?
(datetime - timedelta)
#? datetime()
(datetime() - timedelta())
#? timedelta()
(datetime() - datetime())
#? timedelta()
(timedelta() - datetime())
#? timedelta()
(timedelta() - timedelta())
# -----------------
# magic methods
# -----------------
class C:
def __sub__(self, other) -> int: ...
def __radd__(self, other) -> float: ...
#? int()
(C() - object())
#? C() object()
(object() - C())
#? C() object()
(C() + object())
#? float()
(object() + C())